<?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>175454</bug_id>
          
          <creation_ts>2017-08-10 15:58:57 -0700</creation_ts>
          <short_desc>Redesign how we do for-of iteration for JSArrays</short_desc>
          <delta_ts>2020-05-07 11:08:07 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210718</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210721</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=211095</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>210023</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jmason</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1337656</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-10 15:58:57 -0700</bug_when>
    <thetext>Currently, we allocate the iteration object most of the time. Even though we object allocation sink it in the FTL, we could do better everywhere else. My idea is to exploit the fact that the iterator is not semantically visible other than the call to the next function. As long as the next function does not change on each of the iterator prototypes, we should not need to materialize the iterator object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337750</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-08-10 17:34:56 -0700</bug_when>
    <thetext>We do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337753</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-10 17:37:35 -0700</bug_when>
    <thetext>We do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337783</commentid>
    <comment_count>3</comment_count>
      <attachid>317898</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-10 19:02:11 -0700</bug_when>
    <thetext>Created attachment 317898
WIP works in LLInt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337786</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-10 19:07:13 -0700</bug_when>
    <thetext>Looks like this weaksauce implementation is already about 5x faster (in the llint) on:

let array = new Array(10000);                                                                                                                                                
array.fill(1);                                                                                                                                                               
                                                                                                                                                                             
let start = preciseTime();                                                                                                                                                   
for (let run = 0; run &lt; 10000; run++) {                                                                                                                                      
    for (let i of array) { }                                                                                                                                                 
}                                                                                                                                                                            
let end = preciseTime();                                                                                                                                                     
                                                                                                                                                                             
print(end - start);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641685</commentid>
    <comment_count>5</comment_count>
      <attachid>396501</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-14 22:53:38 -0700</bug_when>
    <thetext>Created attachment 396501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641689</commentid>
    <comment_count>6</comment_count>
      <attachid>396503</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-14 23:06:44 -0700</bug_when>
    <thetext>Created attachment 396503
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641696</commentid>
    <comment_count>7</comment_count>
      <attachid>396507</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-14 23:42:51 -0700</bug_when>
    <thetext>Created attachment 396507
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641702</commentid>
    <comment_count>8</comment_count>
      <attachid>396509</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 00:30:38 -0700</bug_when>
    <thetext>Created attachment 396509
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641703</commentid>
    <comment_count>9</comment_count>
      <attachid>396510</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 00:34:36 -0700</bug_when>
    <thetext>Created attachment 396510
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641708</commentid>
    <comment_count>10</comment_count>
      <attachid>396511</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 00:53:22 -0700</bug_when>
    <thetext>Created attachment 396511
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641792</commentid>
    <comment_count>11</comment_count>
      <attachid>396534</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 07:56:37 -0700</bug_when>
    <thetext>Created attachment 396534
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641822</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-15 09:07:06 -0700</bug_when>
    <thetext>The title is very generic. Can you make it a little more JSC-specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641896</commentid>
    <comment_count>13</comment_count>
      <attachid>396555</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 11:41:04 -0700</bug_when>
    <thetext>Created attachment 396555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641909</commentid>
    <comment_count>14</comment_count>
      <attachid>396557</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 12:17:58 -0700</bug_when>
    <thetext>Created attachment 396557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641910</commentid>
    <comment_count>15</comment_count>
      <attachid>396558</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 12:26:21 -0700</bug_when>
    <thetext>Created attachment 396558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641926</commentid>
    <comment_count>16</comment_count>
      <attachid>396562</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 12:58:42 -0700</bug_when>
    <thetext>Created attachment 396562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642015</commentid>
    <comment_count>17</comment_count>
      <attachid>396562</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-15 15:51:13 -0700</bug_when>
    <thetext>Comment on attachment 396562
Patch

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

will continue to review in a few minutes

&gt; Source/JavaScriptCore/ChangeLog:45
&gt; +        The trickiest part of this patch was getting the hand rolled DFG
&gt; +        IR to work correctly. This is because we don&apos;t have a great way to
&gt; +        express large chucks of DFG graph that doesn&apos;t involve manually
&gt; +        tracking all the DFG&apos;s invariants. Such as, Flushing/Phantoming
&gt; +        values at the end of each block.

enumerate some of the other challenges?

&gt; Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:44
&gt; +OTHER_CFLAGS = $(inherited) -fno-slp-vectorize --system-header-prefix=unicode/;
&gt; +OTHER_CPLUSPLUSFLAGS = $(inherited) -fno-slp-vectorize --system-header-prefix=unicode/;

this shouldn&apos;t be part of this change

&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:41
&gt; +
&gt; +    // Insert per metadata overrides here when we need them.
&gt; +    return nullptr;

this is really weird

&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:60
&gt; +    UNUSED_PARAM(checkpointIndex);

lol. A downside of &quot;if constexpr&quot; I suppose

&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:67
&gt; +

nit: remove newline

&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:93
&gt; +Operand destinationFor(const Bytecode&amp; bytecode, unsigned checkpointIndex, JITType type = JITType::None)

feels like a weird use of JITType. (E.g, HostCallThunk, None)

&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:108
&gt; +            return bytecode.m_value; // We reuse value as a temp because its either not used in subsequent bytecodes or written as the temp object is killed.

its =&gt; it&apos;s

I don&apos;t understand the second half of this sentence: &quot;written as the temp object is killed.&quot;

&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:132
&gt; +    if constexpr (Bytecode::opcodeID == op_iterator_open) {
&gt; +        ASSERT(checkpointIndex == OpIteratorOpen::symbolCall);
&gt; +        return bytecode.m_symbolIterator;
&gt; +    } else if constexpr (Bytecode::opcodeID == op_iterator_next) {
&gt; +        ASSERT(checkpointIndex == OpIteratorNext::computeNext);
&gt; +        return bytecode.m_next;
&gt; +    } else
&gt; +        return bytecode.m_callee;

for this entire file, I think webkit style would say this should be:

if constexpr(...) return...
if constexpr(...) return...
return...

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:101
&gt; +

revert

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1268
&gt; +        m_metadata-&gt;forEach&lt;OpIteratorOpen&gt;([&amp;] (auto&amp; metadata) {
&gt; +            if (metadata.m_modeMetadata.mode != GetByIdMode::Default)
&gt; +                return;
&gt; +            StructureID oldStructureID = metadata.m_modeMetadata.defaultMode.structureID;
&gt; +            if (!oldStructureID || vm.heap.isMarked(vm.heap.structureIDTable().get(oldStructureID)))
&gt; +                return;
&gt; +            if (Options::verboseOSR())
&gt; +                dataLogF(&quot;Clearing iterator open LLInt property access.\n&quot;);
&gt; +            LLIntPrototypeLoadAdaptiveStructureWatchpoint::clearLLIntGetByIdCache(metadata.m_modeMetadata);
&gt; +        });
&gt; +
&gt; +
&gt; +        m_metadata-&gt;forEach&lt;OpIteratorNext&gt;([&amp;] (auto&amp; metadata) {
&gt; +            auto clearIfNeeded = [&amp;] (GetByIdModeMetadata&amp; modeMetadata) {
&gt; +                if (modeMetadata.mode != GetByIdMode::Default)
&gt; +                    return;
&gt; +                StructureID oldStructureID = modeMetadata.defaultMode.structureID;
&gt; +                if (!oldStructureID || vm.heap.isMarked(vm.heap.structureIDTable().get(oldStructureID)))
&gt; +                    return;
&gt; +                dataLogLnIf(Options::verboseOSR(), &quot;Clearing iterator next LLInt property access.\n&quot;);
&gt; +                LLIntPrototypeLoadAdaptiveStructureWatchpoint::clearLLIntGetByIdCache(modeMetadata);
&gt; +            };
&gt; +
&gt; +            clearIfNeeded(metadata.m_doneModeMetadata);
&gt; +            clearIfNeeded(metadata.m_valueModeMetadata);
&gt; +        });

it seem like there is a lot of room to share code here and with the below OpGetById.

Cant you just pass in GetByIdModeMetadata&amp; to some helper lambda?

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1385
&gt; +                // FIXME: We don&apos;t really want to clear both caches here but it&apos;s kinda annoying to figure out which one this is referring to...

could the watchpoint hold a pointer? Or a checkpoint index?

&gt; Source/JavaScriptCore/bytecode/CodeBlockInlines.h:42
&gt; +        m_metadata-&gt;forEach&lt;__op&gt;([&amp;] (auto&amp; metadata) { func(metadata.m_profile, false); });

revert

&gt; Source/JavaScriptCore/bytecode/CodeBlockInlines.h:58
&gt; +        m_metadata-&gt;forEach&lt;OpIteratorOpen&gt;([&amp;] (auto&amp; metadata) { 
&gt; +            func(metadata.m_iterableProfile, false);
&gt; +            func(metadata.m_iteratorProfile, false);
&gt; +            func(metadata.m_nextProfile, false);
&gt; +        });
&gt; +
&gt; +        m_metadata-&gt;forEach&lt;OpIteratorNext&gt;([&amp;] (auto&amp; metadata) {
&gt; +            func(metadata.m_nextResultProfile, false);
&gt; +            func(metadata.m_doneProfile, false);
&gt; +            func(metadata.m_valueProfile, false);
&gt; +        });

I wish we gave true and false names in this forEachValueProfile function

&gt; Source/JavaScriptCore/bytecode/GetByStatus.cpp:110
&gt; +        } else {
&gt; +            if (metadata.m_valueModeMetadata.mode != GetByIdMode::Default)

nit: assert checkpoint index?

&gt; Source/JavaScriptCore/bytecode/IterationModeMetadata.h:41
&gt; +    uint8_t seenModes { 0 };
&gt; +    static_assert(sizeof(decltype(seenModes)) == sizeof(IterationMode));

why not just use IterationMode?

&gt; Source/JavaScriptCore/bytecode/SpeculatedType.h:123
&gt; +inline bool isSubtypeSpeculation(SpeculatedType value, SpeculatedType category)

maybe not for this patch, but it might be worth writing the other things as a call to this

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4573
&gt;  

what AST pattern is this?
[a,b] = &lt;expr&gt;?

Is it doing the old thing?

&gt; Source/JavaScriptCore/runtime/OptionsList.h:122
&gt; +    v(Bool, useIterationIntrinsics, true, Normal, nullptr) \

explanation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642073</commentid>
    <comment_count>18</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-04-15 17:49:51 -0700</bug_when>
    <thetext>With regards to the build breakage on Windows where you&apos;re seeing the headers from JSCBuiltins.h not being copied this seems like it stems from https://bugs.webkit.org/show_bug.cgi?id=207119 which added a custom target JSCBuiltins. This isn&apos;t a dependency of JavaScriptCore_CopyPrivateHeaders so that explains why its not working.

Will take a look at it for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642114</commentid>
    <comment_count>19</comment_count>
      <attachid>396562</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 19:57:47 -0700</bug_when>
    <thetext>Comment on attachment 396562
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:45
&gt;&gt; +        values at the end of each block.
&gt; 
&gt; enumerate some of the other challenges?

Sure.

&gt;&gt; Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:44
&gt;&gt; +OTHER_CPLUSPLUSFLAGS = $(inherited) -fno-slp-vectorize --system-header-prefix=unicode/;
&gt; 
&gt; this shouldn&apos;t be part of this change

I moved it out.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:41
&gt;&gt; +    return nullptr;
&gt; 
&gt; this is really weird

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:93
&gt;&gt; +Operand destinationFor(const Bytecode&amp; bytecode, unsigned checkpointIndex, JITType type = JITType::None)
&gt; 
&gt; feels like a weird use of JITType. (E.g, HostCallThunk, None)

I didn&apos;t have a better thing to use. I&apos;m open to suggestions though.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:108
&gt;&gt; +            return bytecode.m_value; // We reuse value as a temp because its either not used in subsequent bytecodes or written as the temp object is killed.
&gt; 
&gt; its =&gt; it&apos;s
&gt; 
&gt; I don&apos;t understand the second half of this sentence: &quot;written as the temp object is killed.&quot;

Uhh, I guess I was trying to say setting m_value is the last time we need the temp.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeProfileFor.h:132
&gt;&gt; +        return bytecode.m_callee;
&gt; 
&gt; for this entire file, I think webkit style would say this should be:
&gt; 
&gt; if constexpr(...) return...
&gt; if constexpr(...) return...
&gt; return...

That doesn&apos;t work because you need the else, at least for the last statement, otherwise you&apos;ll get a compile error.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1268
&gt;&gt; +        });
&gt; 
&gt; it seem like there is a lot of room to share code here and with the below OpGetById.
&gt; 
&gt; Cant you just pass in GetByIdModeMetadata&amp; to some helper lambda?

Good idea, I hoisted clearIfNeeded and split it among the cases.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1385
&gt;&gt; +                // FIXME: We don&apos;t really want to clear both caches here but it&apos;s kinda annoying to figure out which one this is referring to...
&gt; 
&gt; could the watchpoint hold a pointer? Or a checkpoint index?

Yeah, I just didn&apos;t think it was important enough to worry about here.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlockInlines.h:42
&gt;&gt; +        m_metadata-&gt;forEach&lt;__op&gt;([&amp;] (auto&amp; metadata) { func(metadata.m_profile, false); });
&gt; 
&gt; revert

This was intentional because that&apos;s the indentation of the if.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlockInlines.h:58
&gt;&gt; +        });
&gt; 
&gt; I wish we gave true and false names in this forEachValueProfile function

I&apos;ll file a bug.

&gt;&gt; Source/JavaScriptCore/bytecode/GetByStatus.cpp:110
&gt;&gt; +            if (metadata.m_valueModeMetadata.mode != GetByIdMode::Default)
&gt; 
&gt; nit: assert checkpoint index?

Sure.

&gt;&gt; Source/JavaScriptCore/bytecode/SpeculatedType.h:123
&gt;&gt; +inline bool isSubtypeSpeculation(SpeculatedType value, SpeculatedType category)
&gt; 
&gt; maybe not for this patch, but it might be worth writing the other things as a call to this

Sure, I just found this easier to understand when I was looking at the code. I&apos;ll do a more comprehensive refactor later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642121</commentid>
    <comment_count>20</comment_count>
      <attachid>396608</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 20:08:16 -0700</bug_when>
    <thetext>Created attachment 396608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642123</commentid>
    <comment_count>21</comment_count>
      <attachid>396609</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 20:13:07 -0700</bug_when>
    <thetext>Created attachment 396609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642126</commentid>
    <comment_count>22</comment_count>
      <attachid>396611</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 20:33:10 -0700</bug_when>
    <thetext>Created attachment 396611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642130</commentid>
    <comment_count>23</comment_count>
      <attachid>396613</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 21:06:00 -0700</bug_when>
    <thetext>Created attachment 396613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642281</commentid>
    <comment_count>24</comment_count>
      <attachid>396613</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-16 09:27:48 -0700</bug_when>
    <thetext>Comment on attachment 396613
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:74
&gt; +        * bytecode/BytecodeProfileFor.h: Added.
&gt; +        (JSC::arrayProfileForImpl):
&gt; +        (JSC::hasArrayProfileFor):
&gt; +        (JSC::arrayProfileFor):
&gt; +        (JSC::valueProfileForImpl):
&gt; +        (JSC::hasValueProfileFor):
&gt; +        (JSC::valueProfileFor):
&gt; +        (JSC::destinationFor):
&gt; +        (JSC::calleeFor):
&gt; +        (JSC::argumentCountIncludingThisFor):
&gt; +        (JSC::stackOffsetInRegistersForCall):
&gt; +        (JSC::callLinkInfoFor):

I&apos;m gonna rename this file BytecodeOperandsForCheckpoint.h. Open to other names though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642407</commentid>
    <comment_count>25</comment_count>
      <attachid>396690</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-16 12:54:04 -0700</bug_when>
    <thetext>Created attachment 396690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642413</commentid>
    <comment_count>26</comment_count>
      <attachid>396692</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-16 13:11:22 -0700</bug_when>
    <thetext>Created attachment 396692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642472</commentid>
    <comment_count>27</comment_count>
      <attachid>396692</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2020-04-16 15:58:21 -0700</bug_when>
    <thetext>Comment on attachment 396692
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:973
&gt; +    FrozenValue* bottomValueMatchingSpeculation(SpeculatedType spec)

I feel like this helper should be in Graph.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6750
&gt; +                    flushForTerminal();

You don&apos;t need this for branches unless they can go backward.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6836
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless this is a backward jump.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6854
&gt; +                flushForTerminal();

You don&apos;t have to do this unless this is a backward jump.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6913
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless one of the destinations is backwards.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6935
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless one of the destinations is backwards.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6965
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless the destination is backwards.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6989
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless the destination is backwards.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7019
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless one of the destinations is backwards.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7062
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless one of the destinations is backwards.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7085
&gt; +                    flushForTerminal();

You don&apos;t have to do this unless the destination is backwards.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7104
&gt; +                flushForTerminal();

You don&apos;t have to do this unless the destination is backwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642480</commentid>
    <comment_count>28</comment_count>
      <attachid>396692</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-16 16:06:20 -0700</bug_when>
    <thetext>Comment on attachment 396692
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:973
&gt;&gt; +    FrozenValue* bottomValueMatchingSpeculation(SpeculatedType spec)
&gt; 
&gt; I feel like this helper should be in Graph.

Fair enough, I&apos;ll move it.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6750
&gt;&gt; +                    flushForTerminal();
&gt; 
&gt; You don&apos;t need this for branches unless they can go backward.

Got it. We should have a comment on flushForTerminal that clarifies it&apos;s only needed for Back edges / returns / sideExit terminals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642532</commentid>
    <comment_count>29</comment_count>
      <attachid>396731</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-16 18:04:43 -0700</bug_when>
    <thetext>Created attachment 396731
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642544</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-16 19:26:57 -0700</bug_when>
    <thetext>Found 30 new test failures: imported/w3c/web-platform-tests/IndexedDB/idlharness.any.html, http/wpt/entries-api/interfaces.html, imported/w3c/web-platform-tests/domparsing/idlharness.window.html, imported/w3c/web-platform-tests/css/css-fonts/idlharness.html, imported/w3c/web-platform-tests/fetch/api/abort/cache.https.html, imported/w3c/web-platform-tests/css/cssom-view/idlharness.html, imported/w3c/web-platform-tests/css/geometry/interfaces.html, imported/w3c/web-platform-tests/WebCryptoAPI/idlharness.https.html, imported/w3c/web-platform-tests/hr-time/idlharness.html, imported/w3c/web-platform-tests/css/css-properties-values-api/idlharness.html, imported/w3c/web-platform-tests/encoding/idlharness.any.html, imported/w3c/web-platform-tests/IndexedDB/idlharness.any.worker.html, imported/w3c/web-platform-tests/css/geometry/interfaces.worker.html, imported/w3c/web-platform-tests/css/css-font-loading/idlharness.https.html, imported/w3c/web-platform-tests/credential-management/idlharness.https.window.html, imported/w3c/web-platform-tests/FileAPI/idlharness.worker.html, imported/w3c/web-platform-tests/dom/idlharness.window.html, imported/w3c/web-platform-tests/css/css-animations/idlharness.html, imported/w3c/web-platform-tests/fetch/api/idl.any.worker.html, imported/w3c/web-platform-tests/encoding/idlharness.any.worker.html, imported/w3c/web-platform-tests/css/css-fonts/font-display/font-display-feature-policy-reporting.tentative.html, imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/idlharness.window.html, http/wpt/credential-management/idl.https.html, http/tests/uri/curly-braces-escaping.html, imported/w3c/web-platform-tests/FileAPI/idlharness.html, http/wpt/fetch/response-opaque-clone.html, imported/w3c/web-platform-tests/dom/idlharness.any.worker.html, imported/w3c/web-platform-tests/WebIDL/interfaces.html, imported/w3c/web-platform-tests/css/css-transitions/idlharness.html, imported/w3c/web-platform-tests/fetch/api/idl.any.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642547</commentid>
    <comment_count>31</comment_count>
      <attachid>396731</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-16 19:38:15 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6681
&gt; +            unsigned numberOfRemainingModes = WTF::bitCount(seenModes);

this should be called &quot;numberOfSeenModes&quot;

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6706
&gt; +                    Node* knownIterFunction = addToGraph(CompareEqPtr, OpInfo(frozenSymbolIteratorFunction), symbolIterator);

nit: knownIterFunction =&gt; isKnownIterFunction&quot;

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6720
&gt; +                    flushForTerminal();

this shouldn&apos;t be needed based on what we talked about in Slack w/ Phil, right?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1678
&gt; +//    dataLogLn(&quot;Calling slow open_call&quot;);

oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642550</commentid>
    <comment_count>32</comment_count>
      <attachid>396731</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-16 19:43:25 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6717
&gt; +                    m_exitOK = true;
&gt; +                    addToGraph(ExitOK);

What clobbered exit state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642553</commentid>
    <comment_count>33</comment_count>
      <attachid>396731</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-16 19:57:01 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6717
&gt;&gt; +                    addToGraph(ExitOK);
&gt; 
&gt; What clobbered exit state?

ArithBitAnd clobbers exit state for some reason...

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6720
&gt;&gt; +                    flushForTerminal();
&gt; 
&gt; this shouldn&apos;t be needed based on what we talked about in Slack w/ Phil, right?

Yeah. you&apos;re right I think I missed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642555</commentid>
    <comment_count>34</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2020-04-16 20:33:35 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #33)
&gt; Comment on attachment 396731 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396731&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6717
&gt; &gt;&gt; +                    addToGraph(ExitOK);
&gt; &gt; 
&gt; &gt; What clobbered exit state?
&gt; 
&gt; ArithBitAnd clobbers exit state for some reason...

Because it could be effectful if not inferred you be effect free. 

I would assume it can’t have effects in this case. 

Or can it?

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6720
&gt; &gt;&gt; +                    flushForTerminal();
&gt; &gt; 
&gt; &gt; this shouldn&apos;t be needed based on what we talked about in Slack w/ Phil, right?
&gt; 
&gt; Yeah. you&apos;re right I think I missed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642556</commentid>
    <comment_count>35</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-16 20:35:56 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #34)
&gt; (In reply to Keith Miller from comment #33)
&gt; &gt; Comment on attachment 396731 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=396731&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6717
&gt; &gt; &gt;&gt; +                    addToGraph(ExitOK);
&gt; &gt; &gt; 
&gt; &gt; &gt; What clobbered exit state?
&gt; &gt; 
&gt; &gt; ArithBitAnd clobbers exit state for some reason...
&gt; 
&gt; Because it could be effectful if not inferred you be effect free. 
&gt; 
&gt; I would assume it can’t have effects in this case. 
&gt; 
&gt; Or can it?
&gt; 

In this case it&apos;s bit anding two JSBooleans. So it shouldn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642742</commentid>
    <comment_count>36</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-17 11:05:28 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #35)
&gt; (In reply to Filip Pizlo from comment #34)
&gt; &gt; (In reply to Keith Miller from comment #33)
&gt; &gt; &gt; Comment on attachment 396731 [details]
&gt; &gt; &gt; Patch for landing
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=396731&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6717
&gt; &gt; &gt; &gt;&gt; +                    addToGraph(ExitOK);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What clobbered exit state?
&gt; &gt; &gt; 
&gt; &gt; &gt; ArithBitAnd clobbers exit state for some reason...
&gt; &gt; 
&gt; &gt; Because it could be effectful if not inferred you be effect free. 
&gt; &gt; 
&gt; &gt; I would assume it can’t have effects in this case. 
&gt; &gt; 
&gt; &gt; Or can it?
&gt; &gt; 
&gt; 
&gt; In this case it&apos;s bit anding two JSBooleans. So it shouldn&apos;t.

In the spirit of the other explicit drops of ExitOK node, can you add a comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642743</commentid>
    <comment_count>37</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-17 11:06:10 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #36)
&gt; (In reply to Keith Miller from comment #35)
&gt; &gt; (In reply to Filip Pizlo from comment #34)
&gt; &gt; &gt; (In reply to Keith Miller from comment #33)
&gt; &gt; &gt; &gt; Comment on attachment 396731 [details]
&gt; &gt; &gt; &gt; Patch for landing
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=396731&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6717
&gt; &gt; &gt; &gt; &gt;&gt; +                    addToGraph(ExitOK);
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; What clobbered exit state?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ArithBitAnd clobbers exit state for some reason...
&gt; &gt; &gt; 
&gt; &gt; &gt; Because it could be effectful if not inferred you be effect free. 
&gt; &gt; &gt; 
&gt; &gt; &gt; I would assume it can’t have effects in this case. 
&gt; &gt; &gt; 
&gt; &gt; &gt; Or can it?
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; In this case it&apos;s bit anding two JSBooleans. So it shouldn&apos;t.
&gt; 
&gt; In the spirit of the other explicit drops of ExitOK node, can you add a
&gt; comment?

Also, if you provide UseKinds, I bet the clobbering of exit state goes away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642754</commentid>
    <comment_count>38</comment_count>
      <attachid>396731</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-17 11:48:54 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6715
&gt; +                    // We know the bit and cannot have effects so it&apos;s ok to exit here.

&quot;bit and&quot; =&gt; &quot;ArithBitAnd&quot;

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6735
&gt; +                set(bytecode.m_next, jsConstant(JSValue()));

nit: Might be worth a comment somewhere that empty for m_next means fast (if you don&apos;t already have such a comment)

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6737
&gt; +                // Do our set locals. We don&apos;t want to run our getByVal again so we move to the next bytecode.

what getByVal you talking about?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6740
&gt; +                addToGraph(ExitOK);

I don&apos;t think this is needed

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6767
&gt; +                addToGraph(Branch, OpInfo(branchData), addToGraph(IsObject, iterator));

feels like we should have a value profile for the call so this can be a speculation sometimes

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6823
&gt; +                flushForTerminal();

not needed

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6864
&gt; +                }

seems like you need an
```
else
    addToGraph(CheckIsEmpty, m_next)
```
here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642775</commentid>
    <comment_count>39</comment_count>
      <attachid>396731</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-17 12:38:56 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6867
&gt; +                addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(globalObject-&gt;arrayIteratorStructure())), iterator);

do we have a way of backing off on this? Or could one do an OSR exit loop here?

I&apos;m worried about the numberOfRemainingModes &gt; 1, and we do have the fast array iterator function, but just not this structure

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6895
&gt; +                    Node* isDone = addToGraph(CompareGreaterEq, index, length);

you probably can provide UseKinds here I&apos;m guessing

&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1546
&gt; +    if (speculationContains(prediction, SpecString | SpecSymbol))
&gt; +        return freeze(m_vm.smallStrings.emptyString());

can we make this handle symbol properly?

This will pessimize an array containing symbols.

&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1549
&gt; +    if (speculationContains(prediction, SpecCellOther | SpecObject))
&gt; +        return freeze(jsNull());

this feels like it falls really short. Some quick glancing at FixupPhase, and you could make a lot of inner loops slower. Some things I glanced at that I think might get worse:

```
StringObjectUse
StringOrStringObjectUse


RegExpExec
RegExpTest
StringReplace
StringReplaceRegExp
GetPrototypeOf
Spread
ToPropertyKey

any node that asks isFinalObjectSpeculation

(... and probably there is more)
```

I think we need to prove to ourselves that some of this indeed gets worse. And we need to have a strategy about what to do here.

&gt; Source/JavaScriptCore/dfg/DFGLazyJSValue.h:80
&gt; +    SpeculatedType speculatedType() const { return kind() == KnownValue ? SpecBytecodeTop : SpecString; }

can we do better? I know this isn&apos;t used for anything but strings right now, but if we start using it for more, SpecBytecodeTop will be a footgun

Or perhaps just assert for now?

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.h:162
&gt; +    unsigned m_dfgIRIndex;

delete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642859</commentid>
    <comment_count>40</comment_count>
      <attachid>396731</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-17 15:04:27 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

&gt; Source/JavaScriptCore/ChangeLog:23
&gt; +        `nextResult = next.@call(iterator); done = nextResult.done; value
&gt; +        = done ? undefined : nextResult.value`, where nextResult is a

nit: put the code on one line or somehow structured better. It&apos;s confusing as written now

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6700
&gt; +                if (numberOfRemainingModes == 1)

nit: It feels like the appropriate check here and elsewhere in this file is &quot; == FastArray&quot; so when we emit other cases later it&apos;s obvious what&apos;s going on.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6928
&gt; +                    addToGraph(ExitOK);

not needed

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6965
&gt; +                    m_currentBlock = genericBlock;
&gt; +                    clearCaches();

you do this a lot. I wonder if we should have a helper that sets m_currentBlock and calls clearCaches()

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7018
&gt; +                    // Set a value for m_value so we don&apos;t think

incomplete thought

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7025
&gt; +                    addToGraph(Branch, OpInfo(branchData), get(bytecode.m_done));

if we exit here do we do the right thing? Might be good for a test

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:2115
&gt; +    else
&gt; +        valueRegister = iteratorResultObject.get(globalObject, vm.propertyNames-&gt;value);

do we have tests for an exception here along OSR exit path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642860</commentid>
    <comment_count>41</comment_count>
      <attachid>396731</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-17 15:05:46 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

r=me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642877</commentid>
    <comment_count>42</comment_count>
      <attachid>396731</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-17 15:51:33 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

Do you have tests for using the array iterator with a non array |this|?

&gt; Source/JavaScriptCore/jit/JIT.cpp:264
&gt; +            dataLogLn(&quot;Baseline JIT emitting code for &quot;, m_bytecodeIndex, &quot; at offset &quot;, (long)debugOffset());

lol

&gt; Source/JavaScriptCore/jit/JIT.h:300
&gt; +        void checkpointReached();

why is this only called for iterators but not varargs calls?

&gt; Source/JavaScriptCore/jit/JITCall.cpp:396
&gt; +    auto* tryFastFunction = ([&amp;] () {
&gt; +        switch (instruction-&gt;width()) {
&gt; +        case Narrow: return iterator_open_try_fast_narrow;
&gt; +        case Wide16: return iterator_open_try_fast_wide16;
&gt; +        case Wide32: return iterator_open_try_fast_wide32;
&gt; +        default: RELEASE_ASSERT_NOT_REACHED();
&gt; +        }
&gt; +    })();

is it worth a FIXME to do this more generally?

Is it still a speedup?

You also do it below, so maybe factor it out into a tiny helper that takes instruction?

&gt; Source/JavaScriptCore/jit/JITInlines.h:110
&gt; +    uint32_t locationBits = CallSiteIndex(m_bytecodeIndex.offset()).bits();

Is the invariant we just never store checkpoint index into the call frame header?

&gt; Source/JavaScriptCore/jit/JITInlines.h:188
&gt; +inline void JIT::checkpointReached()

nit: maybe &quot;advanceToNextCheckpoint&quot; instead?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1689
&gt; +//    dataLogLn(&quot;Calling slow next_call&quot;);

oops

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:995
&gt; +        // FIXME: This only works for arrays from the same global object as ourselves but we should be able to support any pairing.

can you make a bug? Seems like a good thing to do

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:999
&gt; +        // We should be good to go.

&quot;should be&quot; =&gt; &quot;are&quot;

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1000
&gt; +        metadata.m_iterationMetadata.seenModes = metadata.m_iterationMetadata.seenModes | IterationMode::FastArray;

style nit: |= ?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1005
&gt; +        {
&gt; +            iterator = JSArrayIterator::create(vm, globalObject-&gt;arrayIteratorStructure(), iteratedObject, IterationKind::Values);
&gt; +        }

why is this in a block?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1016
&gt; +    metadata.m_iterationMetadata.seenModes = metadata.m_iterationMetadata.seenModes | IterationMode::Generic;

ditto |= ?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1056
&gt; +            bool done = index == -1 || index &gt;= array-&gt;length();

can we define &quot;-1&quot; as a constant somewhere since it&apos;s hard coded in a few places?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1061
&gt; +                ASSERT(index == static_cast&lt;unsigned&gt;(index));

we assert here, but do an overflow check in DFG. Seems like a bad inconsistency. We should decide if it&apos;s possible or not

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:250
&gt; +// SLOW_PATH_HIDDEN_DECL(iterator_open_try_fast);
&gt; +// SLOW_PATH_HIDDEN_DECL(iterator_next_try_fast);

?

&gt; Source/JavaScriptCore/runtime/JSCast.h:69
&gt; +    macro(JSArrayIterator, JSType::JSArrayIteratorType, JSType::JSArrayIteratorType) \

why this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643053</commentid>
    <comment_count>43</comment_count>
      <attachid>396731</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-18 14:23:32 -0700</bug_when>
    <thetext>Comment on attachment 396731
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6767
&gt;&gt; +                addToGraph(Branch, OpInfo(branchData), addToGraph(IsObject, iterator));
&gt; 
&gt; feels like we should have a value profile for the call so this can be a speculation sometimes

There is a value profile for iterator. It comes from the m_iteratorProfile that gets filled in the LLInt/Baseline.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6864
&gt;&gt; +                }
&gt; 
&gt; seems like you need an
&gt; ```
&gt; else
&gt;     addToGraph(CheckIsEmpty, m_next)
&gt; ```
&gt; here

We don&apos;t have a  CheckIsEmpty node only CheckNotEmpty. I&apos;m going to change CheckCell into CheckIsConstant that equivalent to JSValue::operator==().

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6867
&gt;&gt; +                addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(globalObject-&gt;arrayIteratorStructure())), iterator);
&gt; 
&gt; do we have a way of backing off on this? Or could one do an OSR exit loop here?
&gt; 
&gt; I&apos;m worried about the numberOfRemainingModes &gt; 1, and we do have the fast array iterator function, but just not this structure

We currently only support this when our global object is the same as the symbolIterator of the object entering the loop. It&apos;s mostly just a sanity check for our GetInternalFields below. This check is should actually impossible to fire and should get eliminated by AI.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6965
&gt;&gt; +                    clearCaches();
&gt; 
&gt; you do this a lot. I wonder if we should have a helper that sets m_currentBlock and calls clearCaches()

Possibly, we may want a better way to do all of this... It&apos;s a nightmare to do by hand.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7018
&gt;&gt; +                    // Set a value for m_value so we don&apos;t think
&gt; 
&gt; incomplete thought

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:7025
&gt;&gt; +                    addToGraph(Branch, OpInfo(branchData), get(bytecode.m_done));
&gt; 
&gt; if we exit here do we do the right thing? Might be good for a test

I have a test where we OSR when getting done. I&apos;m not sure how to make a test that would exit at the branch though.

&gt;&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1546
&gt;&gt; +        return freeze(m_vm.smallStrings.emptyString());
&gt; 
&gt; can we make this handle symbol properly?
&gt; 
&gt; This will pessimize an array containing symbols.

Per offline discussion, we should fix this in a different way. Which we will do in a follow up patch. https://bugs.webkit.org/show_bug.cgi?id=210694

&gt;&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1549
&gt;&gt; +        return freeze(jsNull());
&gt; 
&gt; this feels like it falls really short. Some quick glancing at FixupPhase, and you could make a lot of inner loops slower. Some things I glanced at that I think might get worse:
&gt; 
&gt; ```
&gt; StringObjectUse
&gt; StringOrStringObjectUse
&gt; 
&gt; 
&gt; RegExpExec
&gt; RegExpTest
&gt; StringReplace
&gt; StringReplaceRegExp
&gt; GetPrototypeOf
&gt; Spread
&gt; ToPropertyKey
&gt; 
&gt; any node that asks isFinalObjectSpeculation
&gt; 
&gt; (... and probably there is more)
&gt; ```
&gt; 
&gt; I think we need to prove to ourselves that some of this indeed gets worse. And we need to have a strategy about what to do here.

Ditto. https://bugs.webkit.org/show_bug.cgi?id=210694

&gt;&gt; Source/JavaScriptCore/dfg/DFGLazyJSValue.h:80
&gt;&gt; +    SpeculatedType speculatedType() const { return kind() == KnownValue ? SpecBytecodeTop : SpecString; }
&gt; 
&gt; can we do better? I know this isn&apos;t used for anything but strings right now, but if we start using it for more, SpecBytecodeTop will be a footgun
&gt; 
&gt; Or perhaps just assert for now?

Not sure what assertion we should do here? Regardless, I feel like when we add new enum values it&apos;s kind of our responsibility to make sure all the members make sense with the new entry...

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.h:162
&gt;&gt; +    unsigned m_dfgIRIndex;
&gt; 
&gt; delete

Done.

&gt;&gt; Source/JavaScriptCore/jit/JIT.h:300
&gt;&gt; +        void checkpointReached();
&gt; 
&gt; why is this only called for iterators but not varargs calls?

We only use it right now to nicely forward the checkpoint to BytecodeOperandsForCheckpoint.h functions. Varargs calls doesn&apos;t do that so it&apos;s not an issue.

&gt;&gt; Source/JavaScriptCore/jit/JITCall.cpp:396
&gt;&gt; +    })();
&gt; 
&gt; is it worth a FIXME to do this more generally?
&gt; 
&gt; Is it still a speedup?
&gt; 
&gt; You also do it below, so maybe factor it out into a tiny helper that takes instruction?

Yeah, it&apos;s still a important for perf.

do you mean like a macro or something? I&apos;m not sure how it would work otherwise...

&gt;&gt; Source/JavaScriptCore/jit/JITInlines.h:110
&gt;&gt; +    uint32_t locationBits = CallSiteIndex(m_bytecodeIndex.offset()).bits();
&gt; 
&gt; Is the invariant we just never store checkpoint index into the call frame header?

Yeah, I have a bug to go back to the old way where we only store the offset. I originally did this because I thought we&apos;d want to know the checkpoint in the LLInt/Baseline but it didn&apos;t work out that way...

&gt;&gt; Source/JavaScriptCore/jit/JITInlines.h:188
&gt;&gt; +inline void JIT::checkpointReached()
&gt; 
&gt; nit: maybe &quot;advanceToNextCheckpoint&quot; instead?

Sure. I also added an assert that the instruction we are generating actually has checkpoints.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:2115
&gt;&gt; +        valueRegister = iteratorResultObject.get(globalObject, vm.propertyNames-&gt;value);
&gt; 
&gt; do we have tests for an exception here along OSR exit path?

Yeah, I made a test where both done and value are a getters that OSR once tiered up.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:995
&gt;&gt; +        // FIXME: This only works for arrays from the same global object as ourselves but we should be able to support any pairing.
&gt; 
&gt; can you make a bug? Seems like a good thing to do

Done.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1000
&gt;&gt; +        metadata.m_iterationMetadata.seenModes = metadata.m_iterationMetadata.seenModes | IterationMode::FastArray;
&gt; 
&gt; style nit: |= ?

I wasn&apos;t able to get assignment overloading to work for enum classes... which is why I did it this way.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1005
&gt;&gt; +        }
&gt; 
&gt; why is this in a block?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCast.h:69
&gt;&gt; +    macro(JSArrayIterator, JSType::JSArrayIteratorType, JSType::JSArrayIteratorType) \
&gt; 
&gt; why this change?

It was just a nit change that I wanted to make.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643056</commentid>
    <comment_count>44</comment_count>
      <attachid>396863</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-18 14:34:33 -0700</bug_when>
    <thetext>Created attachment 396863
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643060</commentid>
    <comment_count>45</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-18 14:45:41 -0700</bug_when>
    <thetext>Committed r260323: &lt;https://trac.webkit.org/changeset/260323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643061</commentid>
    <comment_count>46</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-18 14:46:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/61984236&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643074</commentid>
    <comment_count>47</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-18 16:00:10 -0700</bug_when>
    <thetext>This appears to have caused a build failure on the Apple Windows 10 buildbot:

List of builds:  &lt;https://build.webkit.org/builders/Apple%20Win%2010%20Release%20(Build)?numbuilds=50&gt;

Failing build log:  &lt;https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/builds/12731/steps/compile-webkit/logs/stdio&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643077</commentid>
    <comment_count>48</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-18 16:03:59 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #47)
&gt; This appears to have caused a build failure on the Apple Windows 10 buildbot:
&gt; 
&gt; List of builds: 
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20Win%2010%20Release%20(Build)?numbuilds=50&gt;
&gt; 
&gt; Failing build log: 
&gt; &lt;https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/
&gt; builds/12731/steps/compile-webkit/logs/stdio&gt;

Fixed in r260325?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643083</commentid>
    <comment_count>49</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-18 16:15:18 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #48)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #47)
&gt; &gt; This appears to have caused a build failure on the Apple Windows 10 buildbot:
&gt; &gt; 
&gt; &gt; List of builds: 
&gt; &gt; &lt;https://build.webkit.org/builders/
&gt; &gt; Apple%20Win%2010%20Release%20(Build)?numbuilds=50&gt;
&gt; &gt; 
&gt; &gt; Failing build log: 
&gt; &gt; &lt;https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/
&gt; &gt; builds/12731/steps/compile-webkit/logs/stdio&gt;
&gt; 
&gt; Fixed in r260325?

The windows build is semi-broken for changes to derived sources... It&apos;s gonna take a clean build to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643151</commentid>
    <comment_count>50</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-18 20:59:31 -0700</bug_when>
    <thetext>Oh man, this toasted WinCairo.

Just entering `for (let x of [1,2,3]) print(x);` suffices to crash the REPL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643183</commentid>
    <comment_count>51</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-19 04:11:43 -0700</bug_when>
    <thetext>AppleWin port is also crashing. https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Tests%29/builds/5767</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643202</commentid>
    <comment_count>52</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-04-19 08:21:59 -0700</bug_when>
    <thetext>&gt; Committed r260323: &lt;https://trac.webkit.org/changeset/260323&gt;
This seems to have introduced 8 JSC test failures on armv7/mips related to stress/for-of-array-different-globals.js
Test history: https://results.webkit.org/?suite=javascriptcore-tests&amp;test=stress%2Ffor-of-array-different-globals.js.default

e.g.: https://ews-build.webkit.org/#/builders/25/builds/15247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643405</commentid>
    <comment_count>53</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-04-20 03:06:33 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #45)
&gt; Committed r260323: &lt;https://trac.webkit.org/changeset/260323&gt;

On Solaris x86_64, it is newly failing whilst building javascriptcoregtk-4.0.so:

Text relocation remains                           referenced
    against symbol                  offset        in file
iterator_next_try_fast_narrow       0x1156b       CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
iterator_next_try_fast_wide16       0x11a49       CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
iterator_next_try_fast_wide32       0x11f28       CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
iterator_open_try_fast_narrow       0x10b9f       CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
iterator_open_try_fast_wide32       0x11223       CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
iterator_open_try_fast_wide16       0x10ee0       CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
ld: fatal: relocations remain against allocatable but non-writable sections</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643543</commentid>
    <comment_count>54</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-04-20 11:28:10 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #53)
&gt; (In reply to Keith Miller from comment #45)
&gt; &gt; Committed r260323: &lt;https://trac.webkit.org/changeset/260323&gt;
&gt; 
&gt; On Solaris x86_64, it is newly failing whilst building
&gt; javascriptcoregtk-4.0.so:
&gt; 
&gt; Text relocation remains                           referenced
&gt;     against symbol                  offset        in file
&gt; iterator_next_try_fast_narrow       0x1156b      
&gt; CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
&gt; iterator_next_try_fast_wide16       0x11a49      
&gt; CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
&gt; iterator_next_try_fast_wide32       0x11f28      
&gt; CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
&gt; iterator_open_try_fast_narrow       0x10b9f      
&gt; CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
&gt; iterator_open_try_fast_wide32       0x11223      
&gt; CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
&gt; iterator_open_try_fast_wide16       0x10ee0      
&gt; CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
&gt; ld: fatal: relocations remain against allocatable but non-writable sections

This issue has cleared as of r260374.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317898</attachid>
            <date>2017-08-10 19:02:11 -0700</date>
            <delta_ts>2020-04-14 22:53:37 -0700</delta_ts>
            <desc>WIP works in LLInt</desc>
            <filename>bug-175454-20170810190211.patch</filename>
            <type>text/plain</type>
            <size>29318</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTIzZWYyZWM3YzAwOWMxYzhjNzMyNDgyZDJmOTI5NDIxMWI3ZmZiLi5lYjBjZmVmZGY0MjQ0NzQ0
ZDc0YTQ2MzU1NDY1MzgyMTY2ODQwMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0wOC0xMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWRlc2lnbiBob3cgd2UgZG8gaXRlcmF0aW9uIGZvciBrbm93biB0
eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4pOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dERvbmUpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFZhbHVlKToKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxl
czoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKwogMjAxNy0w
OC0wNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBQ
cm9taXNlIHJlc29sdmUgYW5kIHJlamVjdCBmdW5jdGlvbiBzaG91bGQgaGF2ZSBsZW5ndGggPSAx
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDU1YzUwOGM5
NTI3NWM0M2U5NTcxYTA1ODUzNjQ5MGEzOTIxOTg1ZDkuLjA4NDgwNGQ4MDg5OGJjZTdhZDNmOWI2
ZDBhZjBkOGY2ZTgxOTVkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC01Miw2ICs1Miw3IEBAIGVuZGlmCiBhbGwgOiBcCiAgICAgdWRpczg2X2l0YWIu
aCBcCiAgICAgQnl0ZWNvZGVzLmggXAorICAgIEJ5dGVjb2RlU3RydWN0cy5oIFwKICAgICBDb21i
aW5lZERvbWFpbnMuanNvbiBcCiAgICAgSW5pdEJ5dGVjb2Rlcy5hc20gXAogICAgIEluamVjdGVk
U2NyaXB0U291cmNlLmggXApAQCAtMjA1LDYgKzIwNiw5IEBAIHVkaXM4Nl9pdGFiLmg6ICQoSmF2
YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvdWRfaXRhYi5weSAkKEphdmFTY3JpcHRD
b3JlCiBCeXRlY29kZXMuaDogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtYnl0ZWNvZGUtZmls
ZXMgJChKYXZhU2NyaXB0Q29yZSkvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KIAkkKFBZVEhP
TikgJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNf
aCBCeXRlY29kZXMuaCAkKEphdmFTY3JpcHRDb3JlKS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgogCitCeXRlY29kZVN0cnVjdHMuaDogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtYnl0ZWNv
ZGUtZmlsZXMgJChKYXZhU2NyaXB0Q29yZSkvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKwkk
KFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRl
Y29kZV9zdHJ1Y3RzX2ggQnl0ZWNvZGVTdHJ1Y3RzLmggJChKYXZhU2NyaXB0Q29yZSkvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKwogSW5pdEJ5dGVjb2Rlcy5hc206ICQoSmF2YVNjcmlwdENv
cmUpL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzICQoSmF2YVNjcmlwdENvcmUpL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCiAJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWJ5
dGVjb2RlLWZpbGVzIC0taW5pdF9ieXRlY29kZXNfYXNtIEluaXRCeXRlY29kZXMuYXNtICQoSmF2
YVNjcmlwdENvcmUpL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDA3YjA2NTVm
Mzc0NzlmNzE5MjVhYzA4YmEyNzhkMzE5NzVhNGJhZjMuLmE2NGMzMzY2ZDdmYzk4OWU3MGQ4MWM3
ZDY0N2QwZDRmMTZlNjBlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkJ5dGVj
b2RlRHVtcGVyLmgiCiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKKyNpbmNsdWRlICJCeXRl
Y29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkVycm9yLmgiCkBAIC0xMzYyLDYgKzEzNjMsNDAgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBj
b25zdCB0eXBlbmFtZSBCbG9jazoKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0
ZXJOYW1lKGZ1bmNSZWcpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKG5hbWVSZWcpLmRhdGEoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAg
ICAgICBhdXRvKiBieXRlY29kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgT3BJdGVyYXRvck9w
ZW4qPihpdCk7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwg
Iml0ZXJhdG9yX29wZW4iKTsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLT5pdGVyYXRvcigpID09
IGl0WzFdLnUub3BlcmFuZCk7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdp
c3Rlck5hbWUoYnl0ZWNvZGUtPml0ZXJhdG9yKCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJ5dGVj
b2RlLT5pbmRleCgpKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShieXRlY29kZS0+aXRlcmFibGUoKSku
ZGF0YSgpKTsKKyAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9pdGVyYXRvcl9vcGVuKSAt
IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9k
b25lOiB7CisgICAgICAgIGF1dG8qIGJ5dGVjb2RlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBP
cEl0ZXJhdG9yTmV4dERvbmUqPihpdCk7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGxvY2F0aW9uLCBpdCwgIml0ZXJhdG9yX25leHRfZG9uZSIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShieXRlY29kZS0+ZG9uZSgpKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShieXRlY29kZS0+aXRlcmF0b3IoKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
Ynl0ZWNvZGUtPmluZGV4KCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJ5dGVjb2RlLT5pdGVyYWJs
ZSgpKS5kYXRhKCkpOworICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2l0ZXJhdG9yX25l
eHRfZG9uZSkgLSAxOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX25leHRfdmFsdWU6IHsKKyAgICAgICAgYXV0byogYnl0ZWNvZGUgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IE9wSXRlcmF0b3JOZXh0VmFsdWUqPihpdCk7CisgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIml0ZXJhdG9yX25leHRfdmFsdWUiKTsKKyAgICAg
ICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUoYnl0ZWNvZGUtPnZh
bHVlKCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJ5dGVjb2RlLT5pbmRleCgpKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShieXRlY29kZS0+aXRlcmF0b3IoKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYnl0
ZWNvZGUtPml0ZXJhYmxlKCkpLmRhdGEoKSk7CisgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgo
b3BfaXRlcmF0b3JfbmV4dF92YWx1ZSkgLSAxOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX2Nsb3NlOiB7CisgICAgICAgIGF1dG8qIGJ5dGVjb2RlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBPcEl0ZXJhdG9yQ2xvc2UqPihpdCk7CisgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIml0ZXJhdG9yX2Nsb3NlIik7CisgICAg
ICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKGJ5dGVjb2RlLT5pdGVyYXRvcigpKS5k
YXRhKCkpOworICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2dldF9lbnVtZXJhYmxlX2xl
bmd0aCkgLSAxOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIG9wX2NhbGw6IHsK
ICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hl
cywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmlu
ZGV4IDI5ZjIzMzNjYjcyZmQ2NTBmMmMzNzIyMWM1NjUyNThjMzlhYmY0YjcuLjVhNmQ0ZWFhMjZh
MWYxNmE3YzhmNzVkN2E2NzMzMTQxYjA5OWI3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEsNyArMSw3IEBACiBbCiAgICAg
ewotICAgICAgICAic2VjdGlvbiIgOiAiQnl0ZWNvZGVzIiwgImVtaXRJbkhGaWxlIiA6IHRydWUs
ICJlbWl0SW5BU01GaWxlIiA6IHRydWUsICJlbWl0T3Bjb2RlSURTdHJpbmdWYWx1ZXNJbkhGaWxl
IiA6IHRydWUsCi0gICAgICAgICJtYWNyb05hbWVDb21wb25lbnQiIDogIkJZVEVDT0RFIiwgImFz
bVByZWZpeCIgOiAibGxpbnRfIiwgCisgICAgICAgICJzZWN0aW9uIiA6ICJCeXRlY29kZXMiLCAi
ZW1pdEluSEZpbGUiIDogdHJ1ZSwgImVtaXRJblN0cnVjdHNGaWxlIiA6IHRydWUsICJlbWl0SW5B
U01GaWxlIiA6IHRydWUsCisgICAgICAgICJlbWl0T3Bjb2RlSURTdHJpbmdWYWx1ZXNJbkhGaWxl
IiA6IHRydWUsICJtYWNyb05hbWVDb21wb25lbnQiIDogIkJZVEVDT0RFIiwgImFzbVByZWZpeCIg
OiAibGxpbnRfIiwKICAgICAgICAgImJ5dGVjb2RlcyIgOiBbCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9lbnRlciIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfZ2V0X3Njb3BlIiwgImxlbmd0aCIgOiAyIH0sCkBAIC0xMTEsNiArMTExLDIxIEBACiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuYyIsICJsZW5ndGgiIDogNCB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmNfZXhwIiwgImxlbmd0aCIg
OiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zZXRfZnVuY3Rpb25fbmFtZSIsICJs
ZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXRlcmF0b3Jfb3BlbiIs
ICJvZmZzZXRzIiA6CisgICAgICAgICAgICAgICAgW3siaXRlcmF0b3IiIDogImludCJ9LAorICAg
ICAgICAgICAgICAgICB7ImluZGV4IiA6ICJpbnQifSwKKyAgICAgICAgICAgICAgICAgeyJpdGVy
YWJsZSIgOiAiaW50In1dIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pdGVyYXRvcl9u
ZXh0X2RvbmUiLCAib2Zmc2V0cyIgOgorICAgICAgICAgICAgICAgIFt7ImRvbmUiIDogImludCJ9
LAorICAgICAgICAgICAgICAgICB7Iml0ZXJhdG9yIiA6ICJpbnQifSwKKyAgICAgICAgICAgICAg
ICAgeyJpbmRleCIgOiAiaW50In0sCisgICAgICAgICAgICAgICAgIHsiaXRlcmFibGUiIDogImlu
dCJ9XSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXRlcmF0b3JfbmV4dF92YWx1ZSIs
ICJvZmZzZXRzIiA6CisgICAgICAgICAgICAgICAgW3sidmFsdWUiIDogImludCJ9LAorICAgICAg
ICAgICAgICAgICB7ImluZGV4IiA6ICJpbnQifSwKKyAgICAgICAgICAgICAgICAgeyJpdGVyYXRv
ciIgOiAiaW50In0sCisgICAgICAgICAgICAgICAgIHsiaXRlcmFibGUiIDogImludCJ9XSB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXRlcmF0b3JfY2xvc2UiLCAib2Zmc2V0cyIgOiBb
eyJpdGVyYXRvciIgOiAiaW50In0sIHsiaXRlcmFibGUiIDogImludCJ9LCB7ImluZGV4IiA6ICJp
bnQifV0gfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbCIsICJsZW5ndGgiIDogOSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF9ldmFsIiwgImxlbmd0aCIgOiA5IH0s
CkBAIC0xNTksOCArMTc0LDggQEAKICAgICAgICAgXQogICAgIH0sCiAgICAgewotICAgICAgICAi
c2VjdGlvbiIgOiAiQ0xvb3BIZWxwZXJzIiwgImVtaXRJbkhGaWxlIiA6IHRydWUsICJlbWl0SW5B
U01GaWxlIiA6IGZhbHNlLCAiZW1pdE9wY29kZUlEU3RyaW5nVmFsdWVzSW5IRmlsZSIgOiBmYWxz
ZSwgImRlZmF1bHRMZW5ndGgiIDogMSwKLSAgICAgICAgIm1hY3JvTmFtZUNvbXBvbmVudCIgOiAi
Q0xPT1BfQllURUNPREVfSEVMUEVSIiwKKyAgICAgICAgInNlY3Rpb24iIDogIkNMb29wSGVscGVy
cyIsICJlbWl0SW5IRmlsZSIgOiB0cnVlLCAiZW1pdEluU3RydWN0c0ZpbGUiIDogZmFsc2UsICJl
bWl0SW5BU01GaWxlIiA6IGZhbHNlLAorICAgICAgICAiZW1pdE9wY29kZUlEU3RyaW5nVmFsdWVz
SW5IRmlsZSIgOiBmYWxzZSwgImRlZmF1bHRMZW5ndGgiIDogMSwgIm1hY3JvTmFtZUNvbXBvbmVu
dCIgOiAiQ0xPT1BfQllURUNPREVfSEVMUEVSIiwKICAgICAgICAgImJ5dGVjb2RlcyIgOiBbCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9lbnRyeSIgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogImdldEhvc3RDYWxsUmV0dXJuVmFsdWUiIH0sCkBAIC0xODIsOCArMTk3LDggQEAKICAg
ICAgICAgXQogICAgIH0sCiAgICAgewotICAgICAgICAic2VjdGlvbiIgOiAiTmF0aXZlSGVscGVy
cyIsICJlbWl0SW5IRmlsZSIgOiB0cnVlLCAiZW1pdEluQVNNRmlsZSIgOiB0cnVlLCAiZW1pdE9w
Y29kZUlEU3RyaW5nVmFsdWVzSW5IRmlsZSIgOiBmYWxzZSwgImRlZmF1bHRMZW5ndGgiIDogMSwK
LSAgICAgICAgIm1hY3JvTmFtZUNvbXBvbmVudCIgOiAiQllURUNPREVfSEVMUEVSIiwKKyAgICAg
ICAgInNlY3Rpb24iIDogIk5hdGl2ZUhlbHBlcnMiLCAiZW1pdEluSEZpbGUiIDogdHJ1ZSwgImVt
aXRJblN0cnVjdHNGaWxlIiA6IGZhbHNlLCAiZW1pdEluQVNNRmlsZSIgOiB0cnVlLAorICAgICAg
ICAiZW1pdE9wY29kZUlEU3RyaW5nVmFsdWVzSW5IRmlsZSIgOiBmYWxzZSwgImRlZmF1bHRMZW5n
dGgiIDogMSwgIm1hY3JvTmFtZUNvbXBvbmVudCIgOiAiQllURUNPREVfSEVMUEVSIiwKICAgICAg
ICAgImJ5dGVjb2RlcyIgOiBbCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9wcm9ncmFt
X3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfZXZhbF9wcm9sb2d1
ZSIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKaW5kZXggODA5YzIxZTU0N2Q2ODJkYTQ5NzhkNTkwNTc0MDE1M2M0Y2MwODk1NC4uMTYxZTVl
NWRjZWI1OGE0MTQ5ZmEwZjE1MWRjYWEyYWJlMjhhNTczZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVT
dHJ1Y3RzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC05Miw3ICs5Myw4IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgSW5zdHJ1Y3RpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRf
YnlfdmFsX2RpcmVjdDoKLSAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKKyAgICBjYXNlIG9wX3B1
dF9ieV92YWw6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9jbG9zZTogewogICAgICAgICBBU1NFUlQo
b3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAzKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKTsKQEAgLTMwOCw2ICszMTAsMjkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVj
dGkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNh
c2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBhdXRvKiBieXRlY29kZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgT3BJdGVyYXRvck9wZW4qPihpbnN0cnVjdGlvbik7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGJ5dGVjb2RlLT5pdGVyYWJs
ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4
dF9kb25lOiB7CisgICAgICAgIGF1dG8qIGJ5dGVjb2RlID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBPcEl0ZXJhdG9yTmV4dERvbmUqPihpbnN0cnVjdGlvbik7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGJ5dGVjb2RlLT5pdGVyYXRvcigpKTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgYnl0ZWNvZGUt
PmluZGV4KCkpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBieXRlY29kZS0+aXRlcmFibGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfdmFsdWU6IHsKKyAgICAgICAgYXV0byogYnl0ZWNvZGUg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IE9wSXRlcmF0b3JOZXh0VmFsdWUqPihpbnN0cnVjdGlv
bik7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGJ5
dGVjb2RlLT5pbmRleCgpKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgYnl0ZWNvZGUtPml0ZXJhdG9yKCkpOworICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBieXRlY29kZS0+aXRlcmFibGUoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTM2MSw2ICszODYsNyBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAg
ICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bfc2V0X2Z1bmN0aW9uX25h
bWU6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9jbG9zZToKICAgICBjYXNlIG9wX2NoZWNrX3RyYXBz
OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ugb3Bf
bG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CkBAIC00NzksMTIgKzUwNSwzNSBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2Rl
SUQsIEluc3RydWN0aQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorCiAgICAgY2FzZSBvcF9jYXRjaDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiAyKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbjogewor
ICAgICAgICBhdXRvKiBieXRlY29kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgT3BJdGVyYXRv
ck9wZW4qPihpbnN0cnVjdGlvbik7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGJ5dGVjb2RlLT5pdGVyYXRvcigpKTsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgYnl0ZWNvZGUtPmluZGV4KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X2RvbmU6IHsK
KyAgICAgICAgYXV0byogYnl0ZWNvZGUgPSByZWludGVycHJldF9jYXN0PGNvbnN0IE9wSXRlcmF0
b3JOZXh0RG9uZSo+KGluc3RydWN0aW9uKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgYnl0ZWNvZGUtPmRvbmUoKSk7CisgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGJ5dGVjb2RlLT5pdGVyYXRvcigpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF92YWx1
ZTogeworICAgICAgICBhdXRvKiBieXRlY29kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgT3BJ
dGVyYXRvck5leHRWYWx1ZSo+KGluc3RydWN0aW9uKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgYnl0ZWNvZGUtPnZhbHVlKCkpOworICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBieXRlY29kZS0+aW5kZXgo
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIG9wX2VudGVyOiB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07KQogICAgICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA4MmMxOTFm
MzRmYzdjMjU0M2EwMzU4OTdkZTc5MWU4NTEzMzc5ZGJmLi5iMjYzYjU2YjE3ZWUyODBlNmM0ZTMz
OWE5N2M2MTRhZjhmZTg2MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDI0OCwxMiArNDI0OCwy
MiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgIENvbXBsZXRpb25SZWNvcmRTY29wZSBj
b21wbGV0aW9uUmVjb3JkU2NvcGUoKnRoaXMpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1
YmplY3QgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3Ig
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBuZXdUZW1w
b3JhcnkoKTsKICAgICBlbWl0Tm9kZShzdWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7Ci0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgZW1p
dEl0ZXJhdG9yT3BlbihpdGVyYXRvci5nZXQoKSwgaW5kZXguZ2V0KCksIHN1YmplY3QuZ2V0KCkp
OworCiAgICAgeworICAgICAgICBSZWY8TGFiZWw+IGZhc3RJdGVyYXRvciA9IG5ld0xhYmVsKCk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpc0VtcHR5ID0gZW1pdElzRW1wdHkobmV3VGVt
cG9yYXJ5KCksIGluZGV4LmdldCgpKTsKKyAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGlzRW1wdHku
Z2V0KCksIGZhc3RJdGVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgZW1pdEdldEJ5SWQoaXRlcmF0
b3IuZ2V0KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7
CiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGVt
aXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIHN1YmplY3QuZ2V0KCkpOwogICAgICAgICBlbWl0
Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
YXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgp
LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGVtaXRMYWJlbChmYXN0SXRlcmF0b3Iu
Z2V0KCkpOwogICAgIH0KIAogICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpA
QCAtNDM1Niw5ICs0MzY2LDIwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJh
dGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIH0K
IAogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBp
dGVyYXRvci5nZXQoKSwgbm9kZSk7Ci0gICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwg
bG9vcERvbmUuZ2V0KCkpOwotICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZh
bHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGRvbmUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpc0VtcHR5ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBSZWY8TGFiZWw+
IGZhc3RJdGVyYXRvciA9IG5ld0xhYmVsKCk7CisKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvck5l
eHREb25lKGRvbmUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBpbmRleC5nZXQoKSwgc3ViamVjdC5n
ZXQoKSk7CisKKyAgICAgICAgICAgIGVtaXRJc0VtcHR5KGlzRW1wdHkuZ2V0KCksIGl0ZXJhdG9y
LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGlzRW1wdHkuZ2V0KCksIGZhc3RJ
dGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KGluZGV4LmdldCgp
LCBpdGVyYXRvci5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICBlbWl0R2V0QnlJZChkb25lLmdl
dCgpLCBpbmRleC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpOworICAgICAgICAgICAgZW1p
dExhYmVsKGZhc3RJdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShk
b25lLmdldCgpLCBsb29wRG9uZS5nZXQoKSk7CisKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvck5l
eHRWYWx1ZSh2YWx1ZS5nZXQoKSwgaW5kZXguZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBzdWJqZWN0
LmdldCgpKTsKICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CiAgICAgICAg
IH0KIApAQCAtNDUxNiw3ICs0NTM3LDMzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQotICAg
IAorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBpbmRleCwgUmVnaXN0ZXJJRCogaXRlcmFibGUpCit7Cisg
ICAgZW1pdE9wY29kZShvcF9pdGVyYXRvcl9vcGVuKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoa2lsbChpdGVyYXRvcikpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGluZGV4
KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGl0ZXJhYmxlLT5pbmRleCgpKTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dERvbmUoUmVnaXN0ZXJJRCog
ZG9uZSwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIGluZGV4LCBSZWdpc3RlcklE
KiBpdGVyYWJsZSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX2l0ZXJhdG9yX25leHRfZG9uZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZG9uZSkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChraWxsKGl0ZXJhdG9yKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaXRlcmFibGUtPmluZGV4KCkp
OworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0VmFsdWUoUmVn
aXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGluZGV4LCBSZWdpc3RlcklEKiBpdGVyYXRvciwg
UmVnaXN0ZXJJRCogaXRlcmFibGUpCit7CisgICAgZW1pdE9wY29kZShvcF9pdGVyYXRvcl9uZXh0
X3ZhbHVlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCh2YWx1ZSkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKGluZGV4KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGl0ZXJhdG9yLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaXRlcmFi
bGUtPmluZGV4KCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
MWE0YjI3OTFjM2RkMGVkZTIxNmI4MTNmZmRmMjdlZjEwNzUxY2Q0NS4uMTc4NmJlNGIxMTFmNTJj
MzRhNWRhMTJkOThjMjY2MWU1ZDNhYWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzczLDYgKzc3Mywx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzRGVyaXZlZEFy
cmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxs
V2l0aFR5cGUoZHN0LCBzcmMsIERlcml2ZWRBcnJheVR5cGUpOyB9CiAgICAgICAgIHZvaWQgZW1p
dFJlcXVpcmVPYmplY3RDb2VyY2libGUoUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmluZyYg
ZXJyb3IpOwogCisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVy
YXRvciwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIGl0ZXJhYmxlKTsKKyAgICAgICAg
dm9pZCBlbWl0SXRlcmF0b3JOZXh0RG9uZShSZWdpc3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiBp
dGVyYXRvciwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIGl0ZXJhYmxlKTsKKyAgICAg
ICAgdm9pZCBlbWl0SXRlcmF0b3JOZXh0VmFsdWUoUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVy
SUQqIGluZGV4LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogaXRlcmFibGUpOwor
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9y
Q2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRl
Y29kZS1maWxlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxl
cwppbmRleCA3MWI0ZjgwZmVhYzRkMWUzYjk3MGJkYjNmNjI4ZjQ0ZGYxMGFlM2Y1Li4wYWNhNTNi
NWY3OWZkZjgzNmY4YWEwN2RlNTljNjczZGJmOTBhNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCkBAIC0zMyw3ICszMyw3IEBAIGltcG9ydCBy
ZQogaW1wb3J0IHN5cwogCiBjQ29weXJpZ2h0TXNnID0gIiIiLyoKLSogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KK24qIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEwNCw5ICsxMDQsMzEgQEAgZGVmIGhhc2hGaWxlKGZpbGUpOgogCiAgICAgcmV0
dXJuIHNoYTEuaGV4ZGlnZXN0KCkKIAorCitkZWYgdG9DcHAobmFtZSk6CisgICAgY2FtZWxDYXNl
ID0gcmUuc3ViKHInKFteYS16MC05XS4pJywgbGFtYmRhIGM6IGMuZ3JvdXAoMClbMV0udXBwZXIo
KSwgbmFtZSkKKyAgICBDYW1lbENhc2UgPSBjYW1lbENhc2VbOjFdLnVwcGVyKCkgKyBjYW1lbENh
c2VbMTpdCisgICAgcmV0dXJuIENhbWVsQ2FzZQorCisKK2RlZiB3cml0ZUluc3RydWN0aW9uVW5p
b24oYnl0ZWNvZGVIRmlsZSwgdHlwZU5hbWUsIG5hbWUpOgorICAgIGJ5dGVjb2RlSEZpbGUud3Jp
dGUoIiAgICB7MH0mIHsxfSgpIHt7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx7MH0qPigmbV97
MX0pOyB9fVxuIi5mb3JtYXQodHlwZU5hbWUsIG5hbWUpKQorICAgIGJ5dGVjb2RlSEZpbGUud3Jp
dGUoIiAgICBjb25zdCB7MH0mIHsxfSgpIGNvbnN0IHt7IHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB7MH0qPigmbV97MX0pOyB9fVxuIi5mb3JtYXQodHlwZU5hbWUsIG5hbWUpKQorICAg
IGJ5dGVjb2RlSEZpbGUud3JpdGUoIiAgICBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoezB9
KSwgc2l6ZW9mKEluc3RydWN0aW9uKT46OnR5cGUgbV97MX07XG4iLmZvcm1hdCh0eXBlTmFtZSwg
bmFtZSkpCisKK2RlZiB3cml0ZVN0cnVjdChieXRlY29kZUhGaWxlLCBieXRlY29kZSk6CisgICAg
Ynl0ZWNvZGVIRmlsZS53cml0ZSgic3RydWN0IHswfSB7e1xuIi5mb3JtYXQodG9DcHAoYnl0ZWNv
ZGVbIm5hbWUiXSkpKQorICAgIHdyaXRlSW5zdHJ1Y3Rpb25VbmlvbihieXRlY29kZUhGaWxlLCAi
T3Bjb2RlIiwgIm9wY29kZSIpCisgICAgZm9yIG9mZnNldCBpbiBieXRlY29kZVsib2Zmc2V0cyJd
OgorICAgICAgICBmb3IgbmFtZSwgdHlwZU5hbWUgaW4gb2Zmc2V0Lml0ZXJpdGVtcygpOgorICAg
ICAgICAgICAgd3JpdGVJbnN0cnVjdGlvblVuaW9uKGJ5dGVjb2RlSEZpbGUsIHR5cGVOYW1lLCBu
YW1lKQorICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIn07XG4iKQorCisKIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0g
InVzYWdlOiAlcHJvZyBbLS1ieXRlY29kZXNfaCA8RklMRT5dIFstLWluaXRfYnl0ZWNvZGVzX2Fz
bSA8RklMRT5dIDxieXRlY29kZS1qc29uLWZpbGU+IikKICAgICBwYXJzZXIuYWRkX29wdGlvbigi
LWIiLCAiLS1ieXRlY29kZXNfaCIsIGRlc3QgPSAiYnl0ZWNvZGVzSEZpbGVOYW1lIiwgaGVscCA9
ICJnZW5lcmF0ZSBieXRlY29kZXMgbWFjcm8gLmggRklMRSIsIG1ldGF2YXIgPSAiRklMRSIpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tYnl0ZWNvZGVfc3RydWN0c19oIiwgZGVzdCA9
ICJieXRlY29kZVN0cnVjdHNIRmlsZU5hbWUiLCBoZWxwID0gImdlbmVyYXRlIGJ5dGVjb2RlcyBt
YWNybyAuaCBGSUxFIiwgbWV0YXZhciA9ICJGSUxFIikKICAgICBwYXJzZXIuYWRkX29wdGlvbigi
LWEiLCAiLS1pbml0X2J5dGVjb2Rlc19hc20iLCBkZXN0ID0gImluaXRBU01GaWxlTmFtZSIsIGhl
bHA9ImdlbmVyYXRlIEFTTSBieXRlY29kZXMgaW5pdCBGSUxFIiwgbWV0YXZhciA9ICJGSUxFIikK
ICAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCiAKQEAgLTEyMSw5ICsx
NDMsMTAgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBhc21GaWxlSGFzaFN0cmlu
ZyA9ICIjIFNIQTFIYXNoOiB7MH1cbiIuZm9ybWF0KHNoYTFIYXNoKQogCiAgICAgYnl0ZWNvZGVI
RmlsZW5hbWUgPSBvcHRpb25zLmJ5dGVjb2Rlc0hGaWxlTmFtZQorICAgIGJ5dGVjb2RlU3RydWN0
c0hGaWxlbmFtZSA9IG9wdGlvbnMuYnl0ZWNvZGVTdHJ1Y3RzSEZpbGVOYW1lCiAgICAgaW5pdEFT
TUZpbGVOYW1lID0gb3B0aW9ucy5pbml0QVNNRmlsZU5hbWUKIAotICAgIGlmIG5vdCBieXRlY29k
ZUhGaWxlbmFtZSBhbmQgbm90IGluaXRBU01GaWxlTmFtZToKKyAgICBpZiBub3QgYnl0ZWNvZGVI
RmlsZW5hbWUgYW5kIG5vdCBpbml0QVNNRmlsZU5hbWUgYW5kIG5vdCBieXRlY29kZVN0cnVjdHNI
RmlsZW5hbWU6CiAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgZXhpdCgwKQog
CkBAIC0xMzIsNyArMTU1LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpZiBi
eXRlY29kZUhGaWxlbmFtZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYnl0ZWNvZGVIUmVh
ZEZpbGUgPSBvcGVuKGJ5dGVjb2RlSEZpbGVuYW1lLCAicmIiKQotICAgICAgICAgICAgCisKICAg
ICAgICAgICAgIGhhc2hMaW5lID0gYnl0ZWNvZGVIUmVhZEZpbGUucmVhZGxpbmUoKQogICAgICAg
ICAgICAgaWYgaGFzaExpbmUgIT0gaEZpbGVIYXNoU3RyaW5nOgogICAgICAgICAgICAgICAgIG5l
ZWRUb0dlbmVyYXRlID0gVHJ1ZQpAQCAtMTQxLDYgKzE2NCwxOCBAQCBpZiBfX25hbWVfXyA9PSAi
X19tYWluX18iOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYnl0ZWNvZGVIUmVhZEZpbGUu
Y2xvc2UoKQogCisgICAgaWYgYnl0ZWNvZGVTdHJ1Y3RzSEZpbGVuYW1lOgorICAgICAgICB0cnk6
CisgICAgICAgICAgICBieXRlY29kZVN0cnVjdHNIUmVhZEZpbGUgPSBvcGVuKGJ5dGVjb2RlU3Ry
dWN0c0hGaWxlbmFtZSwgInJiIikKKworICAgICAgICAgICAgaGFzaExpbmUgPSBieXRlY29kZVN0
cnVjdHNIUmVhZEZpbGUucmVhZGxpbmUoKQorICAgICAgICAgICAgaWYgaGFzaExpbmUgIT0gaEZp
bGVIYXNoU3RyaW5nOgorICAgICAgICAgICAgICAgIG5lZWRUb0dlbmVyYXRlID0gVHJ1ZQorICAg
ICAgICBleGNlcHQ6CisgICAgICAgICAgICBuZWVkVG9HZW5lcmF0ZSA9IFRydWUKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGJ5dGVjb2RlU3RydWN0c0hSZWFkRmlsZS5jbG9zZSgpCisKICAg
ICBpZiBpbml0QVNNRmlsZU5hbWU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGluaXRCeXRl
Y29kZXNSZWFkRmlsZSA9IG9wZW4oaW5pdEFTTUZpbGVOYW1lLCAicmIiKQpAQCAtMTU5LDYgKzE5
NCw5IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaWYgYnl0ZWNvZGVIRmlsZW5h
bWU6CiAgICAgICAgIGJ5dGVjb2RlSEZpbGUgPSBvcGVuT3JFeGl0KGJ5dGVjb2RlSEZpbGVuYW1l
LCAid2IiKQogCisgICAgaWYgYnl0ZWNvZGVTdHJ1Y3RzSEZpbGVuYW1lOgorICAgICAgICBieXRl
Y29kZVN0cnVjdHNIRmlsZSA9IG9wZW5PckV4aXQoYnl0ZWNvZGVTdHJ1Y3RzSEZpbGVuYW1lLCAi
d2IiKQorCiAgICAgaWYgaW5pdEFTTUZpbGVOYW1lOgogICAgICAgICBpbml0Qnl0ZWNvZGVzRmls
ZSA9IG9wZW5PckV4aXQoaW5pdEFTTUZpbGVOYW1lLCAid2IiKQogCkBAIC0xNzIsNiArMjEwLDEz
IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3Jp
dGUoY0NvcHlyaWdodE1zZyAlIGJ5dGVjb2RlSlNPTkZpbGUpCiAgICAgICAgIGJ5dGVjb2RlSEZp
bGUud3JpdGUoIiNwcmFnbWEgb25jZVxuXG4iKQogCisgICAgaWYgYnl0ZWNvZGVTdHJ1Y3RzSEZp
bGVuYW1lOgorICAgICAgICBieXRlY29kZVN0cnVjdHNIRmlsZS53cml0ZShoRmlsZUhhc2hTdHJp
bmcpCisgICAgICAgIGJ5dGVjb2RlU3RydWN0c0hGaWxlLndyaXRlKGNDb3B5cmlnaHRNc2cgJSBi
eXRlY29kZUpTT05GaWxlKQorICAgICAgICBieXRlY29kZVN0cnVjdHNIRmlsZS53cml0ZSgiI3By
YWdtYSBvbmNlXG5cbiIpCisgICAgICAgIGJ5dGVjb2RlU3RydWN0c0hGaWxlLndyaXRlKCIjaW5j
bHVkZSBcIkluc3RydWN0aW9uLmhcIlxuIikKKyAgICAgICAgYnl0ZWNvZGVTdHJ1Y3RzSEZpbGUu
d3JpdGUoIlxuIikKKwogICAgIGlmIGluaXRBU01GaWxlTmFtZToKICAgICAgICAgaW5pdEJ5dGVj
b2Rlc0ZpbGUud3JpdGUoYXNtRmlsZUhhc2hTdHJpbmcpCiAgICAgICAgIGluaXRCeXRlY29kZXNG
aWxlLndyaXRlKGFzbUNvcHlyaWdodE1zZyAlIGJ5dGVjb2RlSlNPTkZpbGUpCkBAIC0xOTMsNiAr
MjM4LDkgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBsZW5n
dGggPSBkZWZhdWx0TGVuZ3RoCiAgICAgICAgICAgICAgICAgaWYgImxlbmd0aCIgaW4gYnl0ZWNv
ZGU6CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVjb2RlWyJsZW5ndGgiXQorICAg
ICAgICAgICAgICAgIGVsaWYgIm9mZnNldHMiIGluIGJ5dGVjb2RlOgorICAgICAgICAgICAgICAg
ICAgICAjIEFkZCBvbmUgZm9yIHRoZSBvcGNvZGUKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gbGVuKGJ5dGVjb2RlWyJvZmZzZXRzIl0pICsgMQogCiAgICAgICAgICAgICAgICAgYnl0ZWNv
ZGVIRmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwgezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1l
Il0sIGxlbmd0aCkpCiAgICAgICAgICAgICAgICAgZmlyc3RNYWNybyA9IEZhbHNlCkBAIC0yMDEs
NiArMjQ5LDIwIEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICBieXRl
Y29kZUhGaWxlLndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUo
IiNkZWZpbmUgTlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3Jv
TmFtZUNvbXBvbmVudCJdLCBieXRlY29kZU51bSkpCiAKKworICAgICAgICBpZiBieXRlY29kZVN0
cnVjdHNIRmlsZW5hbWUgYW5kIHNlY3Rpb25bJ2VtaXRJblN0cnVjdHNGaWxlJ106CisgICAgICAg
ICAgICBieXRlY29kZVN0cnVjdHNIRmlsZS53cml0ZSgiI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2hcbiIpCisgICAgICAgICAgICBieXRlY29kZVN0cnVjdHNIRmlsZS53cml0ZSgiI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21pc3NpbmctZGVjbGFyYXRpb25zXCJcbiIp
CisgICAgICAgICAgICBieXRlY29kZVN0cnVjdHNIRmlsZS53cml0ZSgibmFtZXNwYWNlIEpTQyB7
XG4iKQorCisgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVzIl06
CisgICAgICAgICAgICAgICAgaWYgbm90ICJvZmZzZXRzIiBpbiBieXRlY29kZToKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB3cml0ZVN0cnVjdChieXRlY29k
ZVN0cnVjdHNIRmlsZSwgYnl0ZWNvZGUpCisKKyAgICAgICAgICAgIGJ5dGVjb2RlU3RydWN0c0hG
aWxlLndyaXRlKCJ9IC8vIG5hbWVzcGFjZSBKU0MgXG4iKQorICAgICAgICAgICAgYnl0ZWNvZGVT
dHJ1Y3RzSEZpbGUud3JpdGUoIiNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3BcblxuIikKKwog
ICAgICAgICBpZiBieXRlY29kZUhGaWxlbmFtZSBhbmQgc2VjdGlvblsnZW1pdE9wY29kZUlEU3Ry
aW5nVmFsdWVzSW5IRmlsZSddOgogICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAwCiAgICAgICAg
ICAgICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVzIl06CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAzNDk4N2JiNDc5OGIw
N2YzM2Q1N2YwNmM3MjFhNTk3ZWM2ZWE2MjRjLi4yYWMxMDZlNTM0MzYwNDBjZDJkYTBhNTE5YmNl
NTdmMGVjYjhlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJMTEludFNsb3dQYXRocy5o
IgogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlU3Ry
dWN0cy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
cy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCIKQEAgLTkxLDYgKzky
LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgTExJTlRfQkVHSU5f
Tk9fU0VUX1BDKCk7ICAgICAgICAgICAgICAgICAgICBcCiAgICAgTExJTlRfU0VUX1BDX0ZPUl9T
VFVCUygpCiAKKyNkZWZpbmUgTExJTlRfTkFNRURfT1Aob3BlcmFuZCkgKGV4ZWMtPnVuY2hlY2tl
ZFIob3BlcmFuZCkpCisjZGVmaW5lIExMSU5UX05BTUVEX09QX0Mob3BlcmFuZCkgKGV4ZWMtPnIo
b3BlcmFuZCkpCisKICNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBj
W2luZGV4XS51Lm9wZXJhbmQpKQogI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihw
Y1tpbmRleF0udS5vcGVyYW5kKSkKIApAQCAtMTIxNyw2ICsxMjIxLDc1IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkKICAgICBMTElOVF9FTkQoKTsK
IH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW4pCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBhdXRvKiBieXRlY29kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
T3BJdGVyYXRvck9wZW4qPihwYyk7CisgICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlID0gTExJTlRf
TkFNRURfT1AoYnl0ZWNvZGUtPml0ZXJhYmxlKCkpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9OQU1F
RF9PUChieXRlY29kZS0+aXRlcmF0b3IoKSkgPSBKU1ZhbHVlKCk7CisKKyAgICBpZiAoaXNKU0Fy
cmF5KGl0ZXJhdGVkVmFsdWUpKQorICAgICAgICBMTElOVF9OQU1FRF9PUChieXRlY29kZS0+aW5k
ZXgoKSkgPSBqc051bWJlcigwKTsKKyAgICBlbHNlCisgICAgICAgIExMSU5UX05BTUVEX09QKGJ5
dGVjb2RlLT5pbmRleCgpKSA9IEpTVmFsdWUoKTsKKworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9kb25lKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcmVpbnRlcnByZXRfY2FzdDxP
cEl0ZXJhdG9yTmV4dERvbmUqPihwYyk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IExMSU5UX05B
TUVEX09QKGJ5dGVjb2RlLT5pdGVyYXRvcigpKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFpdGVyYXRv
cikgeworICAgICAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gTExJTlRfTkFNRURfT1AoYnl0ZWNvZGUt
Pml0ZXJhYmxlKCkpLmpzVmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSBpbmRleCA9IExMSU5UX05B
TUVEX09QKGJ5dGVjb2RlLT5pbmRleCgpKS5qc1ZhbHVlKCk7CisgICAgICAgIGlmIChpc0pTQXJy
YXkoaXRlcmFibGUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0Fy
cmF5Kj4oaXRlcmFibGUpOworICAgICAgICAgICAgQVNTRVJUKGluZGV4LmlzVUludDMyKCkpOwor
ICAgICAgICAgICAgdW5zaWduZWQgYXJyYXlJbmRleCA9IGluZGV4LmFzVUludDMyKCk7CisgICAg
ICAgICAgICBMTElOVF9OQU1FRF9PUChieXRlY29kZS0+ZG9uZSgpKSA9IGpzQm9vbGVhbihhcnJh
eUluZGV4ID49IGFycmF5LT5sZW5ndGgoKSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X3ZhbHVlKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
T3BJdGVyYXRvck5leHRWYWx1ZSo+KHBjKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gTExJTlRf
TkFNRURfT1AoYnl0ZWNvZGUtPml0ZXJhdG9yKCkpLmpzVmFsdWUoKTsKKworICAgIGlmICghaXRl
cmF0b3IpIHsKKyAgICAgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IExMSU5UX05BTUVEX09QKGJ5dGVj
b2RlLT5pdGVyYWJsZSgpKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgaW5kZXggPSBMTElO
VF9OQU1FRF9PUChieXRlY29kZS0+aW5kZXgoKSkuanNWYWx1ZSgpOworICAgICAgICBpZiAoaXNK
U0FycmF5KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8
SlNBcnJheSo+KGl0ZXJhYmxlKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleC5pc1VJbnQzMigp
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFycmF5SW5kZXggPSBpbmRleC5hc1VJbnQzMigpOwor
ICAgICAgICAgICAgTExJTlRfTkFNRURfT1AoYnl0ZWNvZGUtPmluZGV4KCkpID0ganNOdW1iZXIo
YXJyYXlJbmRleCArIDEpOworICAgICAgICAgICAgTExJTlRfTkFNRURfT1AoYnl0ZWNvZGUtPnZh
bHVlKCkpID0gYXJyYXktPmdldEluZGV4KGV4ZWMsIGFycmF5SW5kZXgpOworICAgICAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jf
Y2xvc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNW
YWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBVTlVTRURf
UEFSQU0ocGMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAppbmRleCA4NGZiMDNlM2JmMzU1NmE3ODYzN2Y5ZmI0MTdkZWJhZDgzYzZjMThhLi5jMTk3N2Jm
OTljNWNjNzZlYWRmOGVjMDk1Zjk0MmY3ZDdiNWY5MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtMTA2LDYgKzEwNiwxMCBAQCBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYyk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1l
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbik7
CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZG9u
ZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRf
dmFsdWUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9j
bG9zZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCBmNTQwY2I5MzUyY2QwOTkyZTA0YjRhMGUwMmU0MjZjMGY3ZDg5NzRlLi5kY2Q4ZDQy
ZWIwNDA0NDI1NmMzZWFkNzdmNTE1NWQ4NzYxOTExMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjA0LDYgKzE2
MDQsMjYgQEAgX2xsaW50X29wX3NldF9mdW5jdGlvbl9uYW1lOgogICAgIGNhbGxPcGNvZGVTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQogICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9zZXRfZnVuY3Rpb25fbmFtZV9sZW5ndGgpCiAKK19sbGludF9vcF9pdGVyYXRv
cl9vcGVuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9p
dGVyYXRvcl9vcGVuX2xlbmd0aCkKKworX2xsaW50X29wX2l0ZXJhdG9yX25leHRfZG9uZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfaXRlcmF0b3JfbmV4dF9kb25lKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pdGVyYXRv
cl9uZXh0X2RvbmVfbGVuZ3RoKQorCitfbGxpbnRfb3BfaXRlcmF0b3JfbmV4dF92YWx1ZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfaXRlcmF0b3JfbmV4dF92YWx1ZSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaXRlcmF0
b3JfbmV4dF92YWx1ZV9sZW5ndGgpCisKK19sbGludF9vcF9pdGVyYXRvcl9jbG9zZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
aXRlcmF0b3JfY2xvc2UpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2l0ZXJhdG9yX2Nsb3Nl
X2xlbmd0aCkKKwogX2xsaW50X29wX2NhbGw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGFy
cmF5UHJvZmlsZUZvckNhbGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396501</attachid>
            <date>2020-04-14 22:53:38 -0700</date>
            <delta_ts>2020-04-14 23:06:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200414225337.patch</filename>
            <type>text/plain</type>
            <size>235683</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi42MDk4MGZmMzZhZjQyZGYy
MWU0MWEzY2RkMDcwZjc3MjE2N2RkOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTQgQEAKKzIwMjAtMDQtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24g
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBidWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJh
eUl0ZXJhdG9yTmV4dEhlbHBlcik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZUlEKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2
YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRp
b25Gb3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25XaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmguCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
IChKU0M6OmlzU3VidHlwZVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25D
b250YWlucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgIChK
U0M6OlN1cGVyU2FtcGxlclNjb3BlOjpyZWxlYXNlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
T3Blbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y05leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6Zm9yQWxsVmFsdWVzKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6Om51bWJlck9mVG1wcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6dG1wKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpqc0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6d2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNG
R1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5o
OgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om51bWJl
ck9mVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpvcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnZhcmlhYmxlQXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6Okxh
enlKU1ZhbHVlOjpzcGVjdWxhdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
bGlkYXRlLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Y2xvb3BTdGFjayk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjaGVja2VkUmV0dXJu
KToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q2FsbFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrcG9pbnRSZWFj
aGVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZv
cm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNs
b3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X2R1bXBfdmFsdWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKIDIwMjAtMDQtMTQgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlYnVnZ2VyOiBh
ZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBleHByZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNj
b25maWcKaW5kZXggNTJiNDZlY2M5ZTI4OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4uNWE5
YTBiNDQ0MTEwNzIzZDczOWEzMjUwMjg1ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54
Y2NvbmZpZwpAQCAtNDAsOCArNDAsOCBAQCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltzZGs9
bWFjb3N4Kl0gPSAtV2wsLW9yZGVyX2ZpbGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdDQ19Q
UkVGSVhfSEVBREVSID0gSmF2YVNjcmlwdENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BSSVZB
VEVfRVhURVJOID0gWUVTOwotT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVtLWhl
YWRlci1wcmVmaXg9dW5pY29kZS87Ci1PVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVk
KSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChpbmhl
cml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUv
OworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXpl
IC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhTID0g
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIgJChI
RUFERVJfU0VBUkNIX1BBVEhTKTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RB
TExfUEFUSCA9ICQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiMjUwMTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4MWNj
MjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIyMUIx
QTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyogSlNB
UElHbG9iYWxPYmplY3QuaCAqLzsgfTsKIAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8qIFdh
c21PcGNvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggKi87
IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNEODAw
NzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBE
RCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2Zp
bGVGb3IuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1v
ZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0NERD
MURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAv
KiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJD
IC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3NzdF
NDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JF
QzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYsOSBA
QAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlEIC8q
IFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdh
c21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgxRUE1
MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1
NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURl
Zi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVzZURl
Zi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAwMEFF
OTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7IHBh
dGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTNENDQ0REQxREFGMDlBMDAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUuY3Bw
OyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUwRTE3
QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJCQlD
MkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi8s
CiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaCAqLywKKwkJCQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVQ
cm9maWxlRm9yLmggKi8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2Rl
UmV3cml0ZXIuY3BwICovLAogCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29k
ZVJld3JpdGVyLmggKi8sCisJCQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2Rl
VXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVV
c2VEZWYuaCAqLywKIAkJCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNw
cCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBA
IC04MzE1LDYgKzgzMjIsNyBAQAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0
cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIElu
c3RydWN0aW9uU3RyZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIElu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4
MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBF
RUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3
MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5
IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBA
CiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAv
KiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVj
b2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJMEZE
MkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBp
biBIZWFkZXJzICovLAogCQkJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25L
aW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNB
MDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDExM0Q0
QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2JmNWJh
NWViZWYwZWM4Li5kMjc4YWViODFkNDEwYzRmNGZmMDBmYTY5ZDI2Y2E0OWZhNDJhNjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaApAQCAtNjg2LDYgKzY4NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0
YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3RlZElt
bTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dpY2Fs
SW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0ubV92
YWx1ZSk7CisgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAg
bG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3RlciwgbG9naWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgoZGF0
YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lzdGVy
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAg
ICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBvcjY0KGRlc3QsIHNyYywgZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggOGM2
OTc5YmI5YjJmZGViMDRjYTAyNmU3NjZkMjA4YjczYTA2M2YyZS4uMmExZGRlZGVlMzZkYmUzY2Rl
NTcyZjQ4NjA1YTQ2NGM4MGI2ZTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDgsNiArNDgsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpvcjE2OworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpvcjg7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bG9hZDMyOwpAQCAtOTYsNiArOTcsMTIgQEAgcHVibGljOgogICAg
ICAgICBvcjE2KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAg
IHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVn
aXN0ZXIoKSk7CisgICAgICAgIG9yOChpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsK
KyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDk5YThjMTkyM2Yy
NWU0NDExZDZiNGZmN2U3YTU5YjA1OTIzOGQ4M2UuLjk0YjM3ZmRhMWQxY2U2ZDcwYTc5MWU3YmE2
MWVmMjYzZDU5YTUzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCkBAIC00NiwyMSArNDYsMTkgQEAgZnVu
Y3Rpb24gYXJyYXlJdGVyYXRvck5leHRIZWxwZXIoYXJyYXksIGtpbmQpCiAgICAgdmFyIHZhbHVl
OwogCiAgICAgdmFyIGluZGV4ID0gQGdldEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMs
IEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCk7Ci0gICAgaWYgKGluZGV4ICE9PSAtMSkgewotICAg
ICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOwotICAgICAgICBpZiAoaW5kZXgg
PCBsZW5ndGgpIHsKLSAgICAgICAgICAgIEBwdXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0
aGlzLCBAYXJyYXlJdGVyYXRvckZpZWxkSW5kZXgsIGluZGV4ICsgMSk7Ci0gICAgICAgICAgICBk
b25lID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlvbktpbmRLZXkp
Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBpbmRleDsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbaW5kZXhdOwotICAgICAgICAgICAgICAgIGlmIChr
aW5kID09PSBAaXRlcmF0aW9uS2luZEVudHJpZXMpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gW2luZGV4LCB2YWx1ZV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgQHB1dEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBhcnJheUl0ZXJhdG9y
RmllbGRJbmRleCwgLTEpOwotICAgIH0KKyAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+
PiAwOworICAgIGlmIChpbmRleCA8IGxlbmd0aCkgeworICAgICAgICBAcHV0QXJyYXlJdGVyYXRv
ckludGVybmFsRmllbGQodGhpcywgQGFycmF5SXRlcmF0b3JGaWVsZEluZGV4LCBpbmRleCArIDEp
OworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIGlmIChraW5kID09PSBAaXRlcmF0aW9u
S2luZEtleSkKKyAgICAgICAgICAgIHZhbHVlID0gaW5kZXg7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdmFsdWUgPSBhcnJheVtpbmRleF07CisgICAgICAgICAgICBpZiAoa2luZCA9PT0g
QGl0ZXJhdGlvbktpbmRFbnRyaWVzKQorICAgICAgICAgICAgICAgIHZhbHVlID0gW2luZGV4LCB2
YWx1ZV07CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgQHB1dEFycmF5SXRlcmF0b3JJ
bnRlcm5hbEZpZWxkKHRoaXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCwgQE1BWF9TQUZFX0lO
VEVHRVIpOwogCiAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmUgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCBmYjM0OGI5MmRkMjYyM2Mw
NjUxZWZkMmU0YThjMGU4ZGUyMzdiMjAxLi45NDI2NTdjNjJmMDc0OWNhMDVjNGVlZTRkNjdiOTVm
ZTY0NTVkOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5oCkBAIC0yMDcsMTAgKzIwNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dE9mQm91
bmRzKCkgeyBtX291dE9mQm91bmRzID0gdHJ1ZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9m
Qm91bmRzKCkgeyByZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0KICAgICAKLSAgICB2b2lkIG9ic2Vy
dmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBtX2xhc3RT
ZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgfQorICAgIHZvaWQgb2JzZXJ2
ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCA9IHN0cnVjdHVyZUlEOyB9CisgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVy
ZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsg
fQogCiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgQ29kZUJsb2NrKik7CiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2Vl
blN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAxZjU2Njk0Y2U3MDBmZGViZTFmZGNiZDA0NGYyYTg3ZDA4OGY3ZWEyLi41
ODVjYzU4YzM3ZTg4Mzg2OWE0ZThjYWJjNjBmYmQ3ZTRiNTYyYWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTM0LDYgKzM0LDcgQEAg
dHlwZXMgWwogICAgIDpHZXRCeVZhbEhpc3RvcnksCiAgICAgOkdldFB1dEluZm8sCiAgICAgOklu
ZGV4aW5nVHlwZSwKKyAgICA6SXRlcmF0aW9uTW9kZU1ldGFkYXRhLAogICAgIDpKU0NlbGwsCiAg
ICAgOkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LAogICAgIDpKU0dsb2JhbE9iamVjdCwKQEAg
LTExNjIsNiArMTE2Myw2NCBAQCBvcCA6Z2V0X3Jlc3RfbGVuZ3RoLAogICAgICAgICBudW1QYXJh
bWV0ZXJzVG9Ta2lwOiB1bnNpZ25lZCwKICAgICB9CiAKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlz
IGl0ZXJhdG9yID0gc3ltYm9sSXRlcmF0b3IoaXRlcmFibGUpOyBuZXh0T3JJbmRleCA9IGl0ZXJh
dG9yLm5leHQ7CisjIEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93ZXZlciwgdGhpcyBoYXMgc3Bl
Y2lhbCBiZWhhdmlvciB3aGVyZSBpdGVyYXRvciBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZQorIyBh
bmQgbmV4dE9ySW5kZXggaXMgdGhlICJpbmRleCIgb2YgdGhlIGl0ZXJhdG9yIChpbnQgZm9yIGFy
cmF5cy9zdHJpbmdzIGFuZCBidWNrZXQgZm9yIG1hcC9zZXQpLgorb3AgOml0ZXJhdG9yX29wZW4s
CisgICAgYXJnczogeworICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAg
ICBuZXh0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0
YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0
ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxl
UHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExp
bmtJbmZvLAorICAgICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
bW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBuZXh0UHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAgICBpdGVyYXRvck9iamVj
dDogSlNWYWx1ZSwKKyAgICB9LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIHN5bWJvbENh
bGw6IG5pbCwKKyAgICAgICAgZ2V0TmV4dDogbmlsLAorICAgIH0KKworIyBTZW1hbnRpY2FsbHks
IHRoaXMgaXMgdG1wID0gbmV4dE9ySW5kZXguY2FsbChpdGVyYXRvcik7IGRvbmUgPSB0bXAuZG9u
ZTsgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogdG1wLnZhbHVlOworb3AgOml0ZXJhdG9yX25l
eHQsCisgICAgYXJnczogeworICAgICAgICBkb25lOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAg
IHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisg
ICAgbWV0YWRhdGE6IHsKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVN
ZXRhZGF0YSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2Rl
TWV0YWRhdGEsCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZh
bHVlTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3Vs
dDogSlNWYWx1ZSwKKyAgICAgICAgaXNEb25lOiBKU1ZhbHVlLAorICAgICAgICB2YWx1ZTogSlNW
YWx1ZSwKKyAgICB9LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBu
aWwsCisgICAgICAgIGdldERvbmU6IG5pbCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9
CisKIG9wIDp5aWVsZCwKICAgICBhcmdzOiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJl
Z2lzdGVyLApAQCAtMTI5MCw2ICsxMzQ5LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9j
YXRpb24KIG9wIDpvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9p
ZF9yZXR1cm5fbG9jYXRpb24KIG9wIDpvcF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3Ag
Om9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9y
ZXR1cm5fbG9jYXRpb24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5j
dGlvbl9wcm9sb2d1ZV9ub190bHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBk
OGZmNmM3OTg5NmFmZDAwZTIwY2M0Mjc3OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhk
NDQyMDQwOGNhYzUwYTM4ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIz
MSwxMyBAQCBCaXRtYXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2tw
b2ludChjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChP
cENhbGxWYXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJl
c3VsdC5zZXQoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODM1ODVjNzIxMjE3ZDRhZmVkNjZjZGJlMjdlMDdjNzNiODZlNGYxZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2Zp
bGVGb3IuaApAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgi
CisjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3Vy
ZSBvdXQgaGFzTWVtYmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0Fy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0
YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3Bv
aW50SW5kZXgpOworICAgIHJldHVybiAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVBy
b2ZpbGU7CisKKyAgICAvLyBJbnNlcnQgcGVyIG1ldGFkYXRhIG92ZXJyaWRlcyBoZXJlIHdoZW4g
d2UgbmVlZCB0aGVtLgorICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCeXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNBcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRh
ZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4g
YXJyYXlQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9m
aWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5k
ZXgpCit7CisgICAgQVNTRVJUKGhhc0FycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2lu
dEluZGV4KSk7CisgICAgcmV0dXJuICphcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVj
a3BvaW50SW5kZXgpOworfQorCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBv
dXQgaGFzTWVtYmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVl
UHJvZmlsZSogdmFsdWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwg
dW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVN
ZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2gg
KGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xD
YWxsOiByZXR1cm4gJm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9w
SXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7Cisg
ICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09
IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsK
KyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiAmbWV0YWRh
dGEubV9uZXh0UmVzdWx0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0
RG9uZTogcmV0dXJuICZtZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRl
cmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuICZtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAg
ICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSAKKyAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX3Byb2ZpbGU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc1ZhbHVlUHJvZmlsZUZv
cihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQor
eworICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5k
ZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9m
aWxlJiB2YWx1ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVk
IGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBBU1NFUlQoaGFzVmFsdWVQcm9maWxlRm9yKG1ldGFk
YXRhLCBjaGVja3BvaW50SW5kZXgpKTsKKyAgICByZXR1cm4gKnZhbHVlUHJvZmlsZUZvckltcGwo
bWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVj
b2RlPgorT3BlcmFuZCBkZXN0aW5hdGlvbkZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVu
c2lnbmVkIGNoZWNrcG9pbnRJbmRleCwgSklUVHlwZSB0eXBlID0gSklUVHlwZTo6Tm9uZSkKK3sK
KyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVu
KSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJ
dGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiBieXRlY29kZS5tX2l0ZXJhdG9yOworICAg
ICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gYnl0ZWNvZGUubV9uZXh0
OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNv
ZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVj
a3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6
IHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEpJVFR5cGU6OkRGR0pJVCB8fCB0eXBlID09IEpJ
VFR5cGU6OkRGR0pJVCkKKyAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmFuZDo6dG1wKE9wSXRl
cmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBieXRlY29kZS5tX3Zh
bHVlOyAvLyBXZSByZXVzZSB2YWx1ZSBhcyBhIHRlbXAgYmVjYXVzZSBpdHMgZWl0aGVyIG5vdCB1
c2VkIG9yIHdyaXR0ZW4gYXMgdGhlIHRlbXAgb2JqZWN0IGRpZXMuCisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2RlLm1fZG9uZTsK
KyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBieXRlY29kZS5t
X3ZhbHVlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAgICAgIHJldHVy
biBieXRlY29kZS5tX2RzdDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2NhdGlvbnMKKwor
dGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRm9yKGNv
bnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAg
IFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNv
ZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVy
biBieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5
dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAg
cmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVj
b2RlLm1fY2FsbGVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3Vuc2lnbmVk
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwg
dW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50
SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJh
dG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9y
T3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiBjb25z
dGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAg
IEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5t
X2FyZ2M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlmZl90IHN0YWNr
T2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWdu
ZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgp
OworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29w
ZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6
c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycyAtIGJ5dGVjb2RlLm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNlIGlmIGNvbnN0
ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAg
QVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOwor
ICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29k
ZS5tX2l0ZXJhdG9yLm9mZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNv
ZGUubV9hcmd2OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorTExJ
bnRDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0
YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3Bv
aW50SW5kZXgpOworICAgIHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1
NjI2YzEzLi5hNWE1MDdlZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAg
LTI1OSw2ICsyNTksOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmly
dHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAgVVNFUyhPcFlp
ZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9yT3Blbiwgc3lt
Ym9sSXRlcmF0b3IsIGl0ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQsIGl0ZXJhdG9y
LCBuZXh0LCBpdGVyYWJsZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkOgog
ICAgICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRo
U3ByZWFkPigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwgdGhyb3duVmFs
dWUpCiAKKyAgICBERUZTKE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkKKyAgICBERUZT
KE9wSXRlcmF0b3JOZXh0LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50ZXI6IHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0
b3IodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIyNTkxOTQ3NzY4
NTU3ZWE4N2E2NTdmMjNhNjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2OWU5NjM0MTc1
MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcApAQCAtNDAsMTggKzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxsTGlua0luZm86
OkNhbGxUeXBlIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7
Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFs
KQorICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdz
OgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAgICByZXR1
cm4gVGFpbENhbGxWYXJhcmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2Fz
ZSBvcF9jYWxsX2V2YWw6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDoKICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9wY29kZUlEID09
IG9wX2NhbGxfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgICAgICBy
ZXR1cm4gQ2FsbFZhcmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkKKwor
ICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0OwotICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY29uc3Ry
dWN0X3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwotICAgIGlmIChv
cGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAg
ICAgcmV0dXJuIFRhaWxDYWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxf
dmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwot
ICAgIHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
Q2FsbDsKIH0KIAogQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjEzZDE3MzRh
MDJjNThhMzIxNzU5MjVkMjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEzNzhhZWJlZjkw
MjU2ZjExNWVmMTdlM2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlua1N0YXR1cyBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBDb2RlQgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlua0luZm8gPSAm
aW5zdHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9j
YWxsTGlua0luZm87CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoK
KyAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4o
KS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5z
dHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1f
Y2FsbExpbmtJbmZvOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdlNjE2MGI2NTNl
N2E0ZTczMDRiMi4uYTRhN2M1YWFiZjA1NmIzODMxNDQ4NDE4ZjkxZGE4ODU0ZjdiYTdjNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5o
IgpAQCAtOTcsNiArOTgsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CiAKKwog
I2lmIEVOQUJMRShBU1NFTUJMRVIpCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIK
ICNlbmRpZgpAQCAtNTgzLDYgKzU4NSwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAg
ICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAK
KyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFMSVpF
X01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJn
dW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElBTEla
RV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFy
Z3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJ
WkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsNiArMTI0MCwzMyBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDE4CiAgICAgICAg
IC8vIFdlIG5lZWQgdG8gYWRkIG9wdGltaXphdGlvbnMgZm9yIG9wX3Jlc29sdmVfc2NvcGVfZm9y
X2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsIHRvIGRvIGxpbmsgdGltZSBzY29wZSByZXNvbHV0
aW9uLgogCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAoIW9sZFN0
cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigi
Q2xlYXJpbmcgaXRlcmF0b3Igb3BlbiBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAgICAg
ICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xl
YXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIH0p
OworCisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChh
dXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBjbGVhcklmTmVlZGVkID0gWyZdIChH
ZXRCeUlkTW9kZU1ldGFkYXRhJiBtb2RlTWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJ
RCA9IG1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAg
ICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCks
ICJDbGVhcmluZyBpdGVyYXRvciBuZXh0IExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOworICAg
ICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEp
OworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRh
KTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEyMzEsNyArMTI3NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50
SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVh
cC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQp
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRp
b25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0g
ICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEpOworICAgICAgICAgICAgTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENh
Y2hlKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsK
QEAgLTEzMjYsOSArMTM2OSwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGlu
ZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAgICAgICAgYXV0
byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkp
OwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7
Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAgICAgICAg
c3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcg
TExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShp
bnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAgICAg
ICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFy
TExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0
aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBpdGVy
YXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9k
ZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5leHQg
cHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBy
ZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95
aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4uCisgICAg
ICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5l
eHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFk
YXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1l
dGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAt
MzA0MSw2ICszMTAyLDExIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNF
CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9m
aWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwg
Ynl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoK
KyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1
ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2Rm
MzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6
OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlmIChtX21l
dGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZh
bHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAg
ICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklT
SVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4o
WyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVy
YWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRv
clByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmls
ZSwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9w
SXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1l
dGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0
YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5t
X3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9ICAgCiAKIH0KIApAQCAt
NjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3Qg
RnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJU0lUMgorCisgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAg
ICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4
YzIuLjI4MmNmOGY0MjdjMWZiZWFiMjk2YTM1ODNiMDc5OTQxZGExMGVmMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtODYsNiArODYs
MzUgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9wX2dldF9ieV92YWw6CiAg
ICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAgICBj
YXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hl
Y2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmls
ZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlm
IHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2FkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAgIGlmIChtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAg
cmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgc3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsK
KyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEo
cHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9
PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1f
ZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAg
ICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAg
ICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1l
cy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX3Zh
bHVlTW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAg
ICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1l
cy0+dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVs
dDogewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdldEJ5
U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggMDg1YWU4ZDE5OTc2Yjg4NmYwMDE5Zjg1ZmE2N2Iw
MmJlMTRjZGE1ZS4uM2Q3MGNkNTQzZWNmYWU5MDIyNTAyOTYwMWEwZDQwNWVjNjcxYjJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTMyLDcg
KzMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAg
dXNpbmcgT3Bjb2RlSUQgPSA6OkpTQzo6T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBP
cGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9w
Y29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRp
Y19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSk7CisgICAg
c3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJP
ZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3
aWRlMTYgPSBvcF93aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIg
PSBvcF93aWRlMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2Rl
TGVuZ3RocyA9IDo6SlNDOjpvcGNvZGVMZW5ndGhzOwpAQCAtNDEsNyArNDMsOSBAQCBzdHJ1Y3Qg
SlNPcGNvZGVUcmFpdHMgewogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcg
T3Bjb2RlSUQgPSBXYXNtT3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBu
dW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihO
VU1CRVJfT0ZfV0FTTV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2Rl
SUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQobnVt
YmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0
YWRhdGEpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gd2FzbV93aWRl
MTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3YXNtX3dpZGUzMjsK
ICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gd2Fz
bU9wY29kZUxlbmd0aHM7CkBAIC05OCwxMiArMTAyLDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3aWRl
MzI7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFp
dHM+CisgICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNX
aWRlMzI8VHJhaXRzPigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUzMjsK
KyAgICAgICAgcmV0dXJuIGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUxNiA6
IE9wY29kZVNpemU6Ok5hcnJvdzsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0
ZWNvZGVzV2l0aE1ldGFkYXRhOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0
cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZC
eXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3VudCgpIGNvbnN0
CiAgICAgewpAQCAtMTM3LDYgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUOjpk
ZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwogICAgIH0KIAor
ICAgIHRlbXBsYXRlPGNsYXNzIFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0cyA9
IEpTT3Bjb2RlVHJhaXRzPgorICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVCgoaXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIHJldHVybiBUKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2lnbmVkVHlwZSo+
KHRoaXMgKyAod2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7CisgICAgfQor
CiAgICAgdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+
CiAgICAgVCogY2FzdCgpCiAgICAgewpAQCAtMTYxLDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB7
CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KQEAgLTE2OSwx
NCArMTk0LDE2IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTMyPFRy
YWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bj
b2RlU2l6ZTo6V2lkZTMyPio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7Cisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJs
aWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2Yo
SW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBt
YXRoIik7CiAKIHN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdh
c21PcGNvZGVJRD4gewogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0g
MSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkNjkxOTMxYzZjNzk0OGU1NTdl
NGY1NjkyM2FlMzQ5MGZlYjllOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaApAQCAtMCwwICsxLDQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIEl0ZXJhdGlvbk1vZGUgOiB1aW50OF90
IHsKKyAgICBHZW5lcmljID0gMSA8PCAwLAorICAgIEZhc3RBcnJheSA9IDEgPDwgMSwKK307CisK
K2NvbnN0ZXhwciB1aW50OF90IG51bWJlck9mSXRlcmF0aW9uTW9kZXMgPSAyOworCitPVkVSTE9B
RF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVSR1JBTFMoSXRlcmF0
aW9uTW9kZSk7CisKK3N0cnVjdCBJdGVyYXRpb25Nb2RlTWV0YWRhdGEgeworICAgIHVpbnQ4X3Qg
c2Vlbk1vZGVzIHsgMCB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHNlZW5N
b2RlcykpID09IHNpemVvZihJdGVyYXRpb25Nb2RlKSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHAKaW5kZXggMmQxNDNiOWNmNjc0MzA1ZDQwYzkxZWIwYWUzNTEzMzEyNTY5NDQxZi4u
YmJlMWY2N2ZmYmVmZThlOGJiMTM2N2ViNmM3ZWQ2N2NiYWE4YWI4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTYw
LDE0ICs2MCwzMSBAQCB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRgogICAgIH0KIAogICAgIGF1dG8m
IGluc3RydWN0aW9uID0gbV9vd25lci0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZU9mZnNl
dC5nZXQoKSk7Ci0gICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BH
ZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpKTsKKyAgICBzd2l0Y2ggKGluc3RydWN0
aW9uLT5vcGNvZGVJRCgpKSB7CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNsZWFy
TExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSht
X293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21v
ZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0
OiB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JO
ZXh0PigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpOworICAgICAgICBjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BH
ZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEpCit2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9k
ZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICAvLyBLZWVwIGhpdENvdW50Rm9yTExJbnRDYWNo
aW5nIHZhbHVlLgotICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9k
ZVdpdGhvdXRDYWNoZSgpOworICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRD
YWNoZSgpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDIyMGZmZjNlM2JmNTQz
NDFlOTYxYzgyZGY4YzRlOGM5MDAwNzM0YmUuLjFkNTk1N2VmZjgxMDkyYTFkYWJkZWU1MDI1Y2Fj
NWU2ZjM4Njc4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBp
bnN0YWxsKFZNJik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKE9w
R2V0QnlJZDo6TWV0YWRhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENh
Y2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmKTsKIAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggMTg1MWI2M2M3Y2E2YWVmMmZiMzZiZjJmODdlOTJh
MTllMGQ0MGMxOC4uYWE4ODU5YWRkNjI4NjBmZmRhZGI0ZDIyMjg3YzM0YjA3Y2U1YjMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTQ4LDYgKzE0OCw5IEBA
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBX
VEY6OmdldE1TQlNldENvbnN0ZXhwcihtCiAgICAgbWFjcm8oT3BUYWlsQ2FsbCkgXAogICAgIG1h
Y3JvKE9wQ2FsbEV2YWwpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorICAgIG1hY3JvKE9w
SXRlcmF0b3JPcGVuKSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck5leHQpIFwKKwogCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZDc2ZDRmYTdiNDZl
OThiOWY5NzAwZGMzODYzMGY0Li45NDY1OGIwOTZiZjE5M2M4N2NmZDcxYTlmNWJkZTE1ZjYxMzMy
YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaApAQCAtMTIwLDYgKzEyMCwxNiBAQCBpbmxpbmUgYm9vbCBpc0FueVNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlKQogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9vbCBpc1N1YnR5
cGVTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdv
cnkpCit7CisgICAgcmV0dXJuICEodmFsdWUgJiB+Y2F0ZWdvcnkpICYmIHZhbHVlOworfQorCitp
bmxpbmUgYm9vbCBzcGVjdWxhdGlvbkNvbnRhaW5zKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVj
dWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBjYXRlZ29yeSkg
JiYgdmFsdWU7Cit9CisKIGlubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQogewogICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNDZWxsKSAmJiAhKHZhbHVl
ICYgflNwZWNDZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdXBlclNhbXBsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNh
bXBsZXIuaAppbmRleCA5NjEwZGNlNWNkYmMzZWMwOWNlMzNiMWQ2YmNjNGIzZmY4YTZjM2M4Li5l
OWJmOTUzMWY3YmE1OTU3MzExMGUzMWE3YTQ0Y2QyMjhiNzU3MTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC00OCw2ICs0OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CiAgICAgfQogCisgICAg
dm9pZCByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvU2FtcGxlKTsKKyAgICAg
ICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOworICAgICAgICBtX2RvU2FtcGxlID0gZmFsc2U7Cisg
ICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgbV9kb1NhbXBsZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDYzZDM2MmNhYzE5ZDQ5Mzk4OTQ3NzdiZWRhN2MwYWMyZDYzNjA2M2YuLjhmZWRlNjJi
NTMwZWJkMTAxZmVkYTYxYWJhYjk0OWEzZjNiMzU5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00
MDE2LDE0ICs0MDE2LDE1IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4
Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25z
dCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNh
bGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9s
VGFibGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCop
PiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BT
eW1ib2xUYWJsZSkKIHsKICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9kZSA/IGZvckxv
b3BOb2RlLT5pc0ZvckF3YWl0KCkgOiBmYWxzZTsKLSAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwg
KGlzRm9yQXdhaXQgJiYgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkpOwor
ICAgIGF1dG8gc2hvdWxkRW1pdEF3YWl0ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDog
RW1pdEF3YWl0OjpObzsKKyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0aW9u
UGFyc2VNb2RlKHBhcnNlTW9kZSgpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVj
dCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3RO
b2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1p
dEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3Io
c3ViamVjdC5nZXQoKSwgbm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0g
aXNGb3JBd2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpIDog
ZW1pdEdldEdlbmVyaWNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVy
YXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgUmVmPExhYmVsPiBsb29w
RG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00MTMwLDcgKzQxMzEsNyBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4
cHJlc3NpbwogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEl0ZXJhdG9y
TmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUs
IGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAg
ICAgZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCks
IGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwogCiAgICAgICAgICAgICBl
bWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdEdl
dEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpA
QCAtNDE0Myw3ICs0MTQ0LDE0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVy
YXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAgICBw
b3BGaW5hbGx5Q29udHJvbEZsb3dTY29wZSgpOwogICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91
bmQpIHsKICAgICAgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVk
IGNvbnRyb2wgZmxvdy4KLSAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdl
dCgpLCBub2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vKTsK
KyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9k
ZSwgc2hvdWxkRW1pdEF3YWl0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbWl0TGFiZWwobG9v
cERvbmUuZ2V0KCkpOworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJh
dGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1Ympl
Y3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBm
b3JMb29wU3ltYm9sVGFibGUpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRy
aW5zaWNzKCkgfHwgaXMzMkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNG
b3JBd2FpdCgpKSkgeworICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1Ympl
Y3ROb2RlLCBjYWxsQmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmFibGUgPSBu
ZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0Tm9kZShpdGVyYWJsZS5nZXQoKSwgc3ViamVjdE5vZGUp
OworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yU3ltYm9sID0gZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIGl0ZXJhYmxlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JT
eW1ib2wpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0T3JJbmRleCA9IG5ld1RlbXBvcmFy
eSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG5ld1RlbXBvcmFyeSgpOwor
ICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgbW92ZShhcmdz
LnRoaXNSZWdpc3RlcigpLCBpdGVyYWJsZS5nZXQoKSk7CisgICAgZW1pdEl0ZXJhdG9yT3Blbihp
dGVyYXRvci5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIGl0ZXJhdG9yU3ltYm9sLmdldCgpLCBh
cmdzLCBub2RlKTsKKworICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAg
IFJlZjxMYWJlbD4gdHJ5U3RhcnRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBm
aW5hbGx5VmlhVGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5
TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xhYmVs
KCk7CisgICAgUmVmPExhYmVsPiBlbmRDYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHZh
bHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIFJlZlB0cjxSZWdpc3RlcklEPiBp
dGVyYXRvcidzIGxpZmV0aW1lIG11c3QgYmUgbG9uZ2VyIHRoYW4gSXRlcmF0b3JDbG9zZUNvbnRl
eHQuCisgICAgRmluYWxseUNvbnRleHQgZmluYWxseUNvbnRleHQoKnRoaXMsIGZpbmFsbHlMYWJl
bC5nZXQoKSk7CisgICAgcHVzaEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKGZpbmFsbHlDb250ZXh0
KTsKKworICAgIHsKKyAgICAgICAgUmVmPExhYmVsU2NvcGU+IHNjb3BlID0gbmV3TGFiZWxTY29w
ZShMYWJlbFNjb3BlOjpMb29wKTsKKworICAgICAgICBSZWY8TGFiZWw+IGxvb3BTdGFydCA9IG5l
d0xhYmVsKCk7CisgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICBl
bWl0TGFiZWwoKnNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKKyAgICAgICAgZW1pdExvb3BIaW50
KCk7CisKKyAgICAgICAgaWYgKGZvckxvb3BOb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChmb3JMb29wTm9kZS0+aXNGb3JPZk5vZGUoKSk7CisgICAgICAgICAgICBwcmVwYXJlTGV4
aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1i
b2xUYWJsZSk7CisgICAgICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBkb25lID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRB
cmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICAgICAgICAgIG1vdmUobmV4dEFyZ3MudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4
dChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgaXRlcmFibGUuZ2V0KCksIG5leHRPckluZGV4Lmdl
dCgpLCBuZXh0QXJncywgbm9kZSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShkb25lLmdl
dCgpLCBsb29wRG9uZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwodHJ5
U3RhcnRMYWJlbC5nZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBwdXNoVHJ5KHRy
eVN0YXJ0TGFiZWwuZ2V0KCksIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpLCBIYW5kbGVyVHlw
ZTo6U3ludGhlc2l6ZWRGaW5hbGx5KTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMsIHZhbHVlLmdl
dCgpKTsKKyAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAvLyBJ
dGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBhYnJ1cHQgY29tcGxldGlvbnMuCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIEZpbmFsbHkgYmxvY2sgZm9yIHRoZSBlbnVtZXJhdGlvbi4KKyAgICAg
ICAgICAgIGVtaXRMYWJlbChmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAg
ICBwb3BUcnkodHJ5RGF0YSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAg
ICAgICBSZWY8TGFiZWw+IGZpbmFsbHlCb2R5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZpbmFsbHlFeGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBv
cmFyeSgpOworCisgICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZmluYWxs
eUNvbnRleHQuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgZmluYWxseUNvbnRleHQuY29tcGxl
dGlvblR5cGVSZWdpc3RlcigpLCB0cnlEYXRhKTsKKyAgICAgICAgICAgIG1vdmUoZmluYWxseUV4
Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdp
c3RlcigpKTsKKyAgICAgICAgICAgIGVtaXRKdW1wKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOwor
CisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAg
IG1vdmVFbXB0eVZhbHVlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAg
ICAgICAgIC8vIEZpbmFsbHkgZmFsbCB0aHJvdWdoIGNhc2UuCisgICAgICAgICAgICBlbWl0TGFi
ZWwoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICByZXN0b3JlU2NvcGVSZWdp
c3RlcigpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlEb25lID0gbmV3TGFiZWwo
KTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJl
dHVybktleXdvcmQpOworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVk
KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7
CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOworICAg
ICAgICAgICAgVHJ5RGF0YSogcmV0dXJuQ2FsbFRyeURhdGEgPSBwdXNoVHJ5KHJldHVybkNhbGxU
cnlTdGFydC5nZXQoKSwgY2F0Y2hMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVk
Q2F0Y2gpOworCisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhp
cywgbnVsbHB0cik7CisgICAgICAgICAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCks
IHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMs
IG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVi
dWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2Jq
ZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKyAg
ICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiJfcyk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5RG9u
ZS5nZXQoKSk7CisgICAgICAgICAgICBlbWl0RmluYWxseUNvbXBsZXRpb24oZmluYWxseUNvbnRl
eHQsIGVuZENhdGNoTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBwb3BUcnkocmV0dXJuQ2Fs
bFRyeURhdGEsIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgLy8gQ2F0Y2ggYmxv
Y2sgZm9yIGV4Y2VwdGlvbnMgdGhhdCBtYXkgYmUgdGhyb3duIHdoaWxlIGNhbGxpbmcgdGhlIHJl
dHVybgorICAgICAgICAgICAgLy8gaGFuZGxlciBpbiB0aGUgZW51bWVyYXRpb24gZmluYWxseSBi
bG9jay4gVGhlIG9ubHkgcmVhc29uIHdlIG5lZWQgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2gg
YmxvY2sgaXMgYmVjYXVzZSBpZiBlbnRlcmVkIHRoZSBhYm92ZSBmaW5hbGx5IGJsb2NrIGR1ZSB0
byBhIHRocm93bgorICAgICAgICAgICAgLy8gZXhjZXB0aW9uLCB0aGVuIHdlIHdhbnQgdG8gcmUt
dGhyb3cgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBvbiBleGl0aW5nCisgICAgICAgICAgICAvLyB0
aGUgZmluYWxseSBibG9jay4gT3RoZXJ3aXNlLCB3ZSdsbCBsZXQgYW55IG5ldyBleGNlcHRpb24g
cGFzcyB0aHJvdWdoLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChj
YXRjaExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBl
eGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRP
dXRPZkxpbmVGaW5hbGx5SGFuZGxlcihleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNv
bnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCByZXR1cm5DYWxsVHJ5RGF0YSk7CisgICAg
ICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBhIHN5bnRoZXNpemVkIGNhdGNoIGJsb2NrIGFu
ZCB3ZSdyZSBndWFyYW50ZWVkIHRvIG5ldmVyIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byBy
ZXNvbHZlIGFueSBzeW1ib2xzIGZyb20gdGhlIHNjb3BlLCB3ZSBjYW4gc2tpcCByZXN0b3Jpbmcg
dGhlIHNjb3BlCisgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaGVyZS4KKworICAgICAgICAg
ICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzRW1wdHkobmV3VGVtcG9yYXJ5KCksIGZpbmFsbHlFeGNl
cHRpb25SZWdpc3Rlci5nZXQoKSksIHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAg
IG1vdmUoZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5n
ZXQoKSk7CisKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAg
ICAgICAgICAgICAgIGVtaXRMYWJlbChlbmRDYXRjaExhYmVsLmdldCgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgYnJlYWtMYWJlbElzQm91bmQgPSBzY29wZS0+
YnJlYWtUYXJnZXRNYXlCZUJvdW5kKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkK
KyAgICAgICAgICAgIGVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CisgICAgICAgIHBv
cEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3Vu
ZCkgeworICAgICAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQg
Y29udHJvbCBmbG93LgorICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJh
dG9yLmdldCgpLCBub2RlLCBFbWl0QXdhaXQ6Ok5vKTsKICAgICAgICAgfQogICAgIH0KICAgICBl
bWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwpAQCAtNDI2NSw1NiArNDQwNCw2IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYykKICAgICBPcElzRW1wdHk6OmVtaXQodGhpcywgZHN0LCBzcmMpOwogICAgIHJl
dHVybiBkc3Q7CiB9Ci0gICAgCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lz
dGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1p
dEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0
QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhv
ZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2Rl
LT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0K
LSAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICAgICAg
ZW1pdEF3YWl0KGRzdCk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNP
YmplY3QgPSBuZXdMYWJlbCgpOwotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3Qo
bmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiJfcyk7Ci0gICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgIH0KLSAg
ICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRo
b2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRz
IG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOwotICAgICAgICBtb3ZlKG5leHRBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1l
bnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBu
ZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90
KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6
Ok5vKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZHN0OwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICBS
ZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1
cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5
TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmlu
ZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOwotCi0g
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgQ2FsbEFy
Z3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgIG1vdmUocmV0dXJu
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgZW1pdENhbGwodmFsdWUu
Z2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1
bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQo
KSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdh
aXQ6OlllcykKLSAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKLQotICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdl
dCgpKTsKLSAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2Ug
aXMgbm90IGFuIG9iamVjdC4iX3MpOwotICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKLX0KIAog
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQq
IGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIpCiB7CkBAIC00NTU1LDcg
KzQ2NDQsMzUgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVySUQq
IHZhbHVlKQogICAgIG1vdmUodmFsdWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJ
RCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0
ZXJJRCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1l
bnRzJiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7Cisg
ICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJl
Z2lzdGVySUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9y
T3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3
VGVtcG9yYXJ5KCkpOworCisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAg
IGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkp
OworCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3Rh
cnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck9wZW46OmVtaXQodGhpcywg
aXRlcmF0b3IsIG5leHRPckluZGV4LCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhYmxlLnN0YWNrT2Zmc2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVl
LCBSZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1
bWVudHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sK
KyAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8
UmVnaXN0ZXJJRD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0
b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChu
ZXdUZW1wb3JhcnkoKSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAg
ICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQo
KSk7CisKKyAgICBlbWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RT
dGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yTmV4dDo6ZW1pdCh0aGlz
LCBkb25lLCB2YWx1ZSwgaXRlcmFibGUsIG5leHRPckluZGV4LCBpdGVyYXRvci50aGlzUmVnaXN0
ZXIoKSwgaXRlcmF0b3Iuc3RhY2tPZmZzZXQoKSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
aXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5
TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgZW1pdENhbGxJdGVyYXRvcihpdGVyYXRvci5n
ZXQoKSwgYXJndW1lbnQsIG5vZGUpOwpAQCAtNDU2Myw2ICs0NjgwLDU3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZUV4CiAgICAgcmV0dXJuIGl0ZXJhdG9yLmdldCgpOwogfQogCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sK
KyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0
cik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Ip
OworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
bmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGlmIChkb0VtaXRBd2Fp
dCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOworICAgIH0K
KyAgICB7CisgICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0
eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICBlbWl0TGFi
ZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKworUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZh
bHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygq
dGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdp
c3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RT
dGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgIH0KKwor
ICAgIHJldHVybiBkc3Q7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICBSZWY8TGFiZWw+
IGRvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2Qg
PSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5y
ZXR1cm5LZXl3b3JkKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVt
cG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOworCisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyBy
ZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgIG1vdmUocmV0dXJuQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJl
dHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5v
ZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdn
YWJsZUNhbGw6Ok5vKTsKKworICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykK
KyAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKKworICAgIGVtaXRKdW1wSWZUcnVlKGVt
aXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKKyAg
ICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iX3MpOworICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKK30KKworCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCog
YXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVu
dCwgcHJvcGVydHlOYW1lcygpLmFzeW5jSXRlcmF0b3JTeW1ib2wpOwpAQCAtNDU3NSw3ICs0NzQz
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9y
KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKICAgICBlbWl0SnVtcChhc3luY0l0ZXJhdG9y
Rm91bmQuZ2V0KCkpOwogICAgIGVtaXRMYWJlbChhc3luY0l0ZXJhdG9yTm90Rm91bmQuZ2V0KCkp
OwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEl0ZXJh
dG9yKGFyZ3VtZW50LCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0
b3IgPSBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICBtb3ZlKGl0
ZXJhdG9yLmdldCgpLCBjb21tb25JdGVyYXRvci5nZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwpAQCAtNDYwNCw3ICs0NzcyLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGUKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdU
ZW1wb3JhcnkoKTsKICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9
IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/
IGVtaXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihh
cmd1bWVudCwgbm9kZSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVt
aXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0
b3IoYXJndW1lbnQsIG5vZGUpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhv
ZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLm5leHQpOwogCiAgICAgICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgp
OwpAQCAtNDY0Miw3ICs0ODEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAg
ICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jhcnko
KSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKIAogICAgICAg
ICAgICAgICAgICAgICBFbWl0QXdhaXQgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlID0gcGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gRW1pdEF3
YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOwotICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0
b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdl
dCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwogCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZl
IGEgJ3Rocm93JyBtZXRob2QuIl9zKTsKIApAQCAtNDcwMyw3ICs0ODcxLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW1pdExhYmVsKG5l
eHRFbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUo
dmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQo
KSwgbm9kZSk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSh2
YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgp
LCBub2RlKTsKIAogICAgICAgICAgICAgZW1pdExhYmVsKGJyYW5jaE9uUmVzdWx0LmdldCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IGQ1MzRjZDgyOGFhYzNkMTQwYjRmNDZjODY4NzY4MDkxNGUwZGUz
MjUuLjZiNzA4ZTk2YWIxNDYwZGE2YTBhZTBjYjk1MzY4YTc5ZGNmOGVmZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTgyOCw2ICs4MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVy
dHlOYW1lUmVnaXN0ZXIsCiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVu
c2lnbmVkIG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKKyAgICAgICAgdm9pZCBl
bWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlv
bk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2Rl
KiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwog
ICAgICAgICB2b2lkIGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51
bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZv
ck9mTm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxs
cHRyKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0VGVtcGxhdGVPYmplY3QoUmVnaXN0
ZXJJRCogZHN0LCBUYWdnZWRUZW1wbGF0ZU5vZGUqKTsKQEAgLTg5OCw5ICs4OTksMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Rlcml2ZWRBcnJheShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBEZXJpdmVkQXJyYXlUeXBlKTsgfQogICAgICAgICB2b2lkIGVtaXRSZXF1aXJl
T2JqZWN0Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yKTsK
IAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0
OjpObyk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRv
ciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
KTsKLSAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2Fp
dDo6Tm8pOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRvciwg
Q2FsbEFyZ3VtZW50cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7
CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25lLCBSZWdpc3Rl
cklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4
LCBDYWxsQXJndW1lbnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
KTsKKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVy
SUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsK
KworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25z
dCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVt
aXRBd2FpdDo6Tm8pOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4
dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lz
dGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUpOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShS
ZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUs
IEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRS
ZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1Rv
U2tpcCk7CiAKQEAgLTk1MCw5ICs5NTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0UHVzaENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICB2b2lk
IGVtaXRQb3BDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVy
SUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotCiAgICAgICAgIHZvaWQgZW1pdEF3YWl0
KFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IGQ0ZmRiNGRkNTRkNDkyZjkwZDJkNzIxZmQ3ZGFjMTJmZjdkMmY4NTAuLjJiMTVjYWE0
NzEzYTg4NTY1YzRjZDA5NTI2ZjkwYzI0NWY2M2EwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ1NzIsNyArNDU3
Miw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4
dE1ldGhvZCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGl0ZXJhdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAg
aWYgKG1fdGFyZ2V0UGF0dGVybnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00NTg4LDcgKzQ1ODgsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCks
IGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0
b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVy
aWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhp
cyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUu
Z2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ2MjQsNyArNDYyNCw3
IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwobG9vcFN0YXJ0LmdldCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdl
dCgpLCB0aGlzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4
dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00NjQyLDcgKzQ2NDIsNyBAQCB2b2lk
IEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiByaHMpCiAKICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0
KCksIGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xv
c2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5l
cmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
aXRlcmF0b3JDbG9zZWQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMGE0YTEx
ZjliNDBlNmIxM2M1OTY0MjI4ZTQxMTI4OWYxZDllZTg2Ni4uMThkYWUwMDRjNzIyY2Q2ZmRjZjg5
MTJiYzVjNDIxM2E0MzFiMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDM5OCwxMCArNDM5
OCw4IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFs
bFZhbHVlcygKICAgICAgICAgICAgICAgICBmdW5jdG9yKGZvck5vZGUobm9kZSkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mQXJndW1lbnRz
KCk7IGktLTspCi0gICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hcmd1bWVudChpKSk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKLSAgICAgICAgZnVu
Y3RvcihtX3N0YXRlLmxvY2FsKGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5zaXpl
KCk7IGktLTspCisgICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hdEluZGV4KGkpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDg5N2M3MGRmZmJhMDY2
YjY0OWNhZmRjYzFlZjA5MzM3NjgxMDRkMTMuLjQzOGUxNmRlODU5NTkyNTRkOTU1NzIxYjZmMDhk
Yjk1ODE0ZmQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRU
YWlsQWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRU
YWlsQWJzdHJhY3RTdGF0ZS5oCkBAIC0xMzcsMTEgKzEzNywxNSBAQCBwdWJsaWM6CiAgICAgICAg
IG1ha2VIZWFwVG9wRm9yTm9kZShlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAorICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyB9
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
LT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJl
ck9mTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9m
TG9jYWxzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBt
X2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCk7IH0KKyAgICBBYnN0cmFjdFZhbHVl
JiBhdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmF0
KGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKSB7
IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKTsgfQogICAgIEFi
c3RyYWN0VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVz
QXRUYWlsLmxvY2FsKGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVf
dCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGluZGV4KTsg
fQorICAgIEFic3RyYWN0VmFsdWUmIHRtcChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2st
PnZhbHVlc0F0VGFpbC50bXAoaW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3RydWN0
dXJlcygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCAwOTk3YmFiMDUyNTI2NGU2ZjE2NDg1NDI0MmQ5NGNlM2I1N2UzNmRj
Li5kMDEwZWUxMjdkZjRlYWYzY2U3ZDIzMDJlMzI1NmFjOTcwMTYxMTU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxl
Rm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJ
ZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC0xNTcs
NyArMTU4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEhlbHBlciBmb3IgbWluIGFuZCBtYXguCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZU1pbk1h
eChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVU
eXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAKICAgICB2b2lkIHJl
ZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0KTsKICAgICAv
LyBCbG9ja3MgY2FuIGVpdGhlciBiZSB0YXJnZXRhYmxlIChpLmUuIGluIHRoZSBtX2Jsb2NrTGlu
a2luZ1RhcmdldHMgb2Ygb25lIElubGluZVN0YWNrRW50cnkpIHdpdGggYSB3ZWxsLWRlZmluZWQg
Ynl0ZWNvZGVCZWdpbiwKQEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEhhbmRs
ZSBjYWxscy4gVGhpcyByZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5saW5pbmcgYW5kIGlu
dHJpbnNpY3MuCiAgICAgZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5hbCB9
OwogICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSwKKyAgICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgTm9kZSog
Y2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIENhbGxMaW5rU3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xODgsMjcgKzE4OSwyNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5l
ZWRlZCk7CiAgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBV
SU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24s
IGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJl
dHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNh
bGwuCi0gICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUs
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIg
YXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2Fs
bE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGlu
aW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtT
dGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQs
IFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zm
c2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAgICAgdW5zaWdu
ZWQgZ2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCk7CiAgICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0
aW1pemVkVG9KdW1wLCBJbmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlv
blJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJl
Z2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRl
Y29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwotICAgIENhbGxPcHRpbWl6
YXRpb25SZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNh
bGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgQ2FsbE9wdGlt
aXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdp
c3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNv
ZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxsT3B0aW1pemF0
aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJl
c3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxS
ZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0
ZWNvZGVJbmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGVja3NGdW5jdG9yPgotICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJh
c2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFu
ZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAv
LyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVk
LCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxs
ZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJ
bnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYywgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZURPTUpJ
VENhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIE9w
ZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVy
KE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlk
VmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rv
cj4KLSAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9w
ZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+Ci0gICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVk
IGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFu
ZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAg
ICBib29sIGhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBH
ZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZURPTUpJVEdldHRl
cihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAg
ICAgYm9vbCBoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyk7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBCeXRlY29kZT4KQEAgLTMxOCwxNSArMzE5LDE1IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBnZXRMb2NhbE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAgIE5vZGUqIGdl
dChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVyYW5k
KQogICAgIHsKICAgICAgICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdpc3Rl
cigpLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1f
Y29uc3RhbnRzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNp
emUgfHwgIW1fY29uc3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgY29u
c3QgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7
Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChv
cGVyYW5kKTsKLSAgICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNl
Q29kZVJlcHJlc2VudGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxv
Y2suZ2V0Q29uc3RhbnQob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAg
ICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNv
ZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1YWxS
ZWdpc3RlcigpKTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXpl
KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3RhbnRJbmRleCAr
IDEpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwg
bV9jb25zdGFudHMuc2l6ZSgpOyArK2kpCkBAIC0zNDcsMTAgKzM0OCwxMCBAQCBwcml2YXRlOgog
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lKCktPmlzQ2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9u
KiBjYWxsZWUgPSBpbmxpbmVDYWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpCisg
ICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlNDb25zdGFudChj
YWxsZWUpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zmc2V0
KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBpZiAob3BlcmFu
ZCA9PSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewogICAgICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRo
aXMgZW5hYmxlcyBDcmVhdGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQg
d2UgZG9uJ3QgaGF2ZSBzdWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1
c2VzIG9mIENhbGxlZSwgc2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUg
ZnVuY3Rpb24gaXMgYSBzaW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00MTAs
NyArNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNocmluaygwKTsK
ICAgICB9CiAKLSAgICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZh
bHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0KE9wZXJhbmQg
b3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7
CiAgICAgICAgIHJldHVybiBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5k
KG9wZXJhbmQpLCB2YWx1ZSwgc2V0TW9kZSk7CiAgICAgfQpAQCAtNjkxLDE1ICs2OTIsMjAgQEAg
cHJpdmF0ZToKICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAorICAgIE5vZGUq
IGpzQ29uc3RhbnQoRnJvemVuVmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1ZSkpOworICAg
IH0KKwogICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJlIHN0cm9uZ2x5
IG1hcmtlZC4KICAgICBOb2RlKiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBo
LmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFu
dChtX2dyYXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgTm9k
ZSogd2Vha0pTQ29uc3RhbnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNvbnN0
YW50VmFsdWUpKSk7CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGNv
bnN0YW50VmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldC9z
ZXQgdGhlIHRoaXMgdmFsdWUuCkBAIC04NTAsNyArODU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAg
ICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwg
T3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9m
ZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAg
IGlmIChvcCA9PSBUYWlsQ2FsbCkgewpAQCAtOTU5LDcgKzk2NSwzMyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAgIH0K
LSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGEgdHJ1ZSBib3R0b20gdmFs
dWUgZm9yIGV4YW1wbGUgYW55IG9iamVjdCBzcGVjdWxhdGlvbiB3aWxsIG5vdyBiZSBPYmplY3R8
T3RoZXIgYXMgdGhpcyByZXR1cm5zIG51bGwuCisgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzIHdo
ZW4gd2UgY2FuIGFsbG9jYXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAgRnJvemVuVmFs
dWUqIGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSBzcGVjKQor
ICAgIHsKKyAgICAgICAgaWYgKGlzU3VidHlwZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNPdGhlcikp
CisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisgICAgICAg
IGlmIChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjQm9vbGVhbikpCisgICAgICAgICAg
ICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNCb29sZWFuKHRydWUpKTsKKworICAgICAgICBpZiAo
aXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY0Z1bGxOdW1iZXIpKQorICAgICAgICAgICAg
cmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVtYmVyKDApKTsKKworICAgICAgICBpZiAoaXNTdWJ0
eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gbV9n
cmFwaC5mcmVlemUobV92bS0+YmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworCisgICAgICAgIGlm
IChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCkpCisg
ICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUobV92bS0+c21hbGxTdHJpbmdzLmVtcHR5
U3RyaW5nKCkpOworCisgICAgICAgIGlmIChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVj
Q2VsbE90aGVyIHwgU3BlY09iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVl
emUoanNOdWxsKCkpOworCisgICAgICAgIEFTU0VSVChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVj
LCBTcGVjRW1wdHkpIHx8IHNwZWMgPT0gU3BlY05vbmUpOworICAgICAgICByZXR1cm4gbV9ncmFw
aC5mcmVlemUoSlNWYWx1ZSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2Rl
KEFycmF5OjpBY3Rpb24gYWN0aW9uKQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2s7CkBAIC0xMTc0LDcgKzEyMDYs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBPcHRpb25hbDogYSBjb250aW51YXRpb24gYmxvY2sg
Zm9yIHJldHVybnMgdG8ganVtcCB0by4gSXQgaXMgc2V0IGJ5IGVhcmx5IHJldHVybnMgaWYgaXQg
ZG9lcyBub3QgZXhpc3QuCiAgICAgICAgIEJhc2ljQmxvY2sqIG1fY29udGludWF0aW9uQmxvY2s7
CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fcmV0dXJuVmFsdWU7CisgICAgICAgIE9wZXJh
bmQgbV9yZXR1cm5WYWx1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNwZWN1bGF0aW9ucyBhYm91
dCB2YXJpYWJsZSB0eXBlcyBjb2xsZWN0ZWQgZnJvbSB0aGUgcHJvZmlsZWQgY29kZSBibG9jaywK
ICAgICAgICAgLy8gd2hpY2ggYXJlIGJhc2VkIG9uIE9TUiBleGl0IHByb2ZpbGVzIHRoYXQgcGFz
dCBERkcgY29tcGlsYXRpb25zIG9mIHRoaXMKQEAgLTExOTQsNyArMTIyNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBDb2RlQmxvY2sqLAogICAgICAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLAogICAgICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCAvLyBOdWxsIGlmIHRoaXMg
aXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFs
dWVWUiwKKyAgICAgICAgICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAgICAgICAgICAgICBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
CkBAIC0xMjY5LDYgKzEzMDEsNyBAQCBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpCiAgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRS
ZWYoKm5ldyBCYXNpY0Jsb2NrKEJ5dGVjb2RlSW5kZXgoKSwgbV9udW1Bcmd1bWVudHMsIG1fbnVt
TG9jYWxzLCBtX251bVRtcHMsIDEpKTsKICAgICBCYXNpY0Jsb2NrKiBibG9ja1B0ciA9IGJsb2Nr
LnB0cigpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOworICAgIFZF
UkJPU0VfTE9HKCJBZGRpbmcgbmV3IHVudGFyZ2V0YWJsZSBibG9jazogIiwgYmxvY2tQdHItPmlu
ZGV4LCAiXG4iKTsKICAgICByZXR1cm4gYmxvY2tQdHI7CiB9CiAKQEAgLTEzMDEsOCArMTMzNCw4
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0
eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVU
eXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PENhbGxPcD4oKTsKLSAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGJ5dGVjb2RlLm1fY2FsbGVl
KTsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5t
X2FyZ3YpOworICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoY2FsbGVlRm9yKGJ5dGVjb2RlLCBt
X2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAt
c3RhdGljX2Nhc3Q8aW50PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwg
bV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7CiAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxs
TGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCkBAIC0xMzEw
LDggKzEzNDMsOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBObwogCiAgICAgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1vZGUpOwogCi0g
ICAgcmV0dXJuIGhhbmRsZUNhbGwoYnl0ZWNvZGUubV9kc3QsIG9wLCBraW5kLCBwYy0+c2l6ZSgp
LCBjYWxsVGFyZ2V0LAotICAgICAgICBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBj
YWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKKyAgICByZXR1cm4gaGFuZGxlQ2FsbChk
ZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpLCBKSVRU
eXBlOjpERkdKSVQpLCBvcCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKKyAgICAgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNo
ZWNrcG9pbnQoKSksIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlv
bigpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5lU3RhdGljYWxseShDYWxsTGlu
a1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQpCkBAIC0xMzIxLDcgKzEz
NTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3Rh
dHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbAogfQogCiBCeXRlQ29kZVBhcnNlcjo6VGVy
bWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCi0gICAgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvblNpemUsCisgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAgIE5v
ZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lz
dGVyT2Zmc2V0LAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKQogewpAQCAtMTYzNyw3ICsxNjcwLDcgQEAgdW5zaWduZWQgQnl0ZUNv
ZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENv
dW50SW5jbHUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLXZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0
Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCBraW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGNvbnN0IEluc3RydWN0aW9uKiBzYXZlZEN1cnJlbnRJ
bnN0cnVjdGlvbiA9IG1fY3VycmVudEluc3RydWN0aW9uOwogICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlv
bktpbmRGb3Ioa2luZCk7CkBAIC0xNjcxLDcgKzE3MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBDYQogICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJndW1l
bnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAg
IHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHQpLnZpcnR1YWxS
ZWdpc3RlcigpOworICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJh
bmQocmVzdWx0KTsKIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPSBu
dWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CkBAIC0xODIzLDcgKzE4
NTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIG1fY3VycmVudEluc3RydWN0aW9u
ID0gc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb247CiB9CiAKLUJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVl
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25l
ZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBu
ZWVkc1RvQ2hlY2tDYWxsZWUpCitCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3Vs
dCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUs
IE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwg
VmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJh
c2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkKIHsK
ICAgICBWRVJCT1NFX0xPRygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIp
OwogCkBAIC0xOTAwLDcgKzE5MzMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlv
blJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogYwogICAgIHJl
dHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVkOwogfQogCi1ib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5s
aW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LAogICAgIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IGZpcnN0RnJlZVJlZywgVmlydHVhbFJl
Z2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1l
bnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwKICAgICBOb2RlVHlwZSBjYWxsT3AsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCBraW5kKQpAQCAtMjA0NCw3ICsyMDc3LDcgQEAgdW5zaWduZWQgQnl0
ZUNvZGVQYXJzZXI6OmdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYgY2Fs
bExpbmtTdGF0dXMKIH0KIAogQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAotICAgIE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtT
dGF0dXMsCisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBD
YWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0LCBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywKICAgICBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKQEAg
LTIyMjAsNyArMjI1Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgQVNTRVJUKG9w
ID09IEFyaXRoTWluIHx8IG9wID09IEFyaXRoTWF4KTsKIApAQCAtMjI1MCw3ICsyMjgzLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IE5vZGVUeXBlIG9wLCBpbnQgcmVnaXMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQg
cmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgICAg
VGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBAIC0yMzg5LDI3ICsyNDIy
LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIGNhc2UgQXJyYXlWYWx1ZXNJ
bnRyaW5zaWM6IHsKICAgICAgICAgICAgIGluc2VydENoZWNrcygpOwogCi0gICAgICAgICAgICBJ
dGVyYXRpb25LaW5kIGtpbmQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgewotICAg
ICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlw
ZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9u
S2luZDo6VmFsdWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBB
cnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmlu
c2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpLZXlzOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBcnJheUVudHJpZXNJbnRyaW5zaWM6
Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgotICAgICAgICAg
ICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4ga2luZCA9IGludGVyYXRpb25LaW5k
Rm9ySW50cmluc2ljKGludHJpbnNpYyk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghIWtp
bmQpOwogCiAgICAgICAgICAgICAvLyBBZGQgdGhlIGNvbnN0YW50IGJlZm9yZSBleGl0IGJlY29t
ZXMgaW52YWxpZCBiZWNhdXNlIHdlIG1heSB3YW50IHRvIGluc2VydCAocmVkdW5kYW50KSBjaGVj
a3Mgb24gaXQgaW4gRml4dXAuCi0gICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3Rh
bnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtpbmQpKSk7CisgICAgICAgICAgICBO
b2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCpraW5kKSkpOwogCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFuIGV4aXN0aW5nIGVy
cm9yIHN0cmluZy4KICAgICAgICAgICAgIHVuc2lnbmVkIGVycm9yU3RyaW5nSW5kZXggPSBVSU5U
MzJfTUFYOwpAQCAtMzY0Nyw3ICszNjY0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNv
bnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4oMSArIHNpZ25hdHVyZS0+YXJndW1l
bnRDb3VudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2NjYsNyArMzY4Myw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJp
YW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFu
dCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5
cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CkBAIC0zNzgwLDcgKzM3OTcsNyBAQCBzdGF0
aWMgdm9pZCBibGVzc0NhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+Y2xl
YXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlRE9NSklUR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJp
YW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURP
TUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQs
IE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKQogewogICAgIGlmICghdmFyaWFudC5kb21BdHRyaWJ1dGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzg1OSw3ICszODc2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVj
dWxhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKLSAgICBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAor
ICAgIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lz
dGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJh
eVR5cGUgdHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGlm
ICghaXNUeXBlZFZpZXcodHlwZSkpCkBAIC0zOTE2LDcgKzM5MzMsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24oCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisg
ICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVS
Qk9TRV9MT0coIiAgICBIYW5kbGluZyBjb25zdGFudCBpbnRlcm5hbCBmdW5jdGlvbiAiLCBKU1Zh
bHVlKGZ1bmN0aW9uKSwgIlxuIik7CkBAIC02NjA0LDIwICs2NjIxLDQwOSBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cyk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0
X3ZhcmFyZ3M6IHsKICAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsPE9wQ29uc3RydWN0VmFy
YXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3RWYXJhcmdzLCBDYWxsTW9kZTo6Q29u
c3RydWN0KTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1
Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1h
eSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0X3ZhcmFyZ3MpOwogICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4o
KTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7CiAg
ICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxsRXZhbCwgT3BJbmZvKGJ5dGVj
b2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2FyZ2Ms
IHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICAgICAgICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVpbnQz
Ml90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOwor
CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RGOjpiaXRD
b3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWluaW5nTW9k
ZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdlbmVyYXRl
ZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVu
dENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBu
dWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gYWxsb2NhdGVV
bnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICBCeXRlY29kZUluZGV4IHN0YXJ0SW5k
ZXggPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgTm9kZSogc3ltYm9sSXRlcmF0b3Ig
PSBnZXREaXJlY3QoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICBhdXRv
JiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5hcnJh
eUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisKKyAgICAgICAgICAgIGlmIChzZWVu
TW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0
IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNz
LgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IG1fZ3JhcGguZnJlZXplKGdsb2Jh
bE9iamVjdC0+YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uKCkpOworICAgICAg
ICAgICAgICAgIGlmIChudW1iZXJPZlJlbWFpbmluZ01vZGVzID09IDEpCisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JG
dW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZmFzdEFycmF5QmxvY2sgPSBhbGxvY2F0ZVVudGFy
Z2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBrbm93
bkl0ZXJGdW5jdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxUHRyLCBPcEluZm8oZnJvemVuU3lt
Ym9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgoSXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhBcnJh
eVR5cGUpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworCisgICAgICAgICAgICAgICAgICAg
IEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFy
cmF5QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJy
YW5jaFRhcmdldChnZW5lcmljQmxvY2spOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFu
ZFJlc3VsdCA9IGFkZFRvR3JhcGgoQXJpdGhCaXRBbmQsIGlzQXJyYXksIGtub3duSXRlckZ1bmN0
aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBXZSBrbm93IHRoZSBiaXQgYW5kIGNhbm5v
dCBoYXZlIGVmZmVjdHMgc28gaXQncyBvayB0byBleGl0IGhlcmUuCisgICAgICAgICAgICAgICAg
ICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0
T0spOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJh
bmNoRGF0YSksIGFuZFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWlu
YWwoKTsKKworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZhc3RBcnJheUJs
b2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIC8vIFRoZSBicmFuY2ggYWJvdmUgbWF5IGhhdmUgbWFkZSBl
eGl0IGludmFsaWQgYnV0IGl0J3MgYWN0dWFsbHkgb2suCisgICAgICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAg
ICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEl0ZXJhdGlvbktpbmQ6OlZhbHVlcykpKTsKKyAgICAgICAgICAgICAgICBOb2Rl
KiBpdGVyYXRvciA9IGFkZFRvR3JhcGgoTmV3QXJyYXlJdGVyYXRvciwgT3BJbmZvKG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkp
KSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8o
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVkT2Jq
ZWN0KSksIGl0ZXJhdG9yLCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSksIGl0ZXJhdG9yLCBraW5kTm9kZSk7
CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIGl0ZXJhdG9yKTsKKwor
ICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX25leHQsIGpzQ29uc3RhbnQoSlNWYWx1ZSgp
KSk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2Fu
dCB0byBydW4gb3VyIGdldEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNv
ZGUuCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3Vy
cmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4
aXRPSyk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAg
ICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgICAgIGlmIChzZWVu
TW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdl
bmVyaWNCbG9jaykgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7
CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAg
ICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAg
ICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JPcGVu
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJt
aW5hbCk7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAg
ICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsK
KyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJs
b2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJyYW5j
aERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAg
ICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsK
KyAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RP
YmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhi
cmFuY2hEYXRhKSwgYWRkVG9HcmFwaChJc09iamVjdCwgaXRlcmF0b3IpKTsKKworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3RPYmplY3RC
bG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgYSB0eXBlIGVycm9yLi4uCisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3csIGpzQ29uc3RhbnQoanNOdWxsKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBp
c09iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigp
OworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9pdGVy
YXRvcik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIG5leHRJbXBsID0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+bmV4dC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKG5leHRJbXBsKTsKKwor
ICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlk
OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRC
eVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisKKyAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX25leHQsIHByZWRpY3Rpb24s
IGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
bmV4dEltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVu
Z3RoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9u
J3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0
IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2Rl
SW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJ
bmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0
cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENhc2UpIHsK
KyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBqc0NvbnN0YW50KEpTVmFsdWUoKSk7Cisg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2l0ZXJhdG9yLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX25leHQsIHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0
IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBt
b3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4
ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVj
dGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRM
b2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhj
b250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0b3Jfb3Blbik7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0
PigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOworICAgICAgICAgICAgdWludDMyX3Qgc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVy
YXRpb25NZXRhZGF0YS5zZWVuTW9kZXM7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
UmVtYWluaW5nTW9kZXMgPSBXVEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7CisgICAgICAgICAgICBB
U1NFUlQobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsK
KyAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ2FzZSA9IGZhbHNlOworCisgICAgICAgICAgICBC
eXRlY29kZUluZGV4IHN0YXJ0SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAgICAgICAgYXV0
byYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+YXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogZ2VuZXJpY0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbiA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgaWYg
KHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgLy8g
Rmlyc3Qgc2V0IHVwIHRoZSB3YXRjaHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVj
dG5lc3MuCisgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShh
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAgIGlm
IChudW1iZXJPZlJlbWFpbmluZ01vZGVzICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSogaGFzTmV4dCA9IGFkZFRvR3JhcGgoSXNFbXB0eSwgZ2V0KGJ5dGVjb2RlLm1fbmV4dCkpOwor
ICAgICAgICAgICAgICAgICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJs
b2NrKCk7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJsb2NrID0g
YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5j
aERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5Qmxv
Y2spOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRh
cmdldChnZW5lcmljQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5j
aCwgT3BJbmZvKGJyYW5jaERhdGEpLCBoYXNOZXh0KTsKKworICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGZhc3RBcnJheUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVh
ckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE5vZGUqIGl0
ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnbG9i
YWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpLCBpdGVyYXRvcik7CisKKyAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxl
QmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJh
eU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpS
ZWFkKTsKKyAgICAgICAgICAgICAgICBhdXRvIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0
aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVy
YXRvck5leHQ6OmdldFZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8o
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9w
SW5mbyhTcGVjSW50NTJBbnkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpdGVyYWJsZSA9IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKTsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogYnV0dGVyZmx5ID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJm
bHksIGl0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gYWRkVG9H
cmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGl0ZXJhYmxl
LCBidXR0ZXJmbHkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dy
YXBoKENvbXBhcmVHcmVhdGVyRXEsIGluZGV4LCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7IC8vIFRoZSBhYm92ZSBjb21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBl
ZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5kZXggYW5kIGxlbmd0aCBhcmUgdWludDMycy4KKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICAgICAgICAg
IEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNEb25l
QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5j
aFRhcmdldChkb0xvYWRCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJh
bmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAgICAgICAgICAgICAgICAgIGZs
dXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZG9Mb2FkQmxvY2s7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50
MzJPbmx5KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogb25lID0ganNDb25zdGFudChqc051bWJlcigxKSk7CisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIG5ld0luZGV4ID0gbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgaW5kZXgsIG9u
ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBmYWxzZU5vZGUgPSBqc0NvbnN0YW50KGpz
Qm9vbGVhbihmYWxzZSkpOworCisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNv
dWxkIGNvbnNpZGVyIG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNlcyB0
aHJlZSBjaGlsZAorICAgICAgICAgICAgICAgICAgICAvLyBzbG90cy4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5Mgor
ICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9pdGVyYWJs
ZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChpbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0
eSBzdG9yYWdlLgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRvR3Jh
cGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9w
SW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3Zh
bHVlLCBnZXRCeVZhbCk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUs
IGZhbHNlTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxG
aWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxk
OjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIG5ld0luZGV4KTsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4g
b3VyIGdldEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJ
bmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9u
KSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBSb2xsIGJhY2sgdGhlIGNoZWNrcG9pbnQuCisg
ICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGlzRG9uZUJsb2Nr
OworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiB0cnVlTm9kZSA9IGpzQ29uc3RhbnQoanNCb29sZWFuKHRydWUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4ID0ganNDb25zdGFudChqc051bWJlcihtYXhTYWZl
SW50ZWdlcigpKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJvdHRvbU5vZGUgPSBqc0Nv
bnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbU5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCB0cnVlTm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19j
YXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNv
ZGUubV9pdGVyYXRvciksIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8g
b3VyIHNldCBsb2NhbHMuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0
ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nl
c3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1w
LCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVy
bWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25N
b2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAgICAgICBj
bGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWluYWxpdHkg
dGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0PihjdXJyZW50SW5zdHJ1Y3Rp
b24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAgICAgICAg
ICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdl
dGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERvbmVCbG9jayA9
IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgIE9wZXJhbmQg
bmV4dFJlc3VsdCA9IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvclJlc3Vs
dCA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJh
bmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAg
ICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2Jq
ZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZv
KGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvclJlc3VsdCkpOworICAg
ICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IG5vdE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAg
ICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpu
ZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iX3MpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dy
YXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8o
RXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAg
ICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgYXV0byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5
dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2V4aXRP
SyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RC
bG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVl
TWF0Y2hpbmdTcGVjdWxhdGlvbih2YWx1ZVByZWRpY2l0aW9uKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byogZG9uZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKS5lbnN1cmUoZG9uZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5
cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAg
ICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1
dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jh
c2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChi
eXRlY29kZS5tX2RvbmUsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoZG9uZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBn
ZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8g
U2V0IGEgdmFsdWUgZm9yIG1fdmFsdWUgc28gd2UgZG9uJ3QgdGhpbmsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbVZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAg
QnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAg
ICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChjb250aW51
YXRpb24pOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5j
aFRhcmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJy
YW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBnZXQoYnl0ZWNvZGUubV9kb25lKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90
RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKS5lbnN1cmUodmFsdWVJbXBsKTsKKworICAgICAgICAgICAgICAgICAg
ICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsK
KworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3Rh
dHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZUdldEJ5SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVQcmVkaWNpdGlvbiwgYmFzZSwgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2YWx1ZUltcGwpLCBp
ZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcmVz
dWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCByZXN1bHQpOworCisg
ICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVu
IG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsK
KyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAg
ICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1
cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNv
bnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2l0ZXJhdG9yX25leHQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBv
cF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBv
aW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcikpOwpAQCAtNzEwNyw3ICs3
NTEzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxhdGVyLCBhcyB0
aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAgICAgICAgICAg
Ly8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVyLgogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4o
KTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxsRnJhbWVTbG90OjpjYWxsZWUp
OworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAgICAgICAgICAg
IGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxK
U0Z1bmN0aW9uKj4oKm1fdm0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdlYWtKU0NvbnN0
YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc0ODYsNyArNzg5Miw3IEBAIEJ5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICBKU0Z1bmN0aW9u
KiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJldHVyblZhbHVlLAogICAgIFZp
cnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsCkBAIC03NDk1
LDcgKzc5MDEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3Rh
Y2tFbnRyeSgKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRC
bG9jayhwcm9maWxlZEJsb2NrKQogICAgICwgbV9jb250aW51YXRpb25CbG9jayhjb250aW51YXRp
b25CbG9jaykKLSAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAgICAsIG1fcmV0
dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9p
bmxpbmVTdGFja1RvcCkKIHsKICAgICB7CkBAIC03NTYxLDcgKzc5NjcsNyBAQCBCeXRlQ29kZVBh
cnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgLy8gTWFj
aGluZSBjb2RlIGJsb2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sgPT0gYnl0ZUNv
ZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKCFjYWxsZWUpOwotICAgICAg
ICBBU1NFUlQoIXJldHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXR1
cm5WYWx1ZS5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZVN0YXJ0
LmlzVmFsaWQoKSk7CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOwpAQCAtNzk3Niw3
ICs4MzgyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gbm9k
ZUFuZEluZGV4ID0gYmxvY2stPmZpbmRUZXJtaW5hbCgpOwotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxlKTsKKyAgICAg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJbmRleC5ub2RlLCBub2RlQW5k
SW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICAgICAgYmxvY2st
PnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IGU3ZjZlNzYyNDY2OWIzMDFmNWEwMjA0
OGMyNWQ0ODE1YzNhMTMzOWQuLjYxMGQ3ZDIwZWY2NTM1ZjdhOGU5NWJjZWExMjFlZjNiOGFiNDAy
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJs
b2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2lj
QmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9k
ZU9yaWdpbiwgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgTm9kZSogbGl2ZW5lc3NO
b2RlID0gamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsK
ICAgICAgICAgaWYgKCFsaXZlbmVzc05vZGUpCkBAIC0zMDIsMTEgKzMwMiw5IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdm9pZCBqZXR0aXNvbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Js
b2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luKQogICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3Bl
cmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJP
ZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0
aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aSkpOwotICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVk
QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGtlZXBPcGVy
YW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0
aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOworCiAgICAg
ICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpldHRpc29uZWRCbG9jayk7CiAg
ICAgfQogICAgIApAQCAtMzUyLDExICszNTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8g
VGltZSB0byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUga2VwdCBh
bGl2ZSBpbiBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0byBoaXR0aW5n
IHRoZSBmaXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93biBhCiAgICAg
ICAgICAgICAvLyBkaWZmZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJsb2NrLgotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBr
ZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2Rl
T3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICAgICAga2VlcE9wZXJh
bmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9j
aywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5v
cGVyYW5kRm9ySW5kZXgoaSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNlY29uZEJsb2NrLT5waGlzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1OWI3NzgwYTZj
YzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjYwMDMzMmYxOTBmZjhiNDA0MmNkNTQyYWI5
NWI1MDUzNmFkN2E3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKQEAgLTI3NCw2ICsyNzQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQog
ICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9w
X2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBv
cF9pdGVyYXRvcl9uZXh0OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CiAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGU6CkBAIC0zMTEsNiArMzEzLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAg
ICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToK
ICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBjYXNlIGhhbmRs
ZVVuY2F1Z2h0RXhjZXB0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9j
YXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbjoKICAgICBj
YXNlIG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY29uc3RydWN0X3JldHVy
bl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlv
bjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFh
NGRlY2RhMGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYuLmRiYzgzMWMyZWJlMDg2Zjg3
MzY2YTdlNTRhMzVlNTkzYTliMDc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMjQxMSw3ICsyNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTogewotICAgICAgICAgICAgbm9k
ZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggYmY0MzUwYzRjZDE3ZTNk
NTAwNjYzOGY1NWFhYzM1YTU2NTI5OTRhMS4uNjljNzQ4MjBkNDdkYzViYTIzMTYyNGM4YmY5MTRj
ZmNiZTA3NjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JB
bGxLaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMu
aApAQCAtMTAyLDggKzEwMiw2IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhZnRlci5ieXRlY29kZUlu
ZGV4KCkuY2hlY2twb2ludCgpLCAiVHJhbnNpdGlvbmluZyBhY3Jvc3MgYSBjaGVja3BvaW50IGJ1
dCBiZWZvcmUgYW5kIGFmdGVyIGRvbid0IHNoYXJlIGFuIGlubGluZUNhbGxGcmFtZS4iKTsKLQog
ICAgIC8vIERldGVjdCBraWxscyB0aGUgc3VwZXIgY29uc2VydmF0aXZlIHdheTogaXQgaXMga2ls
bGVkIGlmIGl0IHdhcyBsaXZlIGJlZm9yZSBhbmQgZGVhZCBhZnRlci4KICAgICBCaXRWZWN0b3Ig
bGl2ZUFmdGVyID0gZ3JhcGgubG9jYWxzQW5kVG1wc0xpdmVJbkJ5dGVjb2RlKGFmdGVyKTsKICAg
ICB1bnNpZ25lZCBudW1Mb2NhbHMgPSBncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mTG9jYWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCmluZGV4IDIwMmQyMjUwNTNmYTlkZmJlNWMyM2M2NGJj
ZjhiZTM4NGUzZTc2NTQuLjdjYzM0YWUyZDBkNGU1Zjg0OGU2OTU3MzAyNDkyYzEyMWQ3MWZlZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuY3BwCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6
OmJlZ2luQmFzaWNCbG9jayhCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrKQogICAgIEFTU0VSVChiYXNp
Y0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZh
cmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFp
bC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRI
ZWFkLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJl
ck9mTG9jYWxzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsK
KyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09
IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJh
c2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52
YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkpOwogCiAgICAgbV9hYnN0cmFjdFZhbHVlcy5y
ZXNpemUoKTsKIApAQCAtMTYxLDYgKzE2NCwxMCBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRl
Ojppbml0aWFsaXplKCkKICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2Nh
bChpKS5jbGVhcigpOwogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2Fs
KGkpLmNsZWFyKCk7CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLnRtcChpKS5jbGVhcigpOworICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLnRtcChpKS5jbGVhcigpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFs
T3JkZXIoKSkgewpAQCAtMTc1LDEzICsxODIsOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRl
Ojppbml0aWFsaXplKCkKICAgICAgICAgYmxvY2stPmNmYVRoaW5rc1Nob3VsZFRyeUNvbnN0YW50
Rm9sZGluZyA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRl
QXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1
cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRz
KCk7ICsraSkgewotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5j
bGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVh
cigpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZh
bHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52
YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNB
dFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+dmFsdWVzQXRIZWFkLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBibG9jay0+dmFs
dWVzQXRIZWFkW2ldLmNsZWFyKCk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ld
LmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzOSw3ICsyNDIsNyBAQCBib29sIElu
UGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbUxvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAgICAgIC8v
IFRoZSBibG9jayB0cmFuc2ZlcnMgdGhlIHZhbHVlIGZyb20gaGVhZCB0byB0YWlsLgotICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gdmFyaWFibGVBdChpbmRleCk7CisgICAgICAgICAgICAg
ICAgZGVzdGluYXRpb24gPSBhdEluZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTMwNCw3ICszMDcsNyBAQCBib29s
IEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2st
PnZhbHVlc0F0VGFpbFtpXSA9IHZhcmlhYmxlQXQoaSk7CisgICAgICAgICAgICBibG9jay0+dmFs
dWVzQXRUYWlsW2ldID0gYXRJbmRleChpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoTm9k
ZUFic3RyYWN0VmFsdWVQYWlyJiB2YWx1ZUF0VGFpbCA6IGJsb2NrLT5zc2EtPnZhbHVlc0F0VGFp
bCkKQEAgLTM0Myw2ICszNDYsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShC
YXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAgICAgZGF0YUxvZygiICAgTWVy
Z2luZyBmcm9tICIsIHBvaW50ZXJEdW1wKGZyb20pLCAiIHRvICIsIHBvaW50ZXJEdW1wKHRvKSwg
IlxuIik7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50
cygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgQVNT
RVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IHRvLT52YXJpYWJs
ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZlRtcHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygp
KTsKICAgICAKICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAKQEAgLTM1MiwxNCArMzU2
LDkgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwg
QmFzaWNCbG9jayogdG8pCiAgICAgCiAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkgewogICAg
IGNhc2UgVGhyZWFkZWRDUFM6IHsKLSAgICAgICAgZm9yIChzaXplX3QgYXJndW1lbnQgPSAwOyBh
cmd1bWVudCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2Fy
Z3VtZW50KSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52
YWx1ZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWls
LmFyZ3VtZW50KGFyZ3VtZW50KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVu
dCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgZnJvbS0+
dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKLSAgICAgICAgICAg
IEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5sb2NhbChsb2Nh
bCk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRl
c3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVz
QXRIZWFkLmxvY2FsKGxvY2FsKSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmcm9tLT52YXJpYWJsZXNB
dFRhaWwuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0
aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXQoaW5kZXgpOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVz
QXRUYWlsLmF0KGluZGV4KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5hdChpbmRleCksIGZyb20tPnZh
cmlhYmxlc0F0VGFpbC5hdChpbmRleCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuaAppbmRleCAxODY1ZTZhMWVmZmMzZGFhZWZlNTg0Y2E4NjJjNDliYzM2ODU4NTAwLi5j
NWQwMjY4NzNlMDEwZDA3ZjM4MTFjNmM0ZmVmNTY2ZTFjYTcwZjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0xNTgs
MTAgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4m
IHZhcmlhYmxlc0ZvckRlYnVnZ2luZygpOwogCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyaWFibGVzLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQog
ICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMu
bnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mVG1wcygpOyB9CiAgICAgCi0gICAgQWJzdHJhY3RW
YWx1ZSYgdmFyaWFibGVBdChzaXplX3QgaW5kZXgpCisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRl
eChzaXplX3QgaW5kZXgpCiAgICAgewogICAgICAgICBhY3RpdmF0ZVZhcmlhYmxlSWZOZWNlc3Nh
cnkoaW5kZXgpOwogICAgICAgICByZXR1cm4gZmFzdEZvcndhcmQobV92YXJpYWJsZXNbaW5kZXhd
KTsKQEAgLTE2OSwxNyArMTcxLDE3IEBAIHB1YmxpYzoKIAogICAgIEFic3RyYWN0VmFsdWUmIG9w
ZXJhbmQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQo
bV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5k
ZXgobV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKICAgICB9CiAgICAgCiAgICAg
QWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHZhcmlhYmxlQXQobV92YXJpYWJsZXMubG9jYWxJbmRleChpbmRleCkpOworICAgICAgICByZXR1
cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAog
ICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKKyAg
ICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRleCkpOwog
ICAgIH0KICAgICAKICAgICAvLyBDYWxsIHRoaXMgYmVmb3JlIGJlZ2lubmluZyBDRkEgdG8gaW5p
dGlhbGl6ZSB0aGUgYWJzdHJhY3QgdmFsdWVzIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xhenlKU1ZhbHVlLmgKaW5kZXggZjVlZWYyZjNkZjcyMTI5YTgzOGM3Njg2ZTI2Yjk2MGI1
MGY1ODFlZS4uN2EzMzY2NmFhNzFhMWY2NjZjOTRiMjhiNjQ0NzQ4NGQ2N2JiYjdkOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaApAQCAtNzcsNiArNzcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIExhenlKU1ZhbHVlIG5ld1N0cmluZyhHcmFwaCYsIGNvbnN0
IFN0cmluZyYpOwogCiAgICAgTGF6aW5lc3NLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tp
bmQ7IH0KKyAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLbm93blZhbHVlID8gU3BlY0J5dGVjb2RlVG9wIDogU3BlY1N0cmluZzsgfQog
ICAgIAogICAgIEZyb3plblZhbHVlKiB0cnlHZXRWYWx1ZShHcmFwaCYpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggYTg1MmRiZGQ5Yjkz
NzBkNmRlNjUzYzVhNDg4NzExNzAwZThiODc5Yi4uNTIyMzRiNGE1ZDNmNjk3NmMyZmE5OTgxNmRj
ZTExMDY4MTA1NGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
CkBAIC00OCwxMSArNDgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
Ci1PU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNv
dXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0
aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4
KQorT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVT
b3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRl
eCwgdW5zaWduZWQgZGZnSVJJbmRleCkKICAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9v
cmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNI
b2lzdGVkKQogICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCiAgICAgLCBtX3Zh
bHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCiAgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJ
bmRleCkKKyAgICAsIG1fZGZnSVJJbmRleChkZmdJUkluZGV4KQogICAgICwgbV9zdHJlYW1JbmRl
eChzdHJlYW1JbmRleCkKIHsKICAgICBib29sIGNhbkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRP
SzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMx
ZDY4Nzc5NzJmMjU5ZDYyYzFhMjMwMGIyYjE2MS4uOGNlOGI5MjA3OWFmNzUyOTk3MDNmMTdmZGRh
ZTJmZWMzYjljMjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAg
LTE0Niw3ICsxNDYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNw
ZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2b2lkKiwgdm9pZAogLy8gVGhpcyBzdHJ1Y3R1
cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2lu
ZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFz
ZSB7Ci0gICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5z
aWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBK
U1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJ
VCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9N
QVgsIHVuc2lnbmVkIGRmZ0lSSW5kZXggPSBVSU5UX01BWCk7CiAKICAgICBmcmllbmQgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopOwogCkBAIC0x
NTksNiArMTU5LDcgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAg
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCiAgICAg
dW5zaWduZWQgbV9yZWNvdmVyeUluZGV4OworICAgIHVuc2lnbmVkIG1fZGZnSVJJbmRleDsKIAog
ICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gY29kZUxvY2F0aW9uRm9yUmVw
YXRjaCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggMWRmMzk0MzI0MWQ1YWY3OTMxOThlZjlj
NzEyNzNlNzU4YTBhMjI2YS4uMDg1ZGM1MzBiM2JjMzc5ZmI0ZjNlNjA5MWNiNWM2NTIwMjc1ODdh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcApAQCAtMTU5LDkgKzE1OSwxNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jawogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlv
bi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFt
ZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTElu
dDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9u
KSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRp
b24pKSkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewotICAgICAgICBj
YXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKLSAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElO
VF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1l
OjpDYWxsOiB7CisgICAgICAgICAgICBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0g
b3BfY2FsbCkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FU
SU9OKG9wX2NhbGwpOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29k
ZUlEKCkgPT0gb3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0g
TExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICAgICAgZWxz
ZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAg
ICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJh
dG9yX25leHQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBJ
bmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElO
VF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MjM5LDYgKzI0NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxs
ZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgIH0KICAgICB9
CiAKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CiAgICAgcmV0dXJuIGp1bXBUYXJnZXQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEwMDNlZDVmZDNmYmMzODE2MmM4OTJiMzRjODQ3
YjkyNzY4M2ZhZS4uNmUwOTBhMzhiZmMwOTQ3NWE3ZDdiZDU5MWUyNTFhM2U5MzQ2ODU3YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExMDEsNiArMTEwMSwxMiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2Rl
VXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDogeworICAgICAgICAg
ICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5sYXp5SlNWYWx1ZSgpLnNwZWN1bGF0ZWRU
eXBlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0
cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgICAg
IGNhc2UgVG9TdHJpbmc6CkBAIC0xMzA1LDcgKzEzMTEsNiBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgotICAg
ICAgICBjYXNlIExhenlKU0NvbnN0YW50OgogICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAg
ICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdl
IG9mIGNvbXBpbGF0aW9uLgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fY3VycmVu
dE5vZGUsICJVbmV4cGVjdGVkIG5vZGUgZHVyaW5nIHByZWRpY3Rpb24gcHJvcGFnYXRpb24iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggMGQ2NWQ4Zjg5
YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4YTFiZmYzOThjYi4uOWFlOTgwNGM3NWI5NWVjNTYxZWQyZjFh
NTJiOWRlYzk4Yzg0NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgICAgICAgICAgZGF0YUxvZ0YoIikg
PT0gKCVzID0gIiwgI3JpZ2h0KTsgXAogICAgICAgICAgICAgZGF0YUxvZyhyaWdodCk7IFwKICAg
ICAgICAgICAgIGRhdGFMb2dGKCIpICglczolZCkuXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBc
CisgICAgICAgICAgICBkYXRhTG9nKCJcblxuXG4iKTsgXAorICAgICAgICAgICAgbV9ncmFwaC5i
YXNlbGluZUNvZGVCbG9ja0ZvcihudWxscHRyKS0+ZHVtcEJ5dGVjb2RlKCk7IFwKICAgICAgICAg
ICAgIGR1bXBHcmFwaElmQXBwcm9wcmlhdGUoKTsgXAogICAgICAgICAgICAgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNs
ZWZ0ICIgPT0gIiAjcmlnaHQpOyBcCiAgICAgICAgICAgICBDUkFTSCgpOyBcCkBAIC01NjgsNiAr
NTcwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IGdldExvY2Fs
UG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAg
ICAgICBPcGVyYW5kczxzaXplX3Q+IHNldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxv
Y2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAh
YmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50
bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
KE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSkg
fHwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkp
OworCisgICAgICAgICAgICAgICAgZ2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0Owor
ICAgICAgICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBW
QUxJREFURSgodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLCBibG9j
ayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJs
ZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwogICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKQEAgLTcxNiw2ICs3MjYs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3Rv
cmUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRt
cHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5kKAorICAgICAgICAgICAg
ICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCBPcGVy
YW5kOjp0bXAoaSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytp
KSB7CiAgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICBi
bG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwpAQCAtOTQ0LDcgKzk1OSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNoZWNrT3BlcmFuZCgKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2ss
IE9wZXJhbmRzPHNpemVfdD4mIGdldExvY2FsUG9zaXRpb25zLAotICAgICAgICBPcGVyYW5kczxz
aXplX3Q+JiBzZXRMb2NhbFBvc2l0aW9ucywgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAg
ICAgIE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kIG9wZXJhbmQp
CiAgICAgewogICAgICAgICBpZiAoZ2V0TG9jYWxQb3NpdGlvbnMub3BlcmFuZChvcGVyYW5kKSA9
PSBub3RTZXQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvRFNMLnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQu
Ljk0ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIxMGM4MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzcsNiArMTM3LDcgQEAgbW9kdWxlIERTTAog
I2luY2x1ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkdldEJ5VmFsSGlzdG9yeS5o
IgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgog
I2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvTWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1ZDYzOTBhYmEyNjM1ZTk2MzU5Zjg5MGUyZWI3
MWE5NS4uYzA3NzVkOGUxYjEwNTAyZGYwMWE3NGFmMGM2ZGViNGE4NzVjYzYzOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCkBAIC02Nyw2ICs2Nyw3IEBA
IGNsYXNzIE1ldGFkYXRhCiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhKTsK
IAogICAgIHB1YmxpYzoKKyAgICAgICAgI3tvcC5vcGNvZGVJRH0KICAgICAgICAgTWV0YWRhdGEo
Y29uc3QgI3tvcC5jYXBpdGFsaXplZF9uYW1lfSYjeyIgX19vcCIgaWYgaW5pdHN9KSN7aW5pdHN9
IHsgfQogCiAje2ZpZWxkc30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvU2VjdGlvbi5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlv
bi5yYgppbmRleCA5YjVlZTkwOTZlZTcxYjFiMGQzZWQ3ZjdjZDE4ZGIwNmZjYjM1ZmNmLi42YjVh
OTQyZjA4MjM5YTUyZTA2OWU4MDlkYTI3N2E0ZWY4ZTY2OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCkBAIC01Myw3ICs1MywxNyBAQCBjbGFzcyBTZWN0
aW9uCiAgIGVuZAogCiAgIGRlZiBzb3J0IQotICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0
IHsgfGEsIGJ8IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6
IC0xIH0KKyAgICAgIEBvcGNvZGVzID0gQG9wY29kZXMuc29ydCB7IHxhLCBifAorICAgICAgICAg
IHJlc3VsdCA9IG5pbAorICAgICAgICAgIGlmIGEuY2hlY2twb2ludHMgb3IgYi5jaGVja3BvaW50
cworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxk
IGhhdmUgbWV0YWRhdGE6ICN7YS5uYW1lfSIgaWYgYS5jaGVja3BvaW50cyBhbmQgYS5tZXRhZGF0
YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRoIGNoZWNrcG9pbnRz
IHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2IubmFtZX0iIGlmIGIuY2hlY2twb2ludHMgYW5kIGIu
bWV0YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAgIHJlc3VsdCA9IGEuY2hlY2twb2ludHMgPyBi
LmNoZWNrcG9pbnRzID8gMCA6IC0xIDogMQorICAgICAgICAgIGVsc2lmCisgICAgICAgICAgICAg
IHJlc3VsdCA9IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6
IC0xIAorICAgICAgICAgIGVuZAorICAgICAgICAgIHJlc3VsdAorICAgICAgfQogICAgICAgQG9w
Y29kZXMuZWFjaCgmOmNyZWF0ZV9pZCEpCiAgIGVuZAogCkBAIC03Myw2ICs4MywxOCBAQCBjbGFz
cyBTZWN0aW9uCiAgICAgICBlbmQKIAogICAgICAgaWYgY29uZmlnWzplbWl0X2luX3N0cnVjdHNf
ZmlsZV0KKyAgICAgICAgICBpID0gMAorICAgICAgICAgIHdoaWxlIHRydWUKKyAgICAgICAgICAg
ICAgaWYgIW9wY29kZXNbaV0uY2hlY2twb2ludHMKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAi
XG4iCisgICAgICAgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgTlVNQkVSX09GXyN7Y29uZmln
WzptYWNyb19uYW1lX2NvbXBvbmVudF19X1dJVEhfQ0hFQ0tQT0lOVFMgI3tpfVxuIgorICAgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgaSAr
PSAxCisgICAgICAgICAgZW5kCisgICAgICAgICAgb3V0IDw8ICJcbiIKKwogICAgICAgICAgIG91
dC53cml0ZSgiI2RlZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRd
fV9NRVRBREFUQV9TSVpFKG1hY3JvKSBcXFxuIikKICAgICAgICAgICBpID0gMAogICAgICAgICAg
IHdoaWxlIHRydWUKQEAgLTg3LDYgKzEwOSw4IEBAIGNsYXNzIFNlY3Rpb24KICAgICAgICAgICBl
bmQKICAgICAgICAgICBvdXQgPDwgIlxuIgogCisKKwogICAgICAgICAgIG91dC53cml0ZSgiI2Rl
ZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9NRVRBREFUQV9B
TElHTk1FTlQobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAgICAgICAgICAgd2hpbGUg
dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAppbmRleCA2NDUzOTEyN2I4Yzc0YzgyMDI5YjJiYjYxODBlNjk2OTcxYTY0YmM4Li4zZmY5MmI0
NTNhNzI5MjZkYzc0ZWNiZGNmNmUzMTRiY2ZiMzY4ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNDMsMTM5ICs0MywxMzkgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBDb2RlQmxvY2s7Ci0gICAgY2xhc3MgRXZh
bEV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotICAgIGNsYXNzIFZN
OwotICAgIGNsYXNzIEpTRnVuY3Rpb247Ci0gICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAg
Y2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKLSAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKLSAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7Ci0gICAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgUmVnaXN0
ZXI7Ci0gICAgY2xhc3MgSlNTY29wZTsKLSAgICBjbGFzcyBTb3VyY2VDb2RlOwotICAgIGNsYXNz
IFN0YWNrRnJhbWU7Ci0gICAgc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7Ci0gICAgc3RydWN0IEhh
bmRsZXJJbmZvOwotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLSAgICBzdHJ1Y3QgUHJvdG9DYWxs
RnJhbWU7Ci0KLSAgICBlbnVtIERlYnVnSG9va1R5cGUgewotICAgICAgICBXaWxsRXhlY3V0ZVBy
b2dyYW0sCi0gICAgICAgIERpZEV4ZWN1dGVQcm9ncmFtLAotICAgICAgICBEaWRFbnRlckNhbGxG
cmFtZSwKLSAgICAgICAgRGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudCwKLSAgICAgICAgV2lsbExl
YXZlQ2FsbEZyYW1lLAotICAgICAgICBXaWxsRXhlY3V0ZVN0YXRlbWVudCwKLSAgICAgICAgV2ls
bEV4ZWN1dGVFeHByZXNzaW9uLAotICAgIH07Ci0KLSAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlw
ZSB7Ci0gICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAotICAgICAgICBTdGFja0ZyYW1lRXZh
bENvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAotICAgICAgICBTdGFja0ZyYW1l
RnVuY3Rpb25Db2RlLAotICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQotICAgIH07Ci0KLSAg
ICBjbGFzcyBJbnRlcnByZXRlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIFZNOwotCi0gICAgcHVibGljOgotICAgICAgICBJbnRlcnByZXRlcihWTSAm
KTsKLSAgICAgICAgfkludGVycHJldGVyKCk7Ci0gICAgICAgIAorY2xhc3MgQ29kZUJsb2NrOwor
Y2xhc3MgRXZhbEV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBW
TTsKK2NsYXNzIEpTRnVuY3Rpb247CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIEpTTW9k
dWxlRW52aXJvbm1lbnQ7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKK2NsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworY2xhc3MgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU7CitjbGFzcyBSZWdpc3RlcjsKK2NsYXNzIEpTU2NvcGU7CitjbGFzcyBTb3Vy
Y2VDb2RlOworY2xhc3MgU3RhY2tGcmFtZTsKK3N0cnVjdCBDYWxsRnJhbWVDbG9zdXJlOworc3Ry
dWN0IEhhbmRsZXJJbmZvOworc3RydWN0IEluc3RydWN0aW9uOworc3RydWN0IFByb3RvQ2FsbEZy
YW1lOworCitlbnVtIERlYnVnSG9va1R5cGUgeworICAgIFdpbGxFeGVjdXRlUHJvZ3JhbSwKKyAg
ICBEaWRFeGVjdXRlUHJvZ3JhbSwKKyAgICBEaWRFbnRlckNhbGxGcmFtZSwKKyAgICBEaWRSZWFj
aERlYnVnZ2VyU3RhdGVtZW50LAorICAgIFdpbGxMZWF2ZUNhbGxGcmFtZSwKKyAgICBXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwKKyAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24sCit9OworCitlbnVtIFN0
YWNrRnJhbWVDb2RlVHlwZSB7CisgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCisgICAgU3RhY2tG
cmFtZUV2YWxDb2RlLAorICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAorICAgIFN0YWNrRnJhbWVG
dW5jdGlvbkNvZGUsCisgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKK307CisKK2NsYXNzIEludGVy
cHJldGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3Mg
Q2FjaGVkQ2FsbDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIFZNOworCitwdWJsaWM6CisgICAg
SW50ZXJwcmV0ZXIoVk0gJik7CisgICAgfkludGVycHJldGVyKCk7CisgICAgCiAjaWYgRU5BQkxF
KENfTE9PUCkKLSAgICAgICAgQ0xvb3BTdGFjayYgY2xvb3BTdGFjaygpIHsgcmV0dXJuIG1fY2xv
b3BTdGFjazsgfQorICAgIENMb29wU3RhY2smIGNsb29wU3RhY2soKSB7IHJldHVybiBtX2Nsb29w
U3RhY2s7IH0KICNlbmRpZgotICAgICAgICAKLSAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGUg
Z2V0T3Bjb2RlKE9wY29kZUlEKTsKKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIE9wY29kZSBnZXRP
cGNvZGUoT3Bjb2RlSUQpOwogCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bj
b2RlSUQoT3Bjb2RlKTsKKyAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKE9w
Y29kZSk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBzdGF0aWMgYm9vbCBpc09wY29k
ZShPcGNvZGUpOworICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAjZW5kaWYKIAot
ICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlTW9k
dWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNN
b2R1bGVFbnZpcm9ubWVudCopOwotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwotICAgICAgICBKU09iamVjdCogZXhl
Y3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29uc3Ry
dWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5l
d1RhcmdldCk7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKLQotICAgICAgICB2b2lk
IGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZp
cnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKLQotICAgICAg
ICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNl
cHRpb24qKTsKLSAgICAgICAgdm9pZCBub3RpZnlEZWJ1Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRXhjZXB0aW9uKik7Ci0gICAgICAg
IE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va1R5cGUpOwotICAg
ICAgICBzdGF0aWMgU3RyaW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3RvcjxT
dGFja0ZyYW1lPiYpOwotCi0gICAgICAgIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0NlbGwqIG93bmVy
LCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFtZXNUb1NraXAgPSAwLCBz
aXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIElu
aXRpYWxpemVBbmRSZXR1cm4gfTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNo
ZWNrZWRSZXR1cm4oSlNWYWx1ZSByZXR1cm5WYWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKHJldHVyblZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIEpTT2JqZWN0KiBjaGVja2VkUmV0dXJu
KEpTT2JqZWN0KiByZXR1cm5WYWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJl
dHVyblZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25F
eGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiwgY29uc3QgQXJnTGlzdCYpOwot
Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJik7Ci0KLSAgICAgICAg
Vk0mIG1fdm07CisgICAgSlNWYWx1ZSBleGVjdXRlUHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiwg
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iaik7CisgICAgSlNWYWx1ZSBleGVjdXRl
TW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0Kiwg
SlNNb2R1bGVFbnZpcm9ubWVudCopOworICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNPYmplY3QqIGV4ZWN1dGVD
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5
cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJn
ZXQpOworICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKworICAgIHZvaWQgZ2V0QXJndW1lbnRz
RGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJ
bmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOworCisgICAgTkVWRVJfSU5MSU5FIEhh
bmRsZXJJbmZvKiB1bndpbmQoVk0mLCBDYWxsRnJhbWUqJiwgRXhjZXB0aW9uKik7CisgICAgdm9p
ZCBub3RpZnlEZWJ1Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiwgRXhjZXB0aW9uKik7CisgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWco
Q2FsbEZyYW1lKiwgRGVidWdIb29rVHlwZSk7CisgICAgc3RhdGljIFN0cmluZyBzdGFja1RyYWNl
QXNTdHJpbmcoVk0mLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mKTsKKworICAgIHZvaWQgZ2V0
U3RhY2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNp
emVfdCBmcmFtZXNUb1NraXAgPSAwLCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisKK3ByaXZhdGU6CisgICAgZW51bSBFeGVjdXRpb25G
bGFnIHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJuIH07CisgICAgCisgICAgc3RhdGljIEpT
VmFsdWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVyblZhbHVlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHJldHVyblZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlNPYmplY3QqIHJldHVy
blZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJldHVyblZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFyZUZv
clJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxsRnJh
bWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3Bl
KiwgY29uc3QgQXJnTGlzdCYpOworCisgICAgSlNWYWx1ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1
cmUmKTsKKworICAgIFZNJiBtX3ZtOwogI2lmIEVOQUJMRShDX0xPT1ApCi0gICAgICAgIENMb29w
U3RhY2sgbV9jbG9vcFN0YWNrOworICAgIENMb29wU3RhY2sgbV9jbG9vcFN0YWNrOwogI2VuZGlm
Ci0gICAgICAgIAorICAgIAogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAjaWYg
IUVOQUJMRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEFTU0VSVF9FTkFCTEVECi0gICAg
ICAgIHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNvZGVJRFRhYmxlKCk7IC8v
IE1hcHMgT3Bjb2RlID0+IE9wY29kZUlELgorICAgIHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bj
b2RlSUQ+JiBvcGNvZGVJRFRhYmxlKCk7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlELgogI2Vu
ZGlmIC8vICFFTkFCTEUoTExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCBBU1NFUlRfRU5BQkxF
RAogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCi0gICAgfTsKLQotICAg
IEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKTsKLQot
ICAgIGlubGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKQotICAgIHsKLSAgICAgICAgLy8gV2Ugd2FudCB0aGUgbmV3IGZyYW1l
IHRvIGJlIGFsbG9jYXRlZCBvbiBhIHN0YWNrIGFsaWduZWQgb2Zmc2V0IHdpdGggYSBzdGFjawot
ICAgICAgICAvLyBhbGlnbmVkIHNpemUuIEFsaWduIHRoZSBzaXplIGhlcmUuCi0gICAgICAgIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAotICAg
ICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpIC0g
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7Ci0KLSAgICAgICAgLy8gQWxpZ24gdGhl
IGZyYW1lIG9mZnNldCBoZXJlLgotICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9m
ZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKLSAgICAgICAgICAgIHN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOwot
ICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAt
IHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBzaXplT2ZW
YXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0KTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEFyZ3VtZW50
cyA9IDB4MTAwMDA7Ci0gICAgdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSosIFZNJiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVz
ZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7Ci0gICAgdW5zaWduZWQg
c2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSos
IFZNJiwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpOwotICAgIHZvaWQgbG9hZFZhcmFyZ3Mo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBmaXJzdEVsZW1lbnREZXN0LCBKU1ZhbHVlIHNvdXJj
ZSwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBWYXJh
cmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFt
ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zm
c2V0LCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRU
aGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4
ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cEZvcndh
cmRBcmd1bWVudHNGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVlLCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBG
b3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1
aW50MzJfdCBsZW5ndGgpOworfTsKKworSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiwgRUNNQU1vZGUpOworCitpbmxpbmUgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZUZvclZh
cmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1
bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKK3sKKyAgICAvLyBXZSB3YW50IHRo
ZSBuZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3RhY2sgYWxpZ25lZCBvZmZzZXQgd2l0
aCBhIHN0YWNrCisgICAgLy8gYWxpZ25lZCBzaXplLiBBbGlnbiB0aGUgc2l6ZSBoZXJlLgorICAg
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAor
ICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAgICAgICBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAtIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworCisgICAgLy8gQWxpZ24gdGhlIGZyYW1lIG9m
ZnNldCBoZXJlLgorICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKAorICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAor
ICAgICAgICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAgIHJldHVybiBDYWxsRnJhbWU6
OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQp
OworfQorCit1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBh
cmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKK3N0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4QXJndW1lbnRzID0gMHgxMDAwMDsKK3Vuc2lnbmVkIHNpemVGcmFtZUZvclZh
cmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTSYsIEpTVmFsdWUgYXJndW1lbnRz
LCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQp
OwordW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSosIFZNJiwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpOwordm9pZCBsb2Fk
VmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUqIGZpcnN0RWxlbWVudERlc3QsIEpTVmFs
dWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lkIHNldHVw
VmFyYXJnc0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFy
Z09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRU
aGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4
ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lkIHNldHVwRm9yd2FyZEFy
Z3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lkIHNldHVwRm9yd2FyZEFy
Z3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0Nh
bGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdWludDMyX3Qg
bGVuZ3RoKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKaW5kZXggYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZi4uOGIz
YTIzOGE0ZGFmMWZjNjc5MTQwZDhiYmVjNzcwOWI4NTY4YmI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgbV9sYWJlbHNbbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpXSA9IGxh
YmVsKCk7CiAKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwg
IiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9n
TG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIg
YXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCkBAIC00MzgsNiArNDM4
LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2ludGVybmFsX2ZpZWxkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2ludGVy
bmFsX2ZpZWxkKQogCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9vcGVuKQorICAgICAg
ICBERUZJTkVfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVfT1Aob3BfcmV0
KQogICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQogICAgICAgICBERUZJTkVfT1Aob3BfdW5z
aWduZWQpCkBAIC01MjUsNyArNTI4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICAgICAgICAgICAgIHJhcmVDYXNlUHJvZmlsZSA9ICZyYXJlQ2FzZVByb2ZpbGVzLmF0
KGJ5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CiAKICAgICAgICAgaWYgKEpJVEludGVybmFs
Ojp2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0aW5nIHNsb3cg
Y29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09m
ZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIHNs
b3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1
Z09mZnNldCgpKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBt
X2Rpc2Fzc2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVTbG93UGF0aChtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCksIGxhYmVsKCkpOwpAQCAtNTg5LDYgKzU5Miw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9z
Y29wZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF90b19zY29wZSkKIAorICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2l0ZXJhdG9yX25leHQpCisKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AodW5zaWduZWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGluYykK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZGVjKQpAQCAtNjI2LDggKzYzMiw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGlmIChKSVRJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIsIGZpcnN0VG8sICIgc2xv
dzogIiwgaXRlciAtIG1fc2xvd0Nhc2VzLmJlZ2luKCksICJcbiIpOwogCi0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xvd0Nhc2VzLmVuZCgpIHx8IGZpcnN0
VG8gIT0gaXRlci0+dG8sICJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29k
ZWdlbi4iKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8gPT0g
KGl0ZXIgLSAxKS0+dG8sICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVn
ZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xv
d0Nhc2VzLmVuZCgpIHx8IGZpcnN0VG8ub2Zmc2V0KCkgIT0gaXRlci0+dG8ub2Zmc2V0KCksICJO
b3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8ub2Zmc2V0KCkgPT0gKGl0ZXIgLSAx
KS0+dG8ub2Zmc2V0KCksICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVn
ZW4uIik7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAg
ICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoJnJhcmVDYXNl
UHJvZmlsZS0+bV9jb3VudGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MDczNTVj
NmQ3MTE4MmFhMDcyOWEyNzQ5MTAwNGY0NWUxZWE2YWMxLi44M2FlMWE3YjY5OGQ2OTMzZGJiOGEw
MzcxOTA0OWVjMjI1ODE4Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI5Nyw2ICsy
OTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlRXhj
ZXB0aW9uSGFuZGxlcnMoKTsKIAorICAgICAgICB2b2lkIGNoZWNrcG9pbnRSZWFjaGVkKCk7Cisg
ICAgICAgIHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXApOworCiAgICAg
ICAgIHZvaWQgYWRkU2xvd0Nhc2UoSnVtcCk7CiAgICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoY29u
c3QgSnVtcExpc3QmKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZSgpOwpAQCAtNjc2LDYgKzY3
OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xv
d1BhdGhGdW5jdGlvbik7CiAKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVu
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisKICAgICAgICAgdm9pZCBlbWl0
UmlnaHRTaGlmdChjb25zdCBJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAg
IHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCkBAIC05MTEsNiAr
OTE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVmVjdG9yPENhbGxSZWNvcmQ+IG1f
Y2FsbHM7CiAgICAgICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7CisgICAgICAgIEhhc2hNYXA8
Qnl0ZWNvZGVJbmRleCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsKICAgICAgICAgVmVjdG9y
PEpJVEdldEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRC
eVZhbEdlbmVyYXRvcj4gbV9nZXRCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCmluZGV4IGUxZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3MWZmY2IyMGI4
NjYuLjA5MWVlOTM4NTMwNWQzNzk3YzJhZGViNmEzNjEwYmUwMzU5YjEyMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3Iu
aCIKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNh
bGxGcmFtZVNodWZmbGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklU
SW5saW5lcy5oIgpAQCAtNDIsOCArNDQsOCBAQAogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1l
LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAorI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTEsNyArNTMs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjplbWl0UHV0Q2FsbFJlc3VsdChj
b25zdCBPcCYgYnl0ZWNvZGUpCiB7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9kc3QpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25Gb3Io
Ynl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZpcnR1YWxSZWdpc3Rlcigp
LCByZWdUMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtNjEsMjAgKzYzLDIxIEBA
IHN0ZDo6ZW5hYmxlX2lmX3Q8CiAsIHZvaWQ+CiBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0
IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKIHsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50
ID0gbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJnQ291bnQgPSBieXRlY29k
ZS5tX2FyZ2M7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0
ZWNvZGUubV9hcmd2KTsKKyAgICBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpOworICAgIGludCByZWdp
c3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JD
YWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9w
X2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1
bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkpLCByZWdUMCk7CiAgICAgICAgIEp1bXAgZG9uZSA9
IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgICAgIHN0b3JlMzIocmVn
VDAsIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLmFkZHJlc3NPZkxhc3RT
ZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAsIGFycmF5UHJvZmlsZUZv
cihtZXRhZGF0YSwgY2hlY2twb2ludCkuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsK
ICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIAogICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudEluY2x1ZGlu
Z1RoaXMpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiB9CiAKIApA
QCAtMjA3LDcgKzIxMCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiB7CiAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0
aW9uLT5hczxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0ZWNvZGUubV9j
YWxsZWU7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGNhbGxlZUZvcihieXRlY29kZSwg
bV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKICAgICAvKiBDYWxsZXIgYWx3YXlzOgog
ICAgICAgICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNhbGxGcmFtZS4K
QEAgLTIzNCw5ICsyMzcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KICAg
ICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpKSk7CiAKLSAgICBpZiAoY29tcGlsZUNhbGxFdmFsKGJ5dGVjb2Rl
KSkgeworICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7
CiAgICAgSnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgcmVnVDAs
IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwpA
QCAtMzgwLDYgKzM4MiwxODQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBjb21waWxl
T3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9j
YWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rp
b24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgewor
ICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8TmFycm93
PjsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdp
ZGUxNj47CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dDxXaWRlMzI+OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgfSkoKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlG
YXN0RnVuY3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJy
YW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGNv
bXBpbGVPcENhbGw8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0lu
ZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1bHQgKGl0
ZXJhdG9yKSBpcyBpbiByZWdUMAorCisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmdm0o
KS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChyZWdUMCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRl
Y29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxP
cEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKworICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFZSZWcgPSBieXRl
Y29kZS5tX25leHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0
eU5hbWVzLT5uZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUo
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0
ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFz
dEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRo
KCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
PE5hcnJvdz47CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlf
ZmFzdDxXaWRlMTY+OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRf
dHJ5X2Zhc3Q8V2lkZTMyPjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fbmV4dCwgcmVnVDApOworICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFu
Y2hJZk5vdEVtcHR5KHJlZ1QwKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlGYXN0
RnVuY3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGdlbmVy
aWNDYXNlLmxpbmsodGhpcyk7CisgICAgb3I4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50
OF90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSksIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEu
bV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMpKTsKKyAgICBjb21waWxlT3BDYWxsPE9wSXRl
cmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBjaGVj
a3BvaW50UmVhY2hlZCgpOworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRvbmUsIHZhbHVlIH0gSlNP
YmplY3QpIGluIHJlZ1QwCisKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMDsKKyAgICBHUFJS
ZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QyOworICAgIEdQUlJlZyBkb25lR1BSID0gcmVnVDE7Cisg
ICAgLy8gaXRlclJlc3VsdEdQUiB3aWxsIGdldCB0cmFzaGVkIGJ5IHRoZSBmaXJzdCBnZXQgYnkg
aWQgYmVsb3cuCisgICAgbW92ZSh2YWx1ZUdQUiwgaXRlclJlc3VsdEdQUik7CisKKyAgICB7Cisg
ICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyUmVzdWx0R1BSKTsKKworICAg
ICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpOworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7Cisg
ICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnBy
b3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpT
VmFsdWVSZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fZG9uZSwgZG9uZUdQUik7CisgICAgICAgIGNoZWNrcG9pbnRSZWFjaGVk
KCk7CisgICAgfQorCisKKyAgICB7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwor
ICAgICAgICBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKKyAgICAgICAgY29uc3QgYm9vbCBzaG91
bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBmYWxzZTsKKyAgICAgICAgSnVtcExpc3Qg
aXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVHUFIp
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKworICAgICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4p
OworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKworICAg
ICAgICBpdGVyYXRpb25Eb25lLmxpbmsodGhpcyk7CisgICAgfQorCisgICAgZmFzdENhc2UubGlu
ayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2Fs
bFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0lu
Zm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsK
KworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7
CisgICAgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9uZVZSZWcgPSBieXRlY29kZS5tX2Rv
bmU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisKKyAgICAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAgICAg
ICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7CisgICAg
ICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwor
CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+
ZG9uZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIAorICAgICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFBy
b2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKKyAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CisgICAgICAgIGVtaXRKdW1w
U2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAgIG5vdE9iamVjdC5saW5r
KHRoaXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1
bHRJc05vdE9iamVjdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
KTsKKyAgICB9CisKKyAgICB7ICAgCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Cisg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOworICAg
ICAgICBHUFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QwOworCisgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OworCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVz
dWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQorCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKaW5kZXggN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1NjU1MzNmNC4uODU0MmIz
NzkxOTZkOGE2YTIyNmViZGEwYjAzZDNjMzRkMjc3N2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaWYg
RU5BQkxFKEpJVCkKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJD
b21tb25TbG93UGF0aHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE4Myw2ICsxODUsMjUgQEAgQUxXQVlT
X0lOTElORSBib29sIEpJVDo6aGFzQW55U2xvd0Nhc2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5PiYg
c2xvd0Nhc2VzLCBWZWN0b3IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEpJ
VDo6Y2hlY2twb2ludFJlYWNoZWQoKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRl
Y29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3Qv
Y29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIpOwor
ICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fY2hlY2twb2ludExhYmVscy5hZGQobV9ieXRlY29kZUluZGV4LCBsYWJlbCgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wIGp1bXApCit7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhh
dCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNv
ZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3Bv
aW50KCkgKyAxKTsKKworICAgIGF1dG8gaXRlciA9IG1fY2hlY2twb2ludExhYmVscy5maW5kKG1f
Ynl0ZWNvZGVJbmRleCk7CisgICAgQVNTRVJUKGl0ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxzLmVu
ZCgpKTsKKyAgICBqdW1wLmxpbmtUbyhpdGVyLT52YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZU19J
TkxJTkUgdm9pZCBKSVQ6OmFkZFNsb3dDYXNlKEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQobV9i
eXRlY29kZUluZGV4KTsgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmlu
ZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNl
dC4KQEAgLTMxOSw3ICszNDAsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YS5tX3Byb2ZpbGUpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodmFsdWVQcm9maWxlRm9y
KG1ldGFkYXRhLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSk7CiB9CiAKIGlubGluZSB2
b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwg
UmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2FlMTUwY2M2
NjEwNzYyYmFjYzhiZTQyMjA3M2FhZDY0YWIzMTE5MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMzZGZi
YmYwZTMzNjBkMzZmNTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0xMzQsNiArMTM0LDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xvCiAg
ICAgQVNTRVJUKHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKIH0KIAordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNl
IGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCA4ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIy
NjY1Li45ZmNjNDFkZWM0NTgyYzk2NTI5MjM2NTVkYThmMzAyNjk1ZGY3MDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRpb24oVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNH
bG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVS
TkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJy
b3IoQ29kZUJsb2NrKikgV1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggOGRlYTdm
Mjc4ZTc2NjJlNTAzMTRjZWI5YjA4MzM5Zjg3YmZkYTQ5Ny4uOGJiMThjMjFmNDJhOWY1N2NkYzA1
M2ZkZGU4YzQ1MDFkNDhlM2M2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcnJheUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJC
eXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJD
aGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lu
bGluZXMuaCIKQEAgLTgyLDYgKzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKICAgICBTbG93UGF0
aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIGRhdGFMb2dMbklmKExM
SU5UX1RSQUNJTkcgJiYgT3B0aW9uczo6dHJhY2VMTEludFNsb3dQYXRoKCksICJDYWxsaW5nIHNs
b3cgcGF0aCAiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsgXAogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNpZm5kZWYgTkRFQlVHCkBAIC02OTMsNyArNjk1
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiB9
CiAKIAotc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNl
Q2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRp
YyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBw
YywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3Bl
cnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3NDMs
MzkgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICBpZiAoc2xvdC5pc1Vu
c2V0KCkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRVbnNldE1vZGUo
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7Ci0g
ICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVj
dHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0
UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi0K
LUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNWYWx1
ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEp
CiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0
QnlJZD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
ayk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5k
KGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNl
VmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwotICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkgPSBy
ZXN1bHQ7Ci0gICAgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
CiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZhbHVl
LmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQogICAgICAgICAmJiAhc2xv
dC5pc1Vuc2V0KCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3Ry
dWN0dXJlSUQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1v
ZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAg
Y2FzZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0
dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRN
b2RlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlByb3RvTG9hZDoKLSAg
ICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnBy
b3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQg
PSBtZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJ
RCA9IDA7CkBAIC03OTksMzUgKzc5NiwxMDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZCkKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFy
aW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CisgICAgICAgICAgICBtZXRhZGF0
YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKIAogICAgICAgICAgICAgLy8gUHJl
dmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgICAg
ICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7Cisg
ICAgICAgICAgICBtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgICAg
IAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJs
ZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVy
ZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1
cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zm
c2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihjb2RlQmxvY2spOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFVO
TElLRUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYm
IHNsb3QuaXNWYWx1ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRh
LmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgewogICAgICAgICAg
ICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlVmFsdWUpOwogCi0gICAgICAgICAgICBp
ZiAoISgtLW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkK
KyAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQog
ICAgICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGdsb2JhbE9iamVjdCwg
dm0sIGNvZGVCbG9jaywgcGMsIG1ldGFkYXRhLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNB
cnJheShiYXNlVmFsdWUpICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewog
ICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldEFycmF5
TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlM
ZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwo
KS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1v
ZGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUu
b2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAg
ICAgICB9CiAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQog
Ci0gICAgTExJTlRfUFJPRklMRV9WQUxVRShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKKyAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9w
cm9wZXJ0eSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9iYXNlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0
QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsK
K30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVu
X2dldF9uZXh0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVu
X2dldF9uZXh0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2Fs
bGluZyBzbG93IG9wZW5fZ2V0X25leHQiKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BJdGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgUmVnaXN0ZXImIG5leHRSZWdpc3RlciA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpOworCisgICAgSlNWYWx1ZSByZXN1
bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRl
cmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBuZXh0UmVnaXN0ZXIgPSByZXN1bHQ7
CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLm1fYnVja2V0
c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2Rv
bmUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2Rv
bmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNs
b3cgbmV4dF9nZXRfZG9uZSIpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJh
dG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7CisgICAgLy8gV2UgdXNlIG1fdmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJu
IHZhbHVlIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBp
dCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4KKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJu
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIFJlZ2lzdGVy
JiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsK
KworICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZh
Y2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9y
bUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJu
LCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsK
KyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRz
WzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFs
dWUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3Zh
bHVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBz
bG93IG5leHRfZ2V0X3ZhbHVlIik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRl
cmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1
cm4gdmFsdWUgdG1wIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29k
ZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4KKyAgICBSZWdpc3RlciYgdmFsdWVS
ZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBK
U1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gdmFsdWVSZWdpc3Rlci5qc1ZhbHVlKCk7CisKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFs
T2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRh
Lm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IHZhbHVlUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KS5tX3ZhbHVlUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
ICAgICBMTElOVF9FTkQoKTsKIH0KIAorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xNTYzLDcgKzE2MzQsNyBAQCBp
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1l
LCBDb2RlU3BlY2lhbGl6YXRpb25LaQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGlu
ZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgT3AmJiBieXRlY29kZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSAwKQogewogICAg
IC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgpAQCAtMTU3
MSwxNiArMTY0MiwxNiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZQogICAgIC8vIC0gSWYgcG9z
c2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCiAgICAgLy8gLSBSZXR1cm4gYSB0
dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJh
bWUuCiAgICAgCi0gICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fY2FsbGVlKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgY2FsbGVlRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsK
ICAgICAKLSAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gYnl0ZWNvZGUu
bV9hcmd2OworICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBzdGFja09m
ZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hlY2twb2ludEluZGV4KTsKICAgICAK
LSAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNvZGUu
bV9hcmdjKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkp
OwogICAgIGNhbGxlZUZyYW1lLT51bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90OjpjYWxsZWUpKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxl
ckZyYW1lKGNhbGxGcmFtZSk7CiAgICAgCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spOwotICAgIHJldHVybiBzZXRVcENhbGwoY2FsbGVlRnJhbWUsIGtp
bmQsIGNhbGxlZUFzVmFsdWUsICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJu
IHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJmNhbGxMaW5rSW5m
b0ZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jYWxsKQpAQCAtMTYwNCw2ICsxNjc1LDI4IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BDb25zdHJ1
Y3Q+KCksIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcg
c2xvdyBvcGVuX2NhbGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBn
ZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigp
LCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpKTsKK30KKworTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwpOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworCisvLyAgICBk
YXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0X2NhbGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFz
PE9wSXRlcmF0b3JOZXh0PigpLCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVO
ZXh0KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zv
cl92YXJhcmdzKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xOTkwLDYgKzIwODMsNDQgQEAg
c3RhdGljIHZvaWQgaGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNHbG9iYWxPYmplY3QKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNv
ZGUubV9kc3QpID0gcmVzdWx0OwogfQogCitzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck9wZW5D
aGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IE9wSXRlcmF0b3JPcGVuJiBieXRlY29kZSkKK3sKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7Cisg
ICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSlNWYWx1ZSBuZXh0
ID0gaXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KSA9IG5leHQ7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRs
ZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck5leHQmIGJ5dGVjb2Rl
LCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZSYgc2lkZVN0YXRlKQoreworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50SW5k
ZXggPSBzaWRlU3RhdGUuYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCk7CisKKyAgICBhdXRvJiB2
YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOwor
ICAgIGF1dG8gaXRlcmF0b3JSZXN1bHRPYmplY3QgPSBzaWRlU3RhdGUudG1wc1tPcEl0ZXJhdG9y
TmV4dDo6bmV4dFJlc3VsdF07CisgICAgYXV0byBuZXh0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpOyAgICAKKworICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5vdCBPU1IgZXhpdCB0byBhIGNoZWNrcG9pbnQg
Zm9yIGZhc3QgY2FzZXMuIik7CisKKyAgICBhdXRvJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsKKyAgICBpZiAoY2hlY2twb2ludEluZGV4ID09
IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7CisgICAgICAgIGRvbmVSZWdpc3RlciA9IGl0ZXJh
dG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKwor
ICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAoZG9uZVJlZ2lzdGVyLmpzVmFsdWUoKS50b0Jv
b2xlYW4oZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgdmFsdWVSZWdpc3RlciA9IGpzVW5kZWZpbmVk
KCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmpl
Y3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUpOworfQorCiBpbmxp
bmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtOjpSZWYgcGMpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIWNvZGVCbG9jay0+dm0oKS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkpOwpAQCAtMjA2
Niw2ICsyMTk3LDE1IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9j
aGVja3BvaW50X29zcl9leGl0KENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgICAgIGhhbmRsZVZh
cmFyZ3NDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wVGFp
bENhbGxWYXJhcmdzPigpLCAqc2lkZVN0YXRlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JPcGVuQ2hl
Y2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yT3Bl
bj4oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6
IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBn
bG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKSwgKnNpZGVTdGF0ZS5nZXQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwMyw2ICsyMjQzLDEy
IEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTQ2VsbCogY2VsbCkKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsK
IH0KIAorZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFs
dWUpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFs
dWUpCit7CisgICAgZGF0YUxvZ0xuKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworfQorCiBleHRl
cm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludF9jcmFzaCgpCiB7CiAgICAg
Q1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQppbmRleCBiNTY5OWMzMGQyY2RhZmE0ZjkzYzNhOWYwOTgwNTcxYzgxNzY3
YzFhLi5mOWEzNGRhYjM2ZDlmYTUyNzU2YTE5OGIyZDc0Zjc1MmM1MzhhYzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBA
IC0xMDMyLDcgKzEwMzIsNyBAQCBtYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2Rl
TmFtZSwgc2l6ZSkKICAgICBzaXplKGRlZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVX
aWRlMzIsIG1hY3JvIChmKSBmKCkgZW5kKQogZW5kCiAKLW1hY3JvIGNhbGxUYXJnZXRGdW5jdGlv
bihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQ
dHJUYWcpCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBj
YWxsZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAg
Y2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKICAgICBlbHNlCkBAIC0xMDQ1LDExICsxMDQ1LDEx
IEBAIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQCiAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBM
TEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCiAgICAgICAgICMgY3Jhc2hl
cy4KICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAgIGRpc3Bh
dGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgICAgIGRpc3Bh
dGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0Vmly
dHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBlbmQKICAgICBkZWZpbmVPU1JFeGl0UmV0dXJu
TGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxs
KCkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQor
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCiBtYWNybyBwcmVwYXJlRm9y
UmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQpAQCAt
MTExNyw3ICsxMTE3LDExIEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAx
LCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZwog
ZW5kCiAKLW1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCittYWNybyBzbG93UGF0aEZvckNv
bW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1Bh
dGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFy
ZUNhbGwpCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGNhbGxDYWxsU2xvd1BhdGgoCiAgICAgICAg
IHNsb3dQYXRoLAogICAgICAgICAjIFRob3NlIGFyZSByMCBhbmQgcjEKQEAgLTExMjYsNyArMTEz
MCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZy
YW1lUHRyLCBzcAogICAgICAgICAgICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBT
bG93UGF0aFB0clRhZykKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5j
dGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFn
KQogICAgICAgICBlbmQpCiBlbmQKIApAQCAtMjAxNiw3ICsyMDIwLDcgQEAgbWFjcm8gZG9DYWxs
VmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBmcmFtZVNs
b3dQYXRoLCBzbG8KICAgICAgICAgICAgIHN1YnAgcjEsIENhbGxlckZyYW1lQW5kUENTaXplLCBz
cAogICAgICAgICBlbmQKICAgICBlbmQKLSAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAg
IHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRp
c3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKIAogCkBAIC0yMDc5LDcgKzIwODMs
NyBAQCBlbmQpCiAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQu
CiAKIF9sbGludF9vcF9jYWxsX2V2YWw6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQ
YXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKICAgICAgICAg
bmFycm93LAogICAgICAgICBPcENhbGxFdmFsLApAQCAtMjA4OCw3ICsyMDkyLDcgQEAgX2xsaW50
X29wX2NhbGxfZXZhbDoKICAgICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRf
b3BfY2FsbF9ldmFsX3dpZGUxNjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhG
b3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTE2LAogICAgICAgICB3aWRl
MTYsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDk3LDcgKzIxMDEsNyBAQCBfbGxpbnRfb3Bf
Y2FsbF9ldmFsX3dpZGUxNjoKICAgICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxp
bnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1Bh
dGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTMyLAogICAgICAgICB3
aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMTA3LDcgKzIxMTEsNyBAQCBfbGxpbnRf
b3BfY2FsbF9ldmFsX3dpZGUzMjoKIAogCiBjb21tb25PcChsbGludF9nZW5lcmljX3JldHVybl9w
b2ludCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6ZSkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChz
aXplLCBPcENhbGxFdmFsLCBtYWNybyAoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9w
Q2FsbEV2YWwsIG1fcHJvZmlsZSwgbV9kc3QsIG1hY3JvICgpCiAgICAgICAgIGRpc3BhdGNoT3Ao
c2l6ZSwgb3BfY2FsbF9ldmFsKQogICAgIGVuZCkKIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYWUyZTM3
NzNmZmRjYzQwNjc0YzdhYWMwYzFkNGZlNmNkMGZiNzg1OS4uODYxMzZlODU3YzlmNzgyMmIyNDQ2
YzYyNmJmZGM3YTNkZmJiMmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTY4LDI2ICs2OCwyNiBAQCBtYWNy
byBtYWtlUmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRj
aCwgZm4pCiAgICAgZm4obWFjcm8gKHZhbHVlKQogICAgICAgICBtb3ZlIHZhbHVlLCB0MwogICAg
ICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHQxLCB0MykKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0
MSwgdDMpCiAgICAgICAgIGdldChtX2RzdCwgdDEpCiAgICAgICAgIHN0b3JlcSB0MywgW2Nmciwg
dDEsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1ZSwg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzW21ldGFkYXRhXQor
bWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB2
YWx1ZSkKKyAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2Zp
bGVOYW1lJS5tX2J1Y2tldHNbbWV0YWRhdGFdCiBlbmQKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxs
aW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1t
YWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFj
cm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRQQygpCiAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jh
d1BvaW50ZXJbUEJdLCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MSkK
KyAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQxKQogICAg
IHN0b3JlcSByMCwgW2NmciwgdDEsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0
LCB0MiwgdDEpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIwKQorICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKICAgICBk
aXNwYXRjaCgpCiBlbmQKIApAQCAtMTM0MCw3ICsxMzQwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3AKICAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZGkg
T3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eUlkRGlyZWN0LCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9w
cm9maWxlLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoK
QEAgLTEzNDgsNTMgKzEzNDgsNTkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRf
ZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBkaXNw
YXRjaCgpCiBlbmQpCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5
SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorIyBUaGUg
YmFzZSBvYmplY3QgaXMgZXhwZWN0ZWQgaW4gdDMKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVy
KG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xh
YmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQyLCB0MSkKLSAgICBs
b2FkYiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5tb2RlW3QyXSwgdDEKLSAg
ICBnZXQobV9iYXNlLCB0MCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0
MCwgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JW1vZGVNZXRhZGF0YU5hbWUlLm1vZGVbdDJdLCB0MQogCiAub3BHZXRCeUlkRGVmYXVsdDoK
ICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpEZWZhdWx0LCAub3BHZXRCeUlk
UHJvdG9Mb2FkCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBs
b2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1
Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxv
YWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNo
ZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5l
cSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAg
IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFByb3Rv
TG9hZDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5v
cEdldEJ5SWRBcnJheUxlbmd0aAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10s
IHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9M
b2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCi0gICAgYmluZXEgdDMsIHQxLCAub3BHZXRCeUlk
U2xvdwotICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90
b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCi0gICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKKyAg
ICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90
b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIHNsb3dMYWJl
bAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1l
JS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZHAgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRT
bG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAp
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAK
IC5vcEdldEJ5SWRBcnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRN
b2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAKLSAgICBh
cnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5n
dGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCAu
b3BHZXRCeUlkU2xvdwotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlk
U2xvdworICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQorICAg
IGJ0aXogdDAsIElzQXJyYXksIHNsb3dMYWJlbAorICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVN
YXNrLCBzbG93TGFiZWwKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0M10sIHQwLCB0MSkKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAotICAgIGJpbHQgdDAsIDAs
IC5vcEdldEJ5SWRTbG93CisgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51bWJl
clRhZywgdDAKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVy
bih0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEu
dW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5
SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIFZhbHVlVW5kZWZpbmVkKQor
ICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnVu
c2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFs
dWVVbmRlZmluZWQpCiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCitlbmQKKworbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDApCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAg
ICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFkYXRhLCBtX3Byb2Zp
bGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorCiAub3BHZXRCeUlk
U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAg
ZGlzcGF0Y2goKQpAQCAtMTQwMiw3ICsxNDA4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQK
IC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3Bf
Z2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxl
LCB0MiwgcjApCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNDk3LDcgKzE1MDMsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwg
c2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZXEgcmVz
dWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwg
dDUsIHJlc3VsdCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwg
dDUsIHJlc3VsdCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTU4LDcgKzE1
NjQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAub3BHZXRCeVZhbERvbmU6CiAgICAg
c3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUs
IHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAg
ICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNTcxLDcg
KzE1NzcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWws
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9zclJldHVyblBvaW50OgogICAg
IGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAg
IG1ldGFkYXRhKHQ1LCB0MikKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHIwKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkKICAgICByZXR1
cm4ocjApCiAKIGVuZCkKQEAgLTE5NDgsNiArMTk1NCwzMCBAQCBtYWNybyBhcnJheVByb2ZpbGVG
b3JDYWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKIC5kb25lOgogZW5kCiAKK21hY3JvIGNhbGxIZWxw
ZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKQorICAgIG1ldGFkYXRhKHQ1LCB0MCkKKyAgICBnZXRDYWxsZWUodDApCisKKyAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0
U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQwLCB0MykKKyAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisKKyAgICBnZXRB
cmd1bWVudFN0YXJ0KHQzKQorICAgIGxzaGlmdGkgMywgdDMKKyAgICBuZWdwIHQzCisgICAgYWRk
cCBjZnIsIHQzCisgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCisgICAgZ2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXModDIpCisgICAgc3RvcmVQQygpCisgICAgc3RvcmVpIHQyLCBBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbW92ZSB0Mywgc3AK
KyAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAg
IGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50
cnlQdHJUYWcpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rl
ciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorCiBtYWNybyBjb21tb25D
YWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHBy
b2xvZ3VlKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAg
bWV0YWRhdGEodDUsIHQwKQpAQCAtMTk1NiwyNCArMTk4NiwxOSBAQCBtYWNybyBjb21tb25DYWxs
T3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xv
Z3VlKQogICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0
KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCi0gICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0g
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9j
YWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgotICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MykKLSAgICAgICAgYnFuZXEgdDMsIHQyLCAub3BD
YWxsU2xvdwotICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCB0MykKLSAg
ICAgICAgbHNoaWZ0aSAzLCB0MwotICAgICAgICBuZWdwIHQzCi0gICAgICAgIGFkZHAgY2ZyLCB0
MwotICAgICAgICBzdG9yZXEgdDIsIENhbGxlZVt0M10KLSAgICAgICAgZ2V0dShzaXplLCBvcGNv
ZGVTdHJ1Y3QsIG1fYXJnYywgdDIpCi0gICAgICAgIHN0b3JlUEMoKQotICAgICAgICBzdG9yZWkg
dDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICAg
ICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwg
SlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCi0KLSAg
ICAub3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAg
bWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCisgICAg
ICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50U3RhcnQoZHN0KQorICAgICAgICAg
ICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgZHN0KQorICAgICAgICBlbmQKKwor
ICAgICAgICBtYWNybyBnZXRBcmd1bWVudENvdW50KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6
ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIGRzdCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgY2Fs
bEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1f
ZHN0LCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdl
dEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291bnQpCiAgICAgZW5kKQogZW5kCiAKQEAgLTIy
NzYsNyArMjMwMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9w
R2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgbWFjcm8gZ2V0UHJv
cGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFu
ZFt0NV0sIHQxCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0
MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDIpCisgICAgICAg
IHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIpCiAgICAgICAg
IHJldHVybih0MikKICAgICBlbmQKIApAQCAtMjI4NCwxNCArMjMwOSwxNCBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1f
b3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGxvYWRxIFt0MF0sIHQwCiAgICAgICAgIHRkekNoZWNr
SWZOZWNlc3NhcnkodDApCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUs
IHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKICAgICBtYWNybyBnZXRDbG9zdXJl
VmFyKCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRb
dDVdLCB0MQogICAgICAgICBsb2FkcSBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAs
IHQxLCA4XSwgdDAKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDAp
CisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDAp
CiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIApAQCAtMjU1MSw3ICsyNTc2LDYgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9wcm9maWxlX2NvbnRyb2xfZmxvdywgT3BQcm9maWxlQ29udHJv
bEZsb3csIG1hY3JvIChzaXplLAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotCiBsbGludE9wV2l0
aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBzdWJpIDEsIHQwCkBAIC0yNTY3LDYg
KzI1OTEsMTQ3IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRS
ZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAorbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEoYTIsIHQ1KQor
ICAgIG1hY3JvIGZhc3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3RfbmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMTYoKQorICAg
ICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KQorICAgIGVu
ZAorICAgIG1hY3JvIGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9y
X29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUoZmFzdE5hcnJvdywgZmFz
dFdpZGUxNiwgZmFzdFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9wKCkgZW5kKQorCisgICAg
IyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNzZW1ibHkgc2luY2UgaXQn
cyB0aGUgImZhc3QiIGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHByIEl0ZXJhdGlvbk1vZGU6
OkdlbmVyaWMsIC5pdGVyYXRvck9wZW5HZW5lcmljCisgICAgZGlzcGF0Y2goKQorCisuaXRlcmF0
b3JPcGVuR2VuZXJpYzoKKyAgICBtYWNybyBnb3RvR2V0QnlJZENoZWNrcG9pbnQoKQorICAgICAg
ICBqbXAgLmdldEJ5SWRTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkK
KyAgICAgICAgZ2V0KG1fc3ltYm9sSXRlcmF0b3IsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3Jv
IGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkKKyAgICAgICAgZ2V0dShzaXplLCBP
cEl0ZXJhdG9yT3BlbiwgbV9zdGFja09mZnNldCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8g
Z2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0KQorICAgICAgICBtb3ZlIDEsIGRzdAor
ICAgIGVuZAorCisKKyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX29wZW4sIF9sbGludF9zbG93
X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsLCBPcEl0ZXJhdG9yT3BlbiwgbV9pdGVyYXRvclByb2Zp
bGUsIG1faXRlcmF0b3IsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldEJ5SWRD
aGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNT
dGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXRCeUlkU3RhcnQ6Cisg
ICAgbWFjcm8gc3RvcmVOZXh0QW5kRGlzcGF0Y2godmFsdWUpCisgICAgICAgIG1vdmUgdmFsdWUs
IHQyCisgICAgICAgIGdldChtX25leHQsIHQxKQorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQx
LCA4XQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0
LCBtX2l0ZXJhdG9yLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5pdGVyYXRvck9w
ZW5HZW5lcmljR2V0TmV4dFNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9y
T3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmlj
R2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKworLml0
ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQorICAgIGRpc3BhdGNoKCkKKworZW5kKQor
CitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKworICAgIGxvYWRW
YXJpYWJsZShnZXQsIG1fbmV4dCwgdDApCisgICAgYnRxbnogdDAsIHQwLCAuaXRlcmF0b3JOZXh0
R2VuZXJpYworICAgIG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAg
ICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdykKKyAgICBl
bmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkK
KyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMikKKyAg
ICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3Jv
IChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlz
IHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJi
ZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JOZXh0R2Vu
ZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yTmV4dEdlbmVyaWM6CisgICAgbWFjcm8g
Z290b0dldERvbmVDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXREb25lU3RhcnQKKyAgICBl
bmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX25leHQsIGRzdCkK
KyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkK
KyAgICAgICAgZ2V0dShzaXplLCBPcEl0ZXJhdG9yTmV4dCwgbV9zdGFja09mZnNldCwgZHN0KQor
ICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0KQor
ICAgICAgICBtb3ZlIDEsIGRzdAorICAgIGVuZAorCisgICAgIyBVc2UgbV92YWx1ZSBzbG90IGFz
IGEgdG1wIHNpbmNlIHdlIGFyZSBnb2luZyB0byB3cml0ZSB0byBpdCBsYXRlci4KKyAgICBjYWxs
SGVscGVyKG9wX2l0ZXJhdG9yX25leHQsIF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9j
YWxsLCBPcEl0ZXJhdG9yTmV4dCwgbV9uZXh0UmVzdWx0UHJvZmlsZSwgbV92YWx1ZSwgcHJlcGFy
ZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0RG9uZUNoZWNrcG9pbnQsIG1ldGFkYXRhLCBn
ZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1
ZGluZ1RoaXNDb3VudCkKKworLmdldERvbmVTdGFydDoKKyAgICBtYWNybyBzdG9yZURvbmVBbmRK
bXBUb0dldFZhbHVlKGRvbmVWYWx1ZSkKKyAgICAgICAgIyB1c2UgdDAgYmVjYXVzZSBwZXJmb3Jt
R2V0QnlJREhlbHBlciB1c3VhbGx5IHB1dHMgdGhlIGRvbmVWYWx1ZSB0aGVyZSBhbmQgb2ZmbGlu
ZWFzbSB3aWxsIGVsaWRlIHRoZSBzZWxmIG1vdmUuCisgICAgICAgIG1vdmUgZG9uZVZhbHVlLCB0
MAorICAgICAgICBnZXQobV9kb25lLCB0MSkKKyAgICAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwg
OF0KKyAgICAgICAgam1wIC5nZXRWYWx1ZVN0YXJ0CisgICAgZW5kCisKKworICAgIGxvYWRWYXJp
YWJsZShnZXQsIG1fdmFsdWUsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLmdldERv
bmVTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fZG9uZU1v
ZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBzaXplLCBtZXRhZGF0YSwg
c3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSkKKworLmdldERvbmVTbG93OgorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCisgICAgYnJhbmNo
SWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCisgICAg
bG9hZFZhcmlhYmxlKGdldCwgbV9kb25lLCB0MCkKKworICAgICMgc3RvcmVEb25lQW5kSm1wVG9H
ZXRWYWx1ZSBwdXRzIHRoZSBkb25lVmFsdWUgaW50byB0MAorLmdldFZhbHVlU3RhcnQ6CisgICAg
IyBCcmFuY2ggdG8gc2xvdyBpZiBub3QgbWlzYyBwcmltaXRpdmUuCisgICAgYnRxbnogdDAsIH4w
eGYsIC5nZXRWYWx1ZVNsb3cKKyAgICBidGl6IHQwLCAweDEsIC5ub3REb25lCisgICAgZGlzcGF0
Y2goKQorCisubm90RG9uZToKKyAgICBtYWNybyBzdG9yZVZhbHVlQW5kRGlzcGF0Y2godikKKyAg
ICAgICAgbW92ZSB2LCB0MgorICAgICAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgICAgIHN0b3Jl
cSB0MiwgW2NmciwgdDEsIDhdCisgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQw
LCAweGJhZGRiMDFlKQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICAjIFJlbG9h
ZCB0aGUgbmV4dCByZXN1bHQgdG1wIHNpbmNlIHRoZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUg
Y2xvYmJlcmVkIHQzLgorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQorICAgICMg
V2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBo
ZXJlIHNpbmNlIHdlIHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgorICAgIHBlcmZv
cm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3Zh
bHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmRE
aXNwYXRjaCkKKworLmdldFZhbHVlU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKKwog
bGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwgT3BHZXRJbnRlcm5hbEZp
ZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRWYXJpYWJs
ZShnZXQsIG1fYmFzZSwgdDEpCiAgICAgZ2V0dShzaXplLCBPcEdldEludGVybmFsRmllbGQsIG1f
aW5kZXgsIHQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
dHJhbnNmb3JtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3Jt
LnJiCmluZGV4IDhkNzY3MTE2YzA1NGU1ZWE2NjRlZjQwNjJjNTZmMjYwNWUwZDhiNDUuLjU4OWFl
MGUwZjNlZDM0YjY2MWU4NTYyYmNhMjk4MDJlYzEwZTViNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKQEAgLTYyOSw3ICs2MjksNyBAQCBlbmQK
IAogY2xhc3MgTm9kZQogICAgIGRlZiB2YWxpZGF0ZQotICAgICAgICByYWlzZSAiVW5yZXNvbHZl
ZCAje2R1bXB9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIHJhaXNlICJVbnJlc29s
dmVkICcje2R1bXB9JyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgogICAgIGVuZAogICAgIAogICAg
IGRlZiB2YWxpZGF0ZUNoaWxkcmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBiOGRlOTY1NTgyZjdkOTEyNzEzMzdkNTQzMTkw
M2U4MzE4YzI2ZjQ3Li41N2IzNzdkZWFlYTJhYzM3ZWQ3ZjRjNGFlNzQ5ZjRiYTMyOTkzMWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMTUzLDggKzE1NCwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgUkVUVVJOX1BST0ZJTEVEKHZhbHVlX18pIFwK
ICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcodmFsdWVfXywgUFJPRklMRV9WQUxVRShyZXR1cm5W
YWx1ZV9fKSkKIAotI2RlZmluZSBQUk9GSUxFX1ZBTFVFKHZhbHVlKSBkbyB7IFwKLSAgICAgICAg
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorI2RlZmluZSBQUk9GSUxFX1ZBTFVFKHZhbHVlX18pIFwK
KyAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlX18sIG1fcHJvZmlsZSkKKworI2RlZmluZSBQUk9G
SUxFX1ZBTFVFX0lOKHZhbHVlLCBwcm9maWxlTmFtZSkgZG8geyBcCisgICAgICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5hbWUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiBzdGF0aWMgdm9pZCB0aHJv
d0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGhyb3dTY29wZSYgc2NvcGUpCkBAIC05NjUsNiArOTY5LDEyNyBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaW5fYnlfaWQpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNl
VmFsdWUpLT5oYXNQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSkpKTsKIH0KIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4K
K1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0
cikKK3sKKyAgICAvLyBEb24ndCBzZXQgUEM7IHdlIGNhbid0IHRocm93IGFuZCBpdCdzIHJlbGF0
aXZlbHkgc2xvdy4KKyAgICBCRUdJTl9OT19TRVRfUEMoKTsKKworICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JPcGVuLCB3aWR0aD4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9ICpyZWludGVycHJldF9jYXN0PE9wSXRlcmF0b3JPcGVuOjpNZXRhZGF0YSo+KG1l
dGFkYXRhUHRyKTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gR0VUX0MoYnl0ZWNvZGUubV9pdGVy
YWJsZSkuanNWYWx1ZSgpOworICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRlcmFibGUsIG1faXRlcmFi
bGVQcm9maWxlKTsKKyAgICBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yID0gR0VUX0MoYnl0ZWNvZGUu
bV9zeW1ib2xJdGVyYXRvcikuanNWYWx1ZSgpOworICAgIGF1dG8mIGl0ZXJhdG9yID0gR0VUKGJ5
dGVjb2RlLm1faXRlcmF0b3IpOworCisgICAgYXV0byBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0
aW9uID0gWyZdIHsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNh
dXNlIHdlIGp1c3QgY2hlY2tlZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2YWxpZC4KKyAgICAg
ICAgSlNGdW5jdGlvbiogc3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNG
dW5jdGlvbio+KHZtLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgIGlmICghc3ltYm9sSXRlcmF0
b3JGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOyAK
KworICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
RnVuY3Rpb24oKSAhPSBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGdvb2Qg
dG8gZ28uCisgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0g
bWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpG
YXN0QXJyYXk7CisgICAgICAgIEdFVChieXRlY29kZS5tX25leHQpID0gSlNWYWx1ZSgpOworICAg
ICAgICBhdXRvKiBpdGVyYXRlZE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGl0ZXJhYmxlKTsK
KyAgICAgICAgeworICAgICAgICAgICAgaXRlcmF0b3IgPSBKU0FycmF5SXRlcmF0b3I6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIGl0ZXJhdGVkT2Jq
ZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpOworICAgICAgICB9CisgICAgICAgIFBST0ZJTEVf
VkFMVUVfSU4oaXRlcmF0b3IuanNWYWx1ZSgpLCBtX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAgICAg
IHJldHVybiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgfTsKKworICAgIGlmIChpdGVy
YWJsZS5pbmhlcml0czxKU0FycmF5Pih2bSkpIHsKKyAgICAgICAgaWYgKHByZXBhcmVGb3JGYXN0
QXJyYXlJdGVyYXRpb24oKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpCisgICAgICAgICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRp
b25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdG8gdGhlIGJ5dGVj
b2RlIHRvIHRyeSBpbiBnZW5lcmljIG1vZGUuCisgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRh
ZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8
IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpOworfQorCitTbG93
UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRh
UHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PE5hcnJvdz4oY2FsbEZy
YW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRI
IGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVy
YXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOwor
fQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rf
d2lkZTMyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQq
IG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUz
Mj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCit0ZW1wbGF0ZTxPcGNvZGVTaXpl
IHdpZHRoPgorU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1l
dGFkYXRhUHRyKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
S25vd25XaWR0aDxPcEl0ZXJhdG9yTmV4dCwgd2lkdGg+KCk7CisgICAgYXV0byYgbWV0YWRhdGEg
PSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yTmV4dDo6TWV0YWRhdGEqPihtZXRhZGF0YVB0
cik7CisKKyAgICBBU1NFUlQoIUdFVChieXRlY29kZS5tX25leHQpLmpzVmFsdWUoKSk7CisgICAg
SlNPYmplY3QqIGl0ZXJhdG9yID0ganNDYXN0PEpTT2JqZWN0Kj4oR0VUKGJ5dGVjb2RlLm1faXRl
cmF0b3IpLmpzVmFsdWUoKSk7OworICAgIEpTQ2VsbCogaXRlcmFibGUgPSBHRVQoYnl0ZWNvZGUu
bV9pdGVyYWJsZSkuanNWYWx1ZSgpLmFzQ2VsbCgpOworICAgIGlmIChhdXRvIGFycmF5SXRlcmF0
b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHZtLCBpdGVyYXRvcikpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXkqPih2bSwgaXRlcmFi
bGUpKSB7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZS5vYnNlcnZlU3Ry
dWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOworCisgICAgICAgICAgICBtZXRhZGF0YS5t
X2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRh
dGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgICAgICAgICAgYXV0
byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0
b3I6OkZpZWxkOjpJbmRleCk7CisgICAgICAgICAgICBpbnQ2NF90IGluZGV4ID0gaW5kZXhTbG90
LmdldCgpLmFzQW55SW50KCk7CisgICAgICAgICAgICBBU1NFUlQoMCA8PSBpbmRleCAmJiBpbmRl
eCA8PSBtYXhTYWZlSW50ZWdlcigpKTsKKworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAg
ICAgICAgICAgIGJvb2wgZG9uZSA9IGluZGV4IDwgYXJyYXktPmxlbmd0aCgpOworICAgICAgICAg
ICAgR0VUKGJ5dGVjb2RlLm1fZG9uZSkgPSBqc0Jvb2xlYW4oZG9uZSk7CisgICAgICAgICAgICBp
ZiAoIWRvbmUpIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVy
ZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAgICAgICAgICAgICBp
bmRleFNsb3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IGFycmF5LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGluZGV4
KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgICAgICAgICAgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgbV92YWx1ZVByb2ZpbGUp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBh
IGJhcnJpZXIgaGVyZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAg
ICAgICAgICAgICBpbmRleFNsb3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihtYXhT
YWZlSW50ZWdlcigpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdFVChieXRlY29k
ZS5tX3ZhbHVlKSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8v
IFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRh
ZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9u
TWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpH
ZW5lcmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4
dF90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5
X2Zhc3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRo
UmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIp
Cit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUs
IHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRl
cmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9y
X25leHRfdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisK
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIEJFR0lOKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4
IGI3MTM1ZTJiNzg0YWI2OGRiNWY1NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjdhYjA4YTJmYWQ2OWE0
YjBkNDU5MjM3NzkzNzVkY2Q4YjJlZTBhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDYsNiArMjQ2LDggQEAgU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfaW5fYnlfaWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9i
eV92YWwpOworLy8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Qp
OworLy8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc3RyY2F0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfdG9fcHJpbWl0aXZlKTsKQEAgLTI4Myw2ICsyODUsMTggQEAgU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfc3ByZWFkKTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNs
b3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxsRnJh
bWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJv
dyhDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9m
YXN0X3dpZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFk
YXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9v
cGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZv
aWQqIG1ldGFkYXRhKTsKKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQ
YXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUq
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X3dpZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRh
KTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0
X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQq
IG1ldGFkYXRhKTsKKwogdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlw
ZShTTE9XX1BBVEggKikoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNw
cAppbmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNlLi42ODc0ZWM3
OTAzNzU4Y2Y5ZGY0NDM5YTYyMzkwNjFjZjI3MDU4OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTMzMCw2ICszMzAsMjQgQEAgY29uc3QgY2hh
ciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIHJldHVybiBudWxscHRy
OwogfQogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNp
YyhJbnRyaW5zaWMgaW50cmluc2ljKQoreworICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAg
Y2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRy
aW5zaWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7CisgICAgY2FzZSBB
cnJheUtleXNJbnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKKyAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OktleXM7CisgICAgY2FzZSBBcnJheUVudHJpZXNJ
bnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5h
bWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApp
bmRleCA2YmZmZjkwMDYzY2UyZDdkOGFjMjA1NDJlOGE4ZDdlMThjNDJiYWU5Li43MWJhM2FhZDM1
OTY5NTZhZmMyZDBhYmZjNmZkMWRlMTdhZjFlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaApAQCAtMTg3LDYgKzE4Nyw4IEBAIGVudW0gSW50cmluc2ljIDog
dWludDhfdCB7CiAgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAorT3B0aW9uYWw8SXRlcmF0
aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKKwogY29uc3Qg
Y2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKaW5kZXgg
NTk5ZTc3NGIwM2RkM2U1YmE2ZDRkN2ZhMzRiYjk4YTk2ODdlYzYwOS4uNGZkMGExMTY1MjVjZGM1
MzJhNTNkMGI4YjVhY2I1MzM4N2E4ZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAg
ICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmpl
Y3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAg
ICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVj
dCogaXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CisgICAgc3RhdGljIEpTQXJyYXlJdGVy
YXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBpdGVy
YXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZSh2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGtpbmQpKSk7CisgICAgfQogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNy
ZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQyYzUzNzc3
Y2NkZWM1ZmNkNGRiODEwZDE4NTRmYTYwYzlmNDgxZWQuLmQzMDJiMTg2NTNlMzg0OTc4OTJiNjA1
ZmExMjhhOTljMGY5NGYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKQEAgLTIyNSw2ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhl
IHR5cGUuCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKFZN
JikgY29uc3Q7CisgICAgYm9vbCBpc0NhbGxhYmxlKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0Nh
bGxhYmxlKFZNJiwgQ2FsbFR5cGUmLCBDYWxsRGF0YSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25z
dHJ1Y3RvcihWTSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYsIENvbnN0cnVj
dFR5cGUmLCBDb25zdHJ1Y3REYXRhJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZTY1NzhhZWVm
ZjY5YzFjZmRiZWJlYWJhZDgwYWY3Li42MmY5ZDI0ZjE1ZDA3MjQ1YWQ3NzZjNDg3OWQyMDdmMTU1
N2NhYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKQEAgLTgyNyw2ICs4MjcsMTMgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNG
dW5jdGlvbihWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGFzQ2VsbCgpLT5pc0Z1bmN0aW9uKHZt
KTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNvbnN0Cit7
CisgICAgQ2FsbFR5cGUgdW51c2VkVHlwZTsKKyAgICBDYWxsRGF0YSB1bnVzZWREYXRhOworICAg
IHJldHVybiBpc0NhbGxhYmxlKHZtLCB1bnVzZWRUeXBlLCB1bnVzZWREYXRhKTsKK30KKwogaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0sIENhbGxUeXBlJiBjYWxsVHlwZSwg
Q2FsbERhdGEmIGNhbGxEYXRhKSBjb25zdAogewogICAgIGlmICghaXNDZWxsKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGU4YjIzY2U1OTlkMzYyZGM2NWYzM2Y4
ZWYyM2FkOGY1ZDZkOTcxMWIuLmIyNTAzNTY5Yzg0MjI1NjAxMTQxYTgwY2Y1OTg0OGY1ZDY3M2I3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC02MCwxMyArNjAs
MTMgQEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAvLyBTcGVjaWZpYyB0eXBlIG92
ZXJsb2Fkcy4KICNkZWZpbmUgRk9SX0VBQ0hfSlNfRFlOQU1JQ19DQVNUX0pTX1RZUEVfT1ZFUkxP
QUQobWFjcm8pIFwKICAgICBtYWNybyhKU0ltbXV0YWJsZUJ1dHRlcmZseSwgSlNUeXBlOjpKU0lt
bXV0YWJsZUJ1dHRlcmZseVR5cGUsIEpTVHlwZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlKSBc
Ci0gICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUs
IEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTU3RyaW5nSXRlcmF0
b3IsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRv
clR5cGUpIFwKICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0T2JqZWN0
VHlwZSkgXAogICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBl
LCBKU1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlw
ZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhJ
bnRlcm5hbEZ1bmN0aW9uLCBKU1R5cGU6OkludGVybmFsRnVuY3Rpb25UeXBlLCBKU1R5cGU6Oklu
dGVybmFsRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwgSlNUeXBlOjpBcnJheVR5
cGUsIEpTVHlwZTo6RGVyaXZlZEFycmF5VHlwZSkgXAorICAgIG1hY3JvKEpTQXJyYXlJdGVyYXRv
ciwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5
cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSwg
SlNUeXBlOjpBcnJheUJ1ZmZlclR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlldywg
Rmlyc3RUeXBlZEFycmF5VHlwZSwgTGFzdFR5cGVkQXJyYXlUeXBlKSBcCiAgICAgbWFjcm8oSlNQ
cm9taXNlLCBKU1R5cGU6OkpTUHJvbWlzZVR5cGUsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDI2YWEwZDdjNmVkZmE2M2UzYzhmZjYyMDhmNjI1ZjU3MDM2ODczZjAuLjExNzNhYTA4OGRj
Yjc2YzA0ZmU0YjVmYzBiMWE0OTM5MzM5MWU3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU1OSwxMCArNTU5LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmcuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7
CiAgICAgICAgIH0pOwotICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigK
LSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwg
MCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5j
VmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwotICAgICAgICB9KTsKKyAgICBtX2FycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVu
Y1ZhbHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKIAogICAgIG1faXRlcmF0b3JQcm90b2Nv
bEZ1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVu
Y3Rpb24+JiBpbml0KSB7CkBAIC0xNzQ5LDcgKzE3NDYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dGhpc09iamVjdC0+bV9wYXJzZUludEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fcGFyc2VGbG9hdEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdGhp
c09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24pOwog
ICAgIHRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDJjMjhl
OGJmNmNhNGU3M2I1NmNkYTM3NzRiMjE3NjQ3MWE5ZjA1MTMuLjBhY2RmYWVkOWU5YWRmYzIzOGFi
N2MyMzQyZTM1NDkzMGFhNjkyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjk5LDcgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9u
OwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5
UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwotICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVy
PEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5j
dGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJv
bWlzZVJlc29sdmVGdW5jdGlvbjsKQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgSlNG
dW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0
KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0
OwogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1
bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KKyAgICBKU0Z1bmN0aW9uKiBhcnJheVBy
b3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQog
ICAgIEpTRnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAg
ICBKU0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9taXNlUmVzb2x2ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpAQCAtNjE5LDYgKzYxOSw3IEBAIHB1
YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9u
TWFpblRocmVhZCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3Rv
RXhlY0Z1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b3R5cGVTeW1i
b2xJdGVyYXRvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXJyYXlQcm90b1ZhbHVlc0Z1bmN0
aW9uKCk7IH0KICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQogICAg
IEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0
ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTk2OTRkMDEyN2JhZTFjZWE1
Y2Y2M2ZhOWNkZDk3NzAwMGNiN2FhNC4uZmI0MGZjOTUwNzZhYzUwYTBhMzk0ZjU4YzUzZWIxY2Jk
YjA2ZmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC0xMTksNiArMTE5LDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJl
YW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwg
MTAwMCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1h
eFRhaWxEZWxldGVkRnJhbWVzU2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCisg
ICAgdihCb29sLCB1c2VJdGVyYXRpb25JbnRyaW5zaWNzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKKyAgICBcCiAgICAgdihCb29sLCB1c2VPU0xvZywgZmFsc2UsIE5vcm1hbCwgIkxvZyBkYXRh
TG9nKClzIHRvIG9zX2xvZyBpbnN0ZWFkIG9mIHN0ZGVyciIpIFwKICAgICAvKiBkdW1wRGlzYXNz
ZW1ibHkgaW1wbGllcyBkdW1wREZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KEJvb2wsIGR1bXBE
aXNhc3NlbWJseSwgZmFsc2UsIE5vcm1hbCwgImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFsbCBKSVQg
Y29tcGlsZWQgY29kZSB1cG9uIGNvbXBpbGF0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNzY0YWQwNjVhYzAxMWUzM2MzMjM4Y2Q5ZGE5
NTM5YzE1ODM5MjNlNS4uOWMyY2U3YWZhZTZlMzhlN2E2MDgwMjZmNTE3NzExMGUzYzg1NTYyZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjY4
LDYgKzEyNjgsOCBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHZvaWQgU3RydWN0dXJlOjpkdW1wQnJp
ZWYoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKSBjb25zdAogewogICAg
IG91dC5wcmludCgiJSIsIHN0cmluZywgIjoiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAg
ICBpZiAoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykKKyAgICAgICAgb3V0LnBy
aW50KCIsIiwgSW5kZXhpbmdUeXBlRHVtcChpbmRleGluZ1R5cGUoKSkpOwogfQogCiB2b2lkIFN0
cnVjdHVyZTo6ZHVtcENvbnRleHRIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396503</attachid>
            <date>2020-04-14 23:06:44 -0700</date>
            <delta_ts>2020-04-14 23:42:50 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-175454-20200414230643.patch</filename>
            <type>text/plain</type>
            <size>250298</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi42MDk4MGZmMzZhZjQyZGYy
MWU0MWEzY2RkMDcwZjc3MjE2N2RkOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTQgQEAKKzIwMjAtMDQtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24g
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBidWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJh
eUl0ZXJhdG9yTmV4dEhlbHBlcik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZUlEKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2
YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRp
b25Gb3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25XaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmguCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
IChKU0M6OmlzU3VidHlwZVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25D
b250YWlucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgIChK
U0M6OlN1cGVyU2FtcGxlclNjb3BlOjpyZWxlYXNlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
T3Blbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y05leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6Zm9yQWxsVmFsdWVzKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6Om51bWJlck9mVG1wcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6dG1wKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpqc0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6d2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNG
R1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5o
OgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om51bWJl
ck9mVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpvcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnZhcmlhYmxlQXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6Okxh
enlKU1ZhbHVlOjpzcGVjdWxhdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
bGlkYXRlLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Y2xvb3BTdGFjayk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjaGVja2VkUmV0dXJu
KToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q2FsbFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrcG9pbnRSZWFj
aGVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZv
cm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNs
b3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X2R1bXBfdmFsdWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKIDIwMjAtMDQtMTQgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlYnVnZ2VyOiBh
ZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBleHByZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwMzk0YjdiZTVi
NWJiMDE4YjRlZmJjYzk4NWY1Yjc4ZGEyMjY4NmQuLjM0MmU3NWM3OTU1M2E5ZDllMGJhZjBkZjJl
YjRiZGZiYmQ4NjBmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDQtMTQgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdl
IGRvIGl0ZXJhdGlvbiBmb3Iga25vd24gdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmg6
CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54
Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0
Q29yZS54Y2NvbmZpZwppbmRleCA1MmI0NmVjYzllMjg5Y2FkODVhYTE3ZTJkMDk3YWJiZTUzNjVi
MzlmLi41YTlhMGI0NDQxMTA3MjNkNzM5YTMyNTAyODVlZTlhNjgyMzVmYmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNj
b25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3Jp
cHRDb3JlLnhjY29uZmlnCkBAIC00MCw4ICs0MCw4IEBAIFNFQ1RPUkRFUl9GTEFHU19Qcm9kdWN0
aW9uW3Nkaz1tYWNvc3gqXSA9IC1XbCwtb3JkZXJfZmlsZSxKYXZhU2NyaXB0Q29yZS5vcmRlcjsK
IAogR0NDX1BSRUZJWF9IRUFERVIgPSBKYXZhU2NyaXB0Q29yZVByZWZpeC5oOwogR0NDX1NZTUJP
TFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7Ci1PVEhFUl9DRkxBR1MgPSAkKGluaGVyaXRlZCkgLS1z
eXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKLU9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChp
bmhlcml0ZWQpIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87CitPVEhFUl9DRkxBR1Mg
PSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9
dW5pY29kZS87CitPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZm5vLXNscC12
ZWN0b3JpemUgLS1zeXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKIEhFQURFUl9TRUFSQ0hf
UEFUSFMgPSAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlIiAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0
OwogSU5TVEFMTF9QQVRIID0gJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0
YjhlMTgxY2MyOGUuLmRmNDI3ZGY1YTAyNzU5MzNiNDk3NzRkYzdlMTAyNjc1YjcwZDA4MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTAzLDYgKzExMDMsOCBAQAogCQk1M0M0
RjY2QjIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAw
OSAvKiBKU0FQSUdsb2JhbE9iamVjdC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0
MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNDNkZFRUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmln
aW4uaCAqLzsgfTsKIAkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMwODFF
QTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLzsgfTsKKwkJNTNEMzU0OTkyNDBEODhC
RDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVj
b2RlUHJvZmlsZUZvci5oICovOyB9OworCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTNENDQ0REMxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDQ0REIxREFGMDhBQjAw
QjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oICovOyB9OwogCQk1M0UxRjhGODIxNTQ3MTVB
MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTFGOEY3MjE1NDcxNDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUzRTc3N0U0MUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUy
NjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKQEAgLTM4MTQsNiAr
MzgxNiw5IEBACiAJCTUzQzZGRUYwMUU4QUZFMEMwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2lu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21PcGNvZGVPcmln
aW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NBNzMwNzFFQTUzM0Q4MDA3
NjA0OUQgLyogV2FzbUJCUVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2FzbUJCUVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NB
NzMwODFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbUJCUVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVByb2ZpbGVGb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVj
b2RlVXNlRGVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVj
b2RlVXNlRGVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNENDFFQzgyM0Mw
MDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REIxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFs
dWUuaDsgcGF0aCA9IGIzL0IzV2FzbUFkZHJlc3NWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0Q0NDRERDFEQUYwOUEwMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUFkZHJlc3NW
YWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZVByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMjAsOCArODIyNSwxMCBAQAogCQkJCUMy
RkNBRTBFMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwICov
LAogCQkJCUMyRkNBRTBGMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCAqLywKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oICovLAorCQkJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBC
eXRlY29kZVByb2ZpbGVGb3IuaCAqLywKIAkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8sCiAJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlUmV3cml0ZXIuaCAqLywKKwkJCQk1M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQgLyog
Qnl0ZWNvZGVVc2VEZWYuY3BwICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oICovLAogCQkJCUUzNUJBMkMwMjQxQTBFOEMwMEI2NzA4NiAvKiBCeVZh
bEluZm8uY3BwICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8u
aCAqLywKQEAgLTgzMTUsNiArODMyMiw3IEBACiAJCQkJMTRDQzNCQTEyMTM4QTIzODAwMkQ1OEI2
IC8qIEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLywKIAkJCQkxNENDM0JBMjIxMzhBMjM4MDAyRDU4
QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKIAkJCQk1M0Y2QkY2QzFDM0YwNjBBMDBGNDFF
NUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8sCisJCQkJNTNENDFF
QzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovLAogCQkJCUJD
RkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLAogCQkJCUJDRkQ4Qzkx
MEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkwRkI1NDY3ODE0RjVDNDY4
MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLApAQCAtOTEyNyw2ICs5
MTM1LDcgQEAKIAkJCQkwRjJERDgwQjFBQjNEODU4MDBCQkI4RTggLyogQnl0ZWNvZGVLaWxscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTMxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZFQzAxODM1NjZGOTAw
RDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJl
d3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyog
Qnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEg
LyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcgQEAK
IAkJCQkwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQ
ZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0
ZXJhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFFOTg0
QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4
MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUwNzA4
MzNjYmY1YmE1ZWJlZjBlYzguLmQyNzhhZWI4MWQ0MTBjNGY0ZmYwMGZhNjlkMjZjYTQ5ZmE0MmE2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCkBAIC02ODYsNiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc3Rv
cmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChU
cnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMy
KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0
b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG9yNjQoZGVzdCwgc3JjLCBkZXN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApp
bmRleCA4YzY5NzliYjliMmZkZWIwNGNhMDI2ZTc2NmQyMDhiNzNhMDYzZjJlLi4yYTFkZGVkZWUz
NmRiZTNjZGU1NzJmNDg2MDVhNDY0YzgwYjZlNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNo
QWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMzI7CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTY7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Om9yODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3Vi
MzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQ4OwogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7CkBAIC05Niw2ICs5NywxMiBAQCBwdWJs
aWM6CiAgICAgICAgIG9yMTYoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7CiAgICAg
fQogCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNj
cmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgb3I4KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIoKSkpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1
dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMKaW5kZXggOTlh
OGMxOTIzZjI1ZTQ0MTFkNmI0ZmY3ZTdhNTliMDU5MjM4ZDgzZS4uOTRiMzdmZGExZDFjZTZkNzBh
NzkxZTdiYTYxZWYyNjNkNTlhNTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTQ2LDIxICs0Niwx
OSBAQCBmdW5jdGlvbiBhcnJheUl0ZXJhdG9yTmV4dEhlbHBlcihhcnJheSwga2luZCkKICAgICB2
YXIgdmFsdWU7CiAKICAgICB2YXIgaW5kZXggPSBAZ2V0QXJyYXlJdGVyYXRvckludGVybmFsRmll
bGQodGhpcywgQGFycmF5SXRlcmF0b3JGaWVsZEluZGV4KTsKLSAgICBpZiAoaW5kZXggIT09IC0x
KSB7Ci0gICAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7Ci0gICAgICAgIGlm
IChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAgICAgQHB1dEFycmF5SXRlcmF0b3JJbnRlcm5h
bEZpZWxkKHRoaXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCwgaW5kZXggKyAxKTsKLSAgICAg
ICAgICAgIGRvbmUgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChraW5kID09PSBAaXRlcmF0aW9u
S2luZEtleSkKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGluZGV4OwotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhcnJheVtpbmRleF07Ci0gICAgICAgICAgICAg
ICAgaWYgKGtpbmQgPT09IEBpdGVyYXRpb25LaW5kRW50cmllcykKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBbaW5kZXgsIHZhbHVlXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBAcHV0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQodGhpcywgQGFycmF5
SXRlcmF0b3JGaWVsZEluZGV4LCAtMSk7Ci0gICAgfQorICAgIHZhciBsZW5ndGggPSBhcnJheS5s
ZW5ndGggPj4+IDA7CisgICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAgICAgIEBwdXRBcnJh
eUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAYXJyYXlJdGVyYXRvckZpZWxkSW5kZXgsIGlu
ZGV4ICsgMSk7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgaWYgKGtpbmQgPT09IEBp
dGVyYXRpb25LaW5kS2V5KQorICAgICAgICAgICAgdmFsdWUgPSBpbmRleDsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTsKKyAgICAgICAgICAgIGlmIChr
aW5kID09PSBAaXRlcmF0aW9uS2luZEVudHJpZXMpCisgICAgICAgICAgICAgICAgdmFsdWUgPSBb
aW5kZXgsIHZhbHVlXTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBAcHV0QXJyYXlJ
dGVyYXRvckludGVybmFsRmllbGQodGhpcywgQGFycmF5SXRlcmF0b3JGaWVsZEluZGV4LCBATUFY
X1NBRkVfSU5URUdFUik7CiAKICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IGZiMzQ4Yjky
ZGQyNjIzYzA2NTFlZmQyZTRhOGMwZThkZTIzN2IyMDEuLjk0MjY1N2M2MmYwNzQ5Y2EwNWM0ZWVl
NGQ2N2I5NWZlNjQ1NWQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgKQEAgLTIwNywxMCArMjA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
T3V0T2ZCb3VuZHMoKSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9vbCogYWRkcmVz
c09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQogICAgIAotICAgIHZv
aWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAg
IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICB9CisgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpIHsgbV9sYXN0U2Vl
blN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7IH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJl
LT5pZCgpOyB9CiAKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUq
IGxhc3RTZWVuU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCmluZGV4IDFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4
ZjdlYTIuLjU4NWNjNThjMzdlODgzODY5YTRlOGNhYmM2MGZiZDdlNGI1NjJhY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzQsNiAr
MzQsNyBAQCB0eXBlcyBbCiAgICAgOkdldEJ5VmFsSGlzdG9yeSwKICAgICA6R2V0UHV0SW5mbywK
ICAgICA6SW5kZXhpbmdUeXBlLAorICAgIDpJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgOkpT
Q2VsbCwKICAgICA6SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsCiAgICAgOkpTR2xvYmFsT2Jq
ZWN0LApAQCAtMTE2Miw2ICsxMTYzLDY0IEBAIG9wIDpnZXRfcmVzdF9sZW5ndGgsCiAgICAgICAg
IG51bVBhcmFtZXRlcnNUb1NraXA6IHVuc2lnbmVkLAogICAgIH0KIAorIyBTZW1hbnRpY2FsbHks
IHRoaXMgaXMgaXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHRPckluZGV4
ID0gaXRlcmF0b3IubmV4dDsKKyMgRm9yIGJ1aWx0aW4gaXRlcmF0b3JzLCBob3dldmVyLCB0aGlz
IGhhcyBzcGVjaWFsIGJlaGF2aW9yIHdoZXJlIGl0ZXJhdG9yIGJlY29tZXMgdGhlIGVtcHR5IHZh
bHVlCisjIGFuZCBuZXh0T3JJbmRleCBpcyB0aGUgImluZGV4IiBvZiB0aGUgaXRlcmF0b3IgKGlu
dCBmb3IgYXJyYXlzL3N0cmluZ3MgYW5kIGJ1Y2tldCBmb3IgbWFwL3NldCkuCitvcCA6aXRlcmF0
b3Jfb3BlbiwKKyAgICBhcmdzOiB7CisgICAgICAgIGl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc3ltYm9sSXRlcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAg
ICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAg
aXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFsdWVQcm9maWxlLAor
ICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIG5leHRQ
cm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgfSwKKyAgICB0bXBzOiB7CisgICAgICAgIGl0ZXJh
dG9yT2JqZWN0OiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAg
c3ltYm9sQ2FsbDogbmlsLAorICAgICAgICBnZXROZXh0OiBuaWwsCisgICAgfQorCisjIFNlbWFu
dGljYWxseSwgdGhpcyBpcyB0bXAgPSBuZXh0T3JJbmRleC5jYWxsKGl0ZXJhdG9yKTsgZG9uZSA9
IHRtcC5kb25lOyB2YWx1ZSA9IGRvbmUgPyB1bmRlZmluZWQgOiB0bXAudmFsdWU7CitvcCA6aXRl
cmF0b3JfbmV4dCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRvbmU6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVy
YXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisg
ICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0
aW9uTW9kZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZSwK
KyAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgbmV4dFJl
c3VsdFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTogR2V0
QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIHZh
bHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAgICBu
ZXh0UmVzdWx0OiBKU1ZhbHVlLAorICAgICAgICBpc0RvbmU6IEpTVmFsdWUsCisgICAgICAgIHZh
bHVlOiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgY29tcHV0
ZU5leHQ6IG5pbCwKKyAgICAgICAgZ2V0RG9uZTogbmlsLAorICAgICAgICBnZXRWYWx1ZTogbmls
LAorICAgIH0KKwogb3AgOnlpZWxkLAogICAgIGFyZ3M6IHsKICAgICAgICAgZ2VuZXJhdG9yOiBW
aXJ0dWFsUmVnaXN0ZXIsCkBAIC0xMjkwLDYgKzEzNDksOCBAQCBvcCA6b3BfZ2V0X2J5X2lkX3Jl
dHVybl9sb2NhdGlvbgogb3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3Bf
cHV0X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92YWxfcmV0dXJuX2xvY2F0
aW9uCitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRv
cl9uZXh0X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3
YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4
IGM2ZWZlMGQ4ZmY2Yzc5ODk2YWZkMDBlMjBjYzQyNzc5ZDNhNGIwYzcuLmQ1ODdlZTAzZjI2ZDhk
ZmI5NGQwOGQ0NDIwNDA4Y2FjNTBhMzhlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0y
MzEsNiArMjMxLDEzIEBAIEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1wTGl2ZW5lc3NG
b3JDaGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrCiAgICAgICAgICAgICByZXN1
bHQuc2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAg
ICAgICAgcmVzdWx0LnNldChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2Zp
bGVGb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVG
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MzU4NWM3MjEyMTdkNGFmZWQ2NmNkYmUyN2UwN2M3M2I4NmU0ZjFl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlUHJvZmlsZUZvci5oCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcnJheVBy
b2ZpbGUuaCIKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJWYWx1ZVBy
b2ZpbGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIFRPRE86IE1ha2UgdGhpcyBvcHRpb25h
bC4gRmlndXJlIG91dCBoYXNNZW1iZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFk
YXRhPgorQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGVGb3JJbXBsKEJ5dGVjb2RlTWV0YWRhdGEm
IG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFN
KGNoZWNrcG9pbnRJbmRleCk7CisgICAgcmV0dXJuICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5t
X2FycmF5UHJvZmlsZTsKKworICAgIC8vIEluc2VydCBwZXIgbWV0YWRhdGEgb3ZlcnJpZGVzIGhl
cmUgd2hlbiB3ZSBuZWVkIHRoZW0uCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc0FycmF5UHJvZmlsZUZvcihCeXRl
Y29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAg
IHJldHVybiBhcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9maWxlJiBh
cnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICBBU1NFUlQoaGFzQXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBj
aGVja3BvaW50SW5kZXgpKTsKKyAgICByZXR1cm4gKmFycmF5UHJvZmlsZUZvckltcGwobWV0YWRh
dGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKKy8vIFRPRE86IE1ha2UgdGhpcyBvcHRpb25hbC4g
RmlndXJlIG91dCBoYXNNZW1iZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRh
PgorVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JJbXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1l
dGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgaWYgY29uc3RleHByIChC
eXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAg
IHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46
OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UHJv
ZmlsZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorCisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bj
b2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJ
bmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJu
ICZtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JO
ZXh0OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAgIGNh
c2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9m
aWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfSBlbHNlIAorICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK2Jvb2wgaGFzVmFsdWVQ
cm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50
SW5kZXgpCit7CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNr
cG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitW
YWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwg
dW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChoYXNWYWx1ZVByb2ZpbGVG
b3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJldHVybiAqdmFsdWVQcm9maWxl
Rm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGU+CitPcGVyYW5kIGRlc3RpbmF0aW9uRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRl
Y29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4LCBKSVRUeXBlIHR5cGUgPSBKSVRUeXBlOjpO
b25lKQoreworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJh
dG9yX29wZW4pIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAg
Y2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuIGJ5dGVjb2RlLm1faXRlcmF0
b3I7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiBieXRlY29k
ZS5tX25leHQ7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHBy
IChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0
Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21w
dXRlTmV4dDogeworICAgICAgICAgICAgaWYgKHR5cGUgPT0gSklUVHlwZTo6REZHSklUIHx8IHR5
cGUgPT0gSklUVHlwZTo6REZHSklUKQorICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYW5kOjp0
bXAoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGJ5dGVj
b2RlLm1fdmFsdWU7IC8vIFdlIHJldXNlIHZhbHVlIGFzIGEgdGVtcCBiZWNhdXNlIGl0cyBlaXRo
ZXIgbm90IHVzZWQgb3Igd3JpdHRlbiBhcyB0aGUgdGVtcCBvYmplY3QgZGllcy4KKyAgICAgICAg
fQorICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1cm4gYnl0ZWNvZGUu
bV9kb25lOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuIGJ5
dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlLm1fZHN0OworfQorCisvLyBDYWxsLWxpa2Ugb3Bjb2RlIGxvY2F0
aW9ucworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK1ZpcnR1YWxSZWdpc3RlciBjYWxs
ZWVGb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHBy
IChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBBU1NF
UlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsKTsKKyAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3I7CisgICAgfSBlbHNlIGlmIGNvbnN0
ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAg
QVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOwor
ICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9uZXh0OworICAgIH0gZWxzZQorICAgICAgICByZXR1
cm4gYnl0ZWNvZGUubV9jYWxsZWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgor
dW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoY29uc3QgQnl0ZWNvZGUmIGJ5
dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNo
ZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0g
b3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9w
SXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNl
IGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsK
KyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0
ZU5leHQpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5
dGVjb2RlLm1fYXJnYzsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitwdHJkaWZm
X3Qgc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2Rl
LCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9p
bnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRl
cmF0b3Jfb3BlbikgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0
b3JPcGVuOjpzeW1ib2xDYWxsKTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6
ZUluUmVnaXN0ZXJzIC0gYnl0ZWNvZGUubV9pdGVyYWJsZS5vZmZzZXQoKTsKKyAgICB9IGVsc2Ug
aWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgewor
ICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRl
TmV4dCk7CisgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAt
IGJ5dGVjb2RlLm1faXRlcmF0b3Iub2Zmc2V0KCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVy
biBieXRlY29kZS5tX2FyZ3Y7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRh
dGE+CitMTEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvRm9yKEJ5dGVjb2RlTWV0YWRhdGEm
IG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFN
KGNoZWNrcG9pbnRJbmRleCk7CisgICAgcmV0dXJuIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDY3ZjJjZWMwYTgwZjBiODJmZmQyY2YwZjY5
N2Y3MGUwZDU2MjZjMTMuLmE1YTUwN2VkMmU5MmRjZWUzZmMxNTFiZGViMmE2MjcyNzNjMjI3NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcApAQCAtMjU5LDYgKzI1OSw5IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4
SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAKICAgICBV
U0VTKE9wWWllbGQsIGdlbmVyYXRvciwgYXJndW1lbnQpCiAKKyAgICBVU0VTKE9wSXRlcmF0b3JP
cGVuLCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUpCisgICAgVVNFUyhPcEl0ZXJhdG9yTmV4dCwg
aXRlcmF0b3IsIG5leHQsIGl0ZXJhYmxlKQorCiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9z
cHJlYWQ6CiAgICAgICAgIGhhbmRsZU5ld0FycmF5TGlrZShpbnN0cnVjdGlvbi0+YXM8T3BOZXdB
cnJheVdpdGhTcHJlYWQ+KCkpOwogICAgICAgICByZXR1cm47CkBAIC00ODYsNiArNDg5LDkgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnUKIAogICAgIERFRlMoT3BDYXRjaCwgZXhjZXB0aW9uLCB0
aHJvd25WYWx1ZSkKIAorICAgIERFRlMoT3BJdGVyYXRvck9wZW4sIGl0ZXJhdG9yLCBuZXh0KQor
ICAgIERFRlMoT3BJdGVyYXRvck5leHQsIGRvbmUsIHZhbHVlKQorCiAgICAgY2FzZSBvcF9lbnRl
cjogewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1WYXJzOyBpLS07KQogICAgICAgICAg
ICAgZnVuY3Rvcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IGQyOWY2MGU5NDI4MjI1
OTE5NDc3Njg1NTdlYTg3YTY1N2YyM2E2MGIuLjkxNWNjNjMxZGJkMjg0NWVlOTEzOGUxMzllYjY5
ZTk2MzQxNzUxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwCkBAIC00MCwxOCArNDAsMzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIENhbGxM
aW5rSW5mbzo6Q2FsbFR5cGUgQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihPcGNvZGVJRCBvcGNv
ZGVJRCkKIHsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9j
YWxsX2V2YWwpCisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3BfdGFpbF9jYWxs
X3ZhcmFyZ3M6CisgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CisgICAg
ICAgIHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7ICAgICAgICAKKworICAgIGNhc2Ugb3BfY2FsbDoK
KyAgICBjYXNlIG9wX2NhbGxfZXZhbDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAg
Y2FzZSBvcF9pdGVyYXRvcl9uZXh0OgogICAgICAgICByZXR1cm4gQ2FsbDsKLSAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzKQorCisgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAg
ICAgICAgIHJldHVybiBDYWxsVmFyYXJnczsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3Ry
dWN0KQorCisgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3Q7
Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzKQorCisgICAgY2FzZSBv
cF9jb25zdHJ1Y3RfdmFyYXJnczoKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFZhcmFyZ3M7Ci0g
ICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCkKKworICAgIGNhc2Ugb3BfdGFpbF9jYWxs
OgogICAgICAgICByZXR1cm4gVGFpbENhbGw7Ci0gICAgQVNTRVJUKG9wY29kZUlEID09IG9wX3Rh
aWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50cyk7Ci0gICAgcmV0dXJuIFRhaWxDYWxsVmFyYXJnczsKKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBDYWxsOwogfQogCiBDYWxsTGlua0luZm86OkNhbGxMaW5rSW5mbygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCBm
MTNkMTczNGEwMmM1OGEzMjE3NTkyNWQyODg1NWEyYTI2MDAxODE4Li5iOTBmODI0NmZjNjExMTM3
OGFlYmVmOTAyNTZmMTE1ZWYxN2UzYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKQEAgLTgxLDYgKzgxLDEzIEBAIENhbGxMaW5r
U3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCCiAgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIGNhbGxMaW5r
SW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BUYWlsQ2FsbD4oKS5tZXRhZGF0YShwcm9maWxlZEJs
b2NrKS5tX2NhbGxMaW5rSW5mbzsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuOgorICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CisgICAgICAgIGNhbGxMaW5rSW5m
byA9ICZpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRC
bG9jaykubV9jYWxsTGlua0luZm87CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwNTNiMWI0NDkyMGI2YTg3ODE1N2U2
MTYwYjY1M2U3YTRlNzMwNGIyLi5hNGE3YzVhYWJmMDU2YjM4MzE0NDg0MThmOTFkYTg4NTRmN2Jh
N2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlRHVtcGVyLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
aCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0
cnVjdHMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5r
U3RhdHVzLmgiCkBAIC05Nyw2ICs5OCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwu
aD4KIAorCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0
TGlzdC5oIgogI2VuZGlmCkBAIC01ODMsNiArNTg1LDIwIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIExJTksoT3BDYXRjaCkKICAgICAgICAgTElOSyhPcFByb2ZpbGVDb250cm9s
RmxvdykKIAorICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgIElO
SVRJQUxJWkVfTUVUQURBVEEoT3BJdGVyYXRvck9wZW4pCisKKyAgICAgICAgICAgIG1fbnVtYmVy
T2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgKz0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBJ
TklUSUFMSVpFX01FVEFEQVRBKE9wSXRlcmF0b3JOZXh0KQorCisgICAgICAgICAgICBtX251bWJl
ck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogewogICAgICAgICAgICAg
SU5JVElBTElaRV9NRVRBREFUQShPcFJlc29sdmVTY29wZSkKIApAQCAtMTIyNCw2ICsxMjQwLDMz
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0MTgK
ICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGQgb3B0aW1pemF0aW9ucyBmb3Igb3BfcmVzb2x2ZV9z
Y29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwgdG8gZG8gbGluayB0aW1lIHNjb3Bl
IHJlc29sdXRpb24uCiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Bl
bj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlm
ICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQorICAgICAgICAgICAgICAgIGRh
dGFMb2dGKCJDbGVhcmluZyBpdGVyYXRvciBvcGVuIExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIp
OworICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAg
ICAgICAgfSk7CisKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBhdXRvIGNsZWFySWZOZWVkZWQg
PSBbJl0gKEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1vZGVNZXRhZGF0YSkgeworICAgICAgICAgICAg
ICAgIGlmIChtb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0
cnVjdHVyZUlEID0gbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSwgIkNsZWFyaW5nIGl0ZXJhdG9yIG5leHQgTExJbnQgcHJvcGVydHkgYWNjZXNzLlxu
Iik7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1vZGVNZXRhZGF0YSk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICBjbGVhcklmTmVlZGVkKG1ldGFkYXRhLm1fZG9uZU1vZGVN
ZXRhZGF0YSk7CisgICAgICAgICAgICBjbGVhcklmTmVlZGVkKG1ldGFkYXRhLm1fdmFsdWVNb2Rl
TWV0YWRhdGEpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9w
R2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTIzMSw3ICsxMjc0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFs
aXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8
fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1
Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vz
cy4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YSk7CisgICAgICAgICAgICBM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOwogICAgICAgICB9KTsKIAogICAg
ICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZERpcmVjdD4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgewpAQCAtMTMyNiw5ICsxMzY5LDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgYXV0byBjbGVhciA9IFsmXSAoKSB7CiAgICAgICAg
ICAgICBhdXRvJiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KHN0ZDo6Z2V0PDE+KHBh
aXIua2V5KSk7CiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbi0+b3Bj
b2RlSUQoKTsKLSAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfZ2V0X2J5X2lkKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
IHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJD
bGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICAgICAgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEodGhpcykpOworICAg
ICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1l
dGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExM
SW50IGl0ZXJhdG9yIG9wZW4gcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdl
dEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEodGhp
cykubV9tb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgaXRlcmF0
b3IgbmV4dCBwcm9wZXJ0eSBhY2Nlc3MuIik7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IGRvbid0IHJlYWxseSB3YW50IHRvIGNsZWFyIGJvdGggY2FjaGVzIGhlcmUgYnV0IGl0J3Mga2lu
ZGEgYW5ub3lpbmcgdG8gZmlndXJlIG91dCB3aGljaCBvbmUgdGhpcyBpcyByZWZlcnJpbmcgdG8u
Li4KKyAgICAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUobWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBMTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlk
Q2FjaGUobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH07CkBAIC0zMDQxLDYgKzMxMDIsMTEgQEAgVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnRyeUdl
dFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY28KIAogI3Vu
ZGVmIENBU0UKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgcmV0dXJuICZ2
YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRh
KHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9uZXh0OgorICAgICAgICByZXR1cm4gJnZhbHVlUHJvZmlsZUZvcihpbnN0cnVjdGlvbi0+YXM8
T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyksIGJ5dGVjb2RlSW5kZXguY2hlY2twb2lu
dCgpKTsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAppbmRleCAy
MmU3NmIxODVlYjllYmE5N2RlOWJiMDgxZDY0MTg2YmY1NGNlNGFhLi41MzYyMjg5MDdlODRjNDkz
M2NkMjkzZGYzNTAxN2JmNzlkZTc0ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKQEAgLTM5LDEyICszOSwyNCBAQCB2b2lkIENv
ZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogCiAgICAg
aWYgKG1fbWV0YWRhdGEpIHsKICNkZWZpbmUgVklTSVQoX19vcCkgXAotICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJv
ZmlsZSwgZmFsc2UpOyB9KTsKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0g
KGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOwog
CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCiAKICN1
bmRlZiBWSVNJVAotICAgIH0KKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0
b3JPcGVuPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IAorICAgICAgICAgICAgZnVuYyhtZXRhZGF0
YS5tX2l0ZXJhYmxlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5t
X2l0ZXJhdG9yUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25l
eHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAg
ZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1l
dGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgIH0pOworICAgIH0gICAKIAog
fQogCkBAIC02OCw2ICs4MCwxMCBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZShjb25zdCBGdW5jdG9yJiBmdW5jKQogCiAjdW5kZWYgVklTSVQxCiAjdW5kZWYgVklTSVQyCisK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7
CisgICAgICAgIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeVN0YXR1cy5jcHAKaW5kZXggOTNmMjI3MGFjYTY1MmJmMTljMmM5NTU5MWVkYWU1
MTY3N2EyODhjMi4uMjgyY2Y4ZjQyN2MxZmJlYWIyOTZhMzU4M2IwNzk5NDFkYTEwZWYyMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC04
Niw2ICs4NiwzNSBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZQogICAgIGNhc2Ugb3BfZ2V0X2J5
X3ZhbDoKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsK
IAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkgPT0gT3BJdGVyYXRvck9wZW46OmdldE5leHQpOworICAgICAgICBh
dXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0
YShwcm9maWxlZEJsb2NrKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBqdXN0
IGJhaWwgaWYgd2Ugc2VlIGEgZ2V0X2J5X2lkX3Byb3RvX2xvYWQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwMzkKKyAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAg
ICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAg
ICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVj
dHVyZUlEOworICAgICAgICBpZGVudGlmaWVyID0gJnZtLnByb3BlcnR5TmFtZXMtPm5leHQ7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAg
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5t
ZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKKyAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2tw
b2ludCgpID09IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7CisgICAgICAgICAgICBpZiAobWV0
YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsK
KyAgICAgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhLmRl
ZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9w
ZXJ0eU5hbWVzLT5kb25lOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1ldGFk
YXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwor
ICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLmRl
ZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAppbmRleCAwODVhZThkMTk5NzZiODg2ZjAwMTlm
ODVmYTY3YjAyYmUxNGNkYTVlLi4zZDcwY2Q1NDNlY2ZhZTkwMjI1MDI5NjAxYTBkNDA1ZWM2NzFi
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApA
QCAtMzIsNyArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEpTT3Bjb2RlVHJhaXRz
IHsKICAgICB1c2luZyBPcGNvZGVJRCA9IDo6SlNDOjpPcGNvZGVJRDsKKyAgICBzdGF0aWMgY29u
c3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGlj
X2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX0NIRUNLUE9JTlRTKTsKICAg
ICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRh
ID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRB
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9
IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZUlEIHdpZGUxNiA9IG9wX3dpZGUxNjsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlE
IHdpZGUzMiA9IG9wX3dpZGUzMjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVk
KiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7CkBAIC00MSw3ICs0Myw5IEBA
IHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAKIHN0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAg
ICB1c2luZyBPcGNvZGVJRCA9IFdhc21PcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhfQ0hFQ0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2Fz
dDxPcGNvZGVJRD4oTlVNQkVSX09GX1dBU01fV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fz
c2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSB3
YXNtX3dpZGUxNjsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IHdhc21f
d2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0
aHMgPSB3YXNtT3Bjb2RlTGVuZ3RoczsKQEAgLTk4LDEyICsxMDIsMjYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbmFycm93KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFp
dHM6OndpZGUzMjsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09w
Y29kZVRyYWl0cz4KKyAgICBPcGNvZGVTaXplIHdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChpc1dpZGUzMjxUcmFpdHM+KCkpCisgICAgICAgICAgICByZXR1cm4gT3Bjb2RlU2l6ZTo6
V2lkZTMyOworICAgICAgICByZXR1cm4gaXNXaWRlMTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6ZTo6
V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVt
YmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpu
dW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50czsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50
KCkgY29uc3QKICAgICB7CkBAIC0xMzcsNiArMTU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIFQ6OmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAg
ICAgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUg
VHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgVCBhc0tub3duV2lkdGgoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgcmV0dXJuIFQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRoPjo6dW5zaWdu
ZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAxIDogMikpKTsK
KyAgICB9CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29k
ZVRyYWl0cz4KICAgICBUKiBjYXN0KCkKICAgICB7CkBAIC0xNjEsNyArMTg2LDcgQEAgcHVibGlj
OgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNXaWRlMTY8VHJhaXRzPigpKTsKLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4o
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4odGhpcyArIDEpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgpA
QCAtMTY5LDE0ICsxOTQsMTYgQEAgcHVibGljOgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNX
aWRlMzI8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
SW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykg
KyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVT
aXplOjpXaWRlMzI+Kj4odGhpcyArIDEpOwogICAgIH0KIH07CiAKIHN0cnVjdCBJbnN0cnVjdGlv
biA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248T3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0
KHNpemVvZihJbnN0cnVjdGlvbikgPT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBh
cyBieXRlIG1hdGgiKTsKIAogc3RydWN0IFdhc21JbnN0YW5jZSA6IHB1YmxpYyBCYXNlSW5zdHJ1
Y3Rpb248V2FzbU9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbUluc3Rh
bmNlKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmQ2OTE5MzFjNmM3
OTQ4ZTU1N2U0ZjU2OTIzYWUzNDkwZmViOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgSXRlcmF0aW9uTW9kZSA6
IHVpbnQ4X3QgeworICAgIEdlbmVyaWMgPSAxIDw8IDAsCisgICAgRmFzdEFycmF5ID0gMSA8PCAx
LAorfTsKKworY29uc3RleHByIHVpbnQ4X3QgbnVtYmVyT2ZJdGVyYXRpb25Nb2RlcyA9IDI7CisK
K09WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFM
UyhJdGVyYXRpb25Nb2RlKTsKKworc3RydWN0IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSB7CisgICAg
dWludDhfdCBzZWVuTW9kZXMgeyAwIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5
cGUoc2Vlbk1vZGVzKSkgPT0gc2l6ZW9mKEl0ZXJhdGlvbk1vZGUpKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcAppbmRleCAyZDE0M2I5Y2Y2NzQzMDVkNDBjOTFlYjBhZTM1MTMzMTI1
Njk0NDFmLi5iYmUxZjY3ZmZiZWZlOGU4YmIxMzY3ZWI2YzdlZDY3Y2JhYThhYjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cApAQCAtNjAsMTQgKzYwLDMxIEBAIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAgICAgfQogCiAg
ICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBtX293bmVyLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVj
b2RlT2Zmc2V0LmdldCgpKTsKLSAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9u
LT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkpOworICAgIHN3aXRjaCAo
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAg
ICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1l
dGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0
KCkpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck5leHQ+KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSk7CisgICAgICAgIGNsZWFyTExJ
bnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgY2xl
YXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCi12b2lkIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRD
YWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSkKK3ZvaWQgTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKEdl
dEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIC8vIEtlZXAgaGl0Q291bnRGb3JM
TEludENhY2hpbmcgdmFsdWUuCi0gICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0Rl
ZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CisgICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2Rl
V2l0aG91dENhY2hlKCk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKaW5kZXggMjIwZmZm
M2UzYmY1NDM0MWU5NjFjODJkZjhjNGU4YzkwMDA3MzRiZS4uMWQ1OTU3ZWZmODEwOTJhMWRhYmRl
ZTUwMjVjYWM1ZTZmMzg2NzgyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGluc3RhbGwoVk0mKTsKIAotICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlk
Q2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUoR2V0QnlJZE1vZGVNZXRhZGF0YSYpOwogCiAgICAgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAppbmRleCAxODUxYjYzYzdjYTZhZWYyZmIzNmJm
MmY4N2U5MmExOWUwZDQwYzE4Li5hYTg4NTlhZGQ2Mjg2MGZmZGFkYjRkMjIyODdjMzRiMDdjZTVi
MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xNDgsNiAr
MTQ4LDkgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxl
bmd0aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKG0KICAgICBtYWNybyhPcFRhaWxDYWxsKSBc
CiAgICAgbWFjcm8oT3BDYWxsRXZhbCkgXAogICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCisgICAg
bWFjcm8oT3BJdGVyYXRvck9wZW4pIFwKKyAgICBtYWNybyhPcEl0ZXJhdG9yTmV4dCkgXAorCiAK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkNzZk
NGZhN2I0NmU5OGI5Zjk3MDBkYzM4NjMwZjQuLjk0NjU4YjA5NmJmMTkzYzg3Y2ZkNzFhOWY1YmRl
MTVmNjEzMzJhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oCkBAIC0xMjAsNiArMTIwLDE2IEBAIGlubGluZSBib29sIGlzQW55U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBib29s
IGlzU3VidHlwZVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlw
ZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISh2YWx1ZSAmIH5jYXRlZ29yeSkgJiYgdmFsdWU7
Cit9CisKK2lubGluZSBib29sIHNwZWN1bGF0aW9uQ29udGFpbnMoU3BlY3VsYXRlZFR5cGUgdmFs
dWUsIFNwZWN1bGF0ZWRUeXBlIGNhdGVnb3J5KQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIGNh
dGVnb3J5KSAmJiB2YWx1ZTsKK30KKwogaW5saW5lIGJvb2wgaXNDZWxsU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYm
ICEodmFsdWUgJiB+U3BlY0NlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N1cGVyU2FtcGxlci5oCmluZGV4IDk2MTBkY2U1Y2RiYzNlYzA5Y2UzM2IxZDZiY2M0YjNmZjhh
NmMzYzguLmU5YmY5NTMxZjdiYTU5NTczMTEwZTMxYTdhNDRjZDIyOGI3NTcxMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAgLTQ4LDYgKzQ4
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKICAgICB9
CiAKKyAgICB2b2lkIHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZG9TYW1wbGUp
OworICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CisgICAgICAgIG1fZG9TYW1wbGUgPSBm
YWxzZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBtX2RvU2FtcGxlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggNjNkMzYyY2FjMTlkNDkzOTg5NDc3N2JlZGE3YzBhYzJkNjM2MDYzZi4u
OGZlZGU2MmI1MzBlYmQxMDFmZWRhNjFhYmFiOTQ5YTNmM2IzNTliNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKQEAgLTQwMTYsMTQgKzQwMTYsMTUgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
YWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9u
KFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5v
ZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxv
b3BTeW1ib2xUYWJsZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVy
YXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJq
ZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCog
Zm9yTG9vcFN5bWJvbFRhYmxlKQogewogICAgIGJvb2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2Rl
ID8gZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQoKSA6IGZhbHNlOwotICAgIEFTU0VSVCghaXNGb3JB
d2FpdCB8fCAoaXNGb3JBd2FpdCAmJiBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2Rl
KCkpKSk7CisgICAgYXV0byBzaG91bGRFbWl0QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0
OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOworICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5j
RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwg
c3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdh
aXQgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRJ
dGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRl
cmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwg
bm9kZSkgOiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBSZWY8TGFi
ZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKQEAgLTQxMzAsNyArNDEzMSw3IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQo
KSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObyk7Cisg
ICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhv
ZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUsIHNob3VsZEVtaXRBd2FpdCk7CiAKICAgICAg
ICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAg
ICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52
YWx1ZSk7CkBAIC00MTQzLDcgKzQxNDQsMTQ1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAg
ICAgICAgIHBvcEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKCk7CiAgICAgICAgIGlmIChicmVha0xh
YmVsSXNCb3VuZCkgewogICAgICAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3Ig
YnJlYWstZWQgY29udHJvbCBmbG93LgotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRl
cmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2Fp
dDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdl
dCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOworICAgICAgICB9CisgICAgfQorICAgIGVtaXRM
YWJlbChsb29wRG9uZS5nZXQoKSk7Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9k
ZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lz
dGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJh
dGlvbkludHJpbnNpY3MoKSB8fCBpczMyQml0KCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BO
b2RlLT5pc0ZvckF3YWl0KCkpKSB7CisgICAgICAgIGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9k
ZSwgc3ViamVjdE5vZGUsIGNhbGxCYWNrLCBmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVy
YWJsZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXROb2RlKGl0ZXJhYmxlLmdldCgpLCBzdWJq
ZWN0Tm9kZSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JTeW1ib2wgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmFibGUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5p
dGVyYXRvclN5bWJvbCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRPckluZGV4ID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBt
b3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0ZXJhYmxlLmdldCgpKTsKKyAgICBlbWl0SXRlcmF0
b3JPcGVuKGl0ZXJhdG9yLmdldCgpLCBuZXh0T3JJbmRleC5nZXQoKSwgaXRlcmF0b3JTeW1ib2wu
Z2V0KCksIGFyZ3MsIG5vZGUpOworCisgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVs
KCk7CisgICAgUmVmPExhYmVsPiB0cnlTdGFydExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8
TGFiZWw+IGZpbmFsbHlWaWFUaHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+
IGZpbmFsbHlMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGVuZENhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOwor
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1p
dExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gUmVmUHRyPFJlZ2lz
dGVySUQ+IGl0ZXJhdG9yJ3MgbGlmZXRpbWUgbXVzdCBiZSBsb25nZXIgdGhhbiBJdGVyYXRvckNs
b3NlQ29udGV4dC4KKyAgICBGaW5hbGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dCgqdGhpcywgZmlu
YWxseUxhYmVsLmdldCgpKTsKKyAgICBwdXNoRmluYWxseUNvbnRyb2xGbG93U2NvcGUoZmluYWxs
eUNvbnRleHQpOworCisgICAgeworICAgICAgICBSZWY8TGFiZWxTY29wZT4gc2NvcGUgPSBuZXdM
YWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOworCisgICAgICAgIFJlZjxMYWJlbD4gbG9vcFN0
YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7Cisg
ICAgICAgIGVtaXRMYWJlbCgqc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOworICAgICAgICBlbWl0
TG9vcEhpbnQoKTsKKworICAgICAgICBpZiAoZm9yTG9vcE5vZGUpIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGZvckxvb3BOb2RlLT5pc0Zvck9mTm9kZSgpKTsKKyAgICAgICAgICAgIHBy
ZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihmb3JMb29wTm9kZSwgZm9y
TG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgIGVtaXREZWJ1Z0hvb2soZm9yTG9vcE5vZGUt
PmxleHByKCkpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGRvbmUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVu
dHMgbmV4dEFyZ3MoKnRoaXMsIG51bGxwdHIsIDApOworICAgICAgICAgICAgbW92ZShuZXh0QXJn
cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICBlbWl0SXRl
cmF0b3JOZXh0KGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBpdGVyYWJsZS5nZXQoKSwgbmV4dE9y
SW5kZXguZ2V0KCksIG5leHRBcmdzLCBub2RlKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGRvbmUuZ2V0KCksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXRM
YWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IHB1
c2hUcnkodHJ5U3RhcnRMYWJlbC5nZXQoKSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCksIEhh
bmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworICAgICAgICBjYWxsQmFjaygqdGhpcywg
dmFsdWUuZ2V0KCkpOworICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAg
ICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGFicnVwdCBjb21wbGV0aW9ucy4KKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gRmluYWxseSBibG9jayBmb3IgdGhlIGVudW1lcmF0aW9u
LgorICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpKTsKKyAg
ICAgICAgICAgIHBvcFRyeSh0cnlEYXRhLCBmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisK
KyAgICAgICAgICAgIFJlZjxMYWJlbD4gZmluYWxseUJvZHlMYWJlbCA9IG5ld0xhYmVsKCk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyID0g
bmV3VGVtcG9yYXJ5KCk7CisKKyAgICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxl
cihmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpLCBmaW5hbGx5Q29udGV4
dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIHRyeURhdGEpOworICAgICAgICAgICAgbW92ZShm
aW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25W
YWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5n
ZXQoKSk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAg
ICAgICAgICAgbW92ZUVtcHR5VmFsdWUoZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsK
KworICAgICAgICAgICAgLy8gRmluYWxseSBmYWxsIHRocm91Z2ggY2FzZS4KKyAgICAgICAgICAg
IGVtaXRMYWJlbChmaW5hbGx5Qm9keUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3RvcmVT
Y29wZVJlZ2lzdGVyKCk7CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gZmluYWxseURvbmUgPSBu
ZXdMYWJlbCgpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9k
ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5h
bWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNV
bmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGZpbmFsbHlEb25l
LmdldCgpKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5DYWxsVHJ5U3RhcnQgPSBu
ZXdMYWJlbCgpOworICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkNhbGxUcnlTdGFydC5nZXQo
KSk7CisgICAgICAgICAgICBUcnlEYXRhKiByZXR1cm5DYWxsVHJ5RGF0YSA9IHB1c2hUcnkocmV0
dXJuQ2FsbFRyeVN0YXJ0LmdldCgpLCBjYXRjaExhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3lu
dGhlc2l6ZWRDYXRjaCk7CisKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1l
bnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0Q2FsbCh2YWx1
ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFy
Z3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVu
ZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwgZmluYWxseURvbmUuZ2V0
KCkpOworICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50
ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZp
bmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRGaW5hbGx5Q29tcGxldGlvbihmaW5h
bGx5Q29udGV4dCwgZW5kQ2F0Y2hMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIHBvcFRyeShy
ZXR1cm5DYWxsVHJ5RGF0YSwgZmluYWxseURvbmUuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBD
YXRjaCBibG9jayBmb3IgZXhjZXB0aW9ucyB0aGF0IG1heSBiZSB0aHJvd24gd2hpbGUgY2FsbGlu
ZyB0aGUgcmV0dXJuCisgICAgICAgICAgICAvLyBoYW5kbGVyIGluIHRoZSBlbnVtZXJhdGlvbiBm
aW5hbGx5IGJsb2NrLiBUaGUgb25seSByZWFzb24gd2UgbmVlZCB0aGlzCisgICAgICAgICAgICAv
LyBjYXRjaCBibG9jayBpcyBiZWNhdXNlIGlmIGVudGVyZWQgdGhlIGFib3ZlIGZpbmFsbHkgYmxv
Y2sgZHVlIHRvIGEgdGhyb3duCisgICAgICAgICAgICAvLyBleGNlcHRpb24sIHRoZW4gd2Ugd2Fu
dCB0byByZS10aHJvdyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIG9uIGV4aXRpbmcKKyAgICAgICAg
ICAgIC8vIHRoZSBmaW5hbGx5IGJsb2NrLiBPdGhlcndpc2UsIHdlJ2xsIGxldCBhbnkgbmV3IGV4
Y2VwdGlvbiBwYXNzIHRocm91Z2guCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1p
dExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAg
ICAgZW1pdE91dE9mTGluZUZpbmFsbHlIYW5kbGVyKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBm
aW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIHJldHVybkNhbGxUcnlEYXRh
KTsKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgc3ludGhlc2l6ZWQgY2F0Y2gg
YmxvY2sgYW5kIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbmV2ZXIgbmVlZAorICAgICAgICAgICAgICAg
IC8vIHRvIHJlc29sdmUgYW55IHN5bWJvbHMgZnJvbSB0aGUgc2NvcGUsIHdlIGNhbiBza2lwIHJl
c3RvcmluZyB0aGUgc2NvcGUKKyAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBoZXJlLgorCisg
ICAgICAgICAgICAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNFbXB0eShuZXdUZW1wb3JhcnkoKSwgZmlu
YWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgbW92ZShleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUV4Y2VwdGlvblJl
Z2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkp
OworCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKGVuZENhdGNoTGFiZWwuZ2V0KCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYm9vbCBicmVha0xhYmVsSXNCb3VuZCA9
IHNjb3BlLT5icmVha1RhcmdldE1heUJlQm91bmQoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJ
c0JvdW5kKQorICAgICAgICAgICAgZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKKyAg
ICAgICAgcG9wRmluYWxseUNvbnRyb2xGbG93U2NvcGUoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFi
ZWxJc0JvdW5kKSB7CisgICAgICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBi
cmVhay1lZCBjb250cm9sIGZsb3cuCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xv
c2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIEVtaXRBd2FpdDo6Tm8pOwogICAgICAgICB9CiAgICAg
fQogICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7CkBAIC00MjY1LDU2ICs0NDA0LDYgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKQogICAgIE9wSXNFbXB0eTo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7
CiAgICAgcmV0dXJuIGRzdDsKIH0KLSAgICAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhv
ZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1l
bnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgICAgICBtb3ZlKG5leHRBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBu
ZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90
KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6
Ok5vKTsKLQotICAgICAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAg
ICAgICAgICBlbWl0QXdhaXQoZHN0KTsKLSAgICB9Ci0gICAgewotICAgICAgICBSZWY8TGFiZWw+
IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJ
c09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAg
ICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBh
biBvYmplY3QuIl9zKTsKLSAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7Ci0g
ICAgfQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
bmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25z
dCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKLXsKLSAgICB7Ci0gICAgICAgIENhbGxB
cmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7Ci0gICAgICAgIG1vdmUo
bmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBtb3ZlKG5l
eHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOwotICAgICAgICBlbWl0Q2Fs
bChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9k
ZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dh
YmxlQ2FsbDo6Tm8pOwotICAgIH0KLQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLXZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25z
dCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQot
ewotICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwg
cHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJ
c1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQo
KSk7Ci0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKLSAg
ICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgbW92
ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICBlbWl0Q2Fs
bCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJl
dHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotCi0gICAgaWYgKGRvRW1pdEF3YWl0ID09
IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkpOwotCi0gICAg
ZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSks
IGRvbmUuZ2V0KCkpOwotICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGlu
dGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Ci0gICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkp
OwotfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVn
aXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlcikKIHsKQEAg
LTQ1NTUsNyArNDY0NCwzNSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVn
aXN0ZXJJRCogdmFsdWUpCiAgICAgbW92ZSh2YWx1ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
KTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihS
ZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgUmVnaXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENh
bGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSkKK3sKKyAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxS
ZWZQdHI8UmVnaXN0ZXJJRD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2Fs
bEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFw
cGVuZChuZXdUZW1wb3JhcnkoKSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkK
KyAgICAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90
U3RhcnQoKSk7CisKKyAgICBlbWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+
ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yT3Blbjo6ZW1p
dCh0aGlzLCBpdGVyYXRvciwgbmV4dE9ySW5kZXgsIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZS50
aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUuc3RhY2tPZmZzZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJ
RCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0ZXJhYmxlLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwg
Q2FsbEFyZ3VtZW50cyYgaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlKQoreworICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCisgICAgVmVjdG9y
PFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsgKytpKQorICAgICAgICBjYWxsRnJhbWUu
YXBwZW5kKG5ld1RlbXBvcmFyeSgpKTsKKworICAgIGlmIChzaG91bGRFbWl0RGVidWdIb29rcygp
KQorICAgICAgICBlbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwgbm9kZS0+ZGl2
b3RTdGFydCgpKTsKKworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhub2RlLT5kaXZvdCgpLCBub2Rl
LT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIE9wSXRlcmF0b3JOZXh0Ojpl
bWl0KHRoaXMsIGRvbmUsIHZhbHVlLCBpdGVyYWJsZSwgbmV4dE9ySW5kZXgsIGl0ZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCBpdGVyYXRvci5zdGFja09mZnNldCgpKTsKK30KKworUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJn
dW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwg
cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKICAgICBlbWl0Q2FsbEl0ZXJhdG9yKGl0
ZXJhdG9yLmdldCgpLCBhcmd1bWVudCwgbm9kZSk7CkBAIC00NTYzLDYgKzQ2ODAsNTcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBh
cmd1bWVudCwgVGhyb3dhYmxlRXgKICAgICByZXR1cm4gaXRlcmF0b3IuZ2V0KCk7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3
YWl0KQoreworICAgIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlz
LCBudWxscHRyKTsKKyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvcik7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgaWYgKGRv
RW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7
CisgICAgfQorICAgIHsKKyAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJl
bCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCks
IGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAg
IGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0Owor
fQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05l
eHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdp
c3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlKQoreworICAgIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJn
dW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1
bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhv
ZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2Rl
LT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGRzdDsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIFJl
ZjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVy
bk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlO
YW1lcygpLnJldHVybktleXdvcmQpOworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5l
ZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7CisKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJn
dW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgbW92ZShyZXR1cm5B
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICBlbWl0Q2FsbCh2YWx1ZS5n
ZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3Vt
ZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgp
LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2Fp
dDo6WWVzKQorICAgICAgICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkpOworCisgICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0
KCkpOworICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworfQorCisK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdp
c3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuYXN5bmNJdGVyYXRvclN5bWJvbCk7CkBAIC00NTc1
LDcgKzQ3NDMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5j
SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YQogICAgIGVtaXRKdW1wKGFzeW5j
SXRlcmF0b3JGb3VuZC5nZXQoKSk7CiAgICAgZW1pdExhYmVsKGFzeW5jSXRlcmF0b3JOb3RGb3Vu
ZC5nZXQoKSk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0
R2V0SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21t
b25JdGVyYXRvciA9IGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAg
IG1vdmUoaXRlcmF0b3IuZ2V0KCksIGNvbW1vbkl0ZXJhdG9yLmdldCgpKTsKIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0
ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CkBAIC00NjA0LDcgKzQ3NzIsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IG5ld1RlbXBvcmFyeSgpOwogICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0
ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJv
ZHlNb2RlID8gZW1pdEdldEFzeW5jSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEl0
ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJh
dG9yID0gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlN
b2RlID8gZW1pdEdldEFzeW5jSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEdlbmVy
aWNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5l
d0xhYmVsKCk7CkBAIC00NjQyLDcgKzQ4MTAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQog
ICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmRmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1Rl
bXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQoKSksIHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOwog
CiAgICAgICAgICAgICAgICAgICAgIEVtaXRBd2FpdCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2Ug
PSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUg
PyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87Ci0gICAgICAgICAgICAgICAgICAgIGVt
aXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9y
Q2xvc2UpOworICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRl
cmF0b3IuZ2V0KCksIG5vZGUsIGVtaXRBd2FpdEluSXRlcmF0b3JDbG9zZSk7CiAKICAgICAgICAg
ICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMg
bm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC4iX3MpOwogCkBAIC00NzAzLDcgKzQ4NzEsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJ
RCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbWl0
TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdp
dGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZh
bHVlLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0
aFZhbHVlKHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFs
dWUuZ2V0KCksIG5vZGUpOwogCiAgICAgICAgICAgICBlbWl0TGFiZWwoYnJhbmNoT25SZXN1bHQu
Z2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDUzNGNkODI4YWFjM2QxNDBiNGY0NmM4Njg3Njgw
OTE0ZTBkZTMyNS4uNmI3MDhlOTZhYjE0NjBkYTZhMGFlMGNiOTUzNjhhNzlkY2Y4ZWZkZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtODI4LDYgKzgyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRDYWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eU5hbWVSZWdpc3RlciwKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdp
c3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKIAorICAgICAg
ICB2b2lkIGVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVu
dW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRM
YW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBG
b3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVs
bHB0cik7CiAgICAgICAgIHZvaWQgZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxs
QmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJs
ZSA9IG51bGxwdHIpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRUZW1wbGF0ZU9iamVj
dChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXBsYXRlTm9kZSopOwpAQCAtODk4LDkgKzg5OSwx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzRGVyaXZlZEFy
cmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxs
V2l0aFR5cGUoZHN0LCBzcmMsIERlcml2ZWRBcnJheVR5cGUpOyB9CiAgICAgICAgIHZvaWQgZW1p
dFJlcXVpcmVPYmplY3RDb2VyY2libGUoUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmluZyYg
ZXJyb3IpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29u
c3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpF
bWl0QXdhaXQ6Ok5vKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpOwotICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0g
RW1pdEF3YWl0OjpObyk7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklE
KiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0
ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUs
IFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4
dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSopOworCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRHZW5lcmljSXRlcmF0b3Io
UmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSopOworCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9
IEpTQzo6RW1pdEF3YWl0OjpObyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdl
bmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhv
ZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJh
bWV0ZXJzVG9Ta2lwKTsKIApAQCAtOTUwLDkgKzk1Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRQdXNoQ2F0Y2hTY29wZShWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAg
ICAgIHZvaWQgZW1pdFBvcENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3Io
UmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0KICAgICAgICAgdm9pZCBl
bWl0QXdhaXQoUmVnaXN0ZXJJRCopOwogICAgICAgICB2b2lkIGVtaXRHZXRTY29wZSgpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklEKiBvYmplY3RTY29w
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggZDRmZGI0ZGQ1NGQ0OTJmOTBkMmQ3MjFmZDdkYWMxMmZmN2QyZjg1MC4u
MmIxNWNhYTQ3MTNhODg1NjVjNGNkMDk1MjZmOTBjMjQ1ZjYzYTAwYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDU3
Miw3ICs0NTcyLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBuZXh0TWV0aG9kID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubmV4dCk7
CiAKICAgICBpZiAobV90YXJnZXRQYXR0ZXJucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1ODgsNyArNDU4OCw3IEBAIHZvaWQgQXJyYXlQ
YXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIHJocykKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9u
ZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgp
LCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJh
dG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdl
dCgpLCB0aGlzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgp
LCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVk
LmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwg
dmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDYyNCw3
ICs0NjI0LDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRl
cmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdl
bmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwg
dGhpcyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFs
dWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uRG9uZS5nZXQoKSk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ2NDIsNyArNDY0Miw3
IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKIAogICAgIFJlZjxMYWJlbD4gaXRlcmF0b3JDbG9z
ZWQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUo
ZG9uZS5nZXQoKSwgaXRlcmF0b3JDbG9zZWQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXRl
cmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgZ2VuZXJhdG9yLmVtaXRJdGVy
YXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChpdGVyYXRvckNsb3NlZC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCAwYTRhMTFmOWI0MGU2YjEzYzU5NjQyMjhlNDExMjg5ZjFkOWVlODY2Li4xOGRhZTAwNGM3MjJj
ZDZmZGNmODkxMmJjNWM0MjEzYTQzMWIyNDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Mzk4
LDEwICs0Mzk4LDggQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6Zm9yQWxsVmFsdWVzKAogICAgICAgICAgICAgICAgIGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZB
cmd1bWVudHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3RvcihtX3N0YXRlLmFyZ3VtZW50KGkpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5udW1iZXJPZkxvY2FscygpOyBpLS07KQotICAg
ICAgICBmdW5jdG9yKG1fc3RhdGUubG9jYWwoaSkpOworICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0
YXRlLnNpemUoKTsgaS0tOykKKyAgICAgICAgZnVuY3RvcihtX3N0YXRlLmF0SW5kZXgoaSkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKaW5kZXggODk3Yzcw
ZGZmYmEwNjZiNjQ5Y2FmZGNjMWVmMDkzMzc2ODEwNGQxMy4uNDM4ZTE2ZGU4NTk1OTI1NGQ5NTU3
MjFiNmYwOGRiOTU4MTRmZDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKQEAgLTEzNywxMSArMTM3LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCisg
ICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5z
aXplKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwu
bnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsg
cmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZlRtcHMoKTsgfQorICAgIEFic3Ry
YWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNB
dFRhaWwuYXQoaW5kZXgpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9w
ZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5vcGVyYW5kKG9wZXJhbmQpOyB9
CiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2Nr
LT52YWx1ZXNBdFRhaWwubG9jYWwoaW5kZXgpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1l
bnQoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQo
aW5kZXgpOyB9CisgICAgQWJzdHJhY3RWYWx1ZSYgdG1wKHNpemVfdCBpbmRleCkgeyByZXR1cm4g
bV9ibG9jay0+dmFsdWVzQXRUYWlsLnRtcChpbmRleCk7IH0KICAgICAKICAgICB2b2lkIGNsb2Ji
ZXJTdHJ1Y3R1cmVzKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDA5OTdiYWIwNTI1MjY0ZTZmMTY0ODU0MjQyZDk0Y2Uz
YjU3ZTM2ZGMuLmQwMTBlZTEyN2RmNGVhZjNjZTdkMjMwMmUzMjU2YWM5NzAxNjExNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnlWYWxJ
bmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29k
ZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNh
Y2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIK
QEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSGVscGVyIGZvciBtaW4gYW5k
IG1heC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFu
ZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3Vs
dCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIAogICAg
IHZvaWQgcmVmaW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQp
OwogICAgIC8vIEJsb2NrcyBjYW4gZWl0aGVyIGJlIHRhcmdldGFibGUgKGkuZS4gaW4gdGhlIG1f
YmxvY2tMaW5raW5nVGFyZ2V0cyBvZiBvbmUgSW5saW5lU3RhY2tFbnRyeSkgd2l0aCBhIHdlbGwt
ZGVmaW5lZCBieXRlY29kZUJlZ2luLApAQCAtMTc0LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gSGFuZGxlIGNhbGxzLiBUaGlzIHJlc29sdmVzIGlzc3VlcyBzdXJyb3VuZGluZyBpbmxpbmlu
ZyBhbmQgaW50cmluc2ljcy4KICAgICBlbnVtIFRlcm1pbmFsaXR5IHsgVGVybWluYWwsIE5vblRl
cm1pbmFsIH07CiAgICAgVGVybWluYWxpdHkgaGFuZGxlQ2FsbCgKLSAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgICAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3As
IElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAgICAg
ICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCBy
ZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTE4OCwyNyArMTg5
LDI3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBlbWl0RnVuY3Rpb25D
aGVja0lmTmVlZGVkKTsKICAgICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsgLy8g
UmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29u
dmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxp
bmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBs
YW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxS
ZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBOb2Rl
VHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CisgICAgYm9vbCBoYW5kbGVWYXJh
cmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBD
YWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNB
cmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1
bWVudHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKICAg
ICB1bnNpZ25lZCBnZXRJbmxpbmluZ0JhbGFuY2UoY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBlbnVtIGNsYXNzIENhbGxPcHRpbWl6YXRpb25SZXN1
bHQgeyBPcHRpbWl6ZWRUb0p1bXAsIElubGluZWQsIERpZE5vdGhpbmcgfTsKLSAgICBDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxv
Y2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSk7Ci0gICAgQ2Fs
bE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBD
YWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmly
dHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2Nr
KiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOworICAgIENhbGxP
cHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9w
ZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwg
VmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6
S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CisgICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxv
Y2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBz
dWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50cmluc2ljLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29s
IGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmlu
c2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFu
ZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNh
bGxlZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0dl
dHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5z
aWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3Ry
dWN0b3IoT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlv
biosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlv
bihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24q
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgTm9kZSogaGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIE5vZGUqIHZhbHVlKTsKICAgICBO
b2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIE5vZGVUeXBlID0gR2V0QnlPZmZz
ZXQpOwotICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIGJvb2wgaGFuZGxlRE9N
SklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRo
aXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKTsKICAgICBib29sIGhhbmRsZU1vZHVsZU5hbWVzcGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIEdldEJ5U3RhdHVzKTsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgpAQCAtMzE4LDE1ICszMTksMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIGdldExvY2FsT3JUbXAob3BlcmFuZCk7CiAgICAgfQogCi0gICAg
Tm9kZSogZ2V0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIE5vZGUqIGdldChPcGVyYW5k
IG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRl
eCgpOworICAgICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9IG9wZXJhbmQudmlydHVh
bFJlZ2lzdGVyKCkudG9Db25zdGFudEluZGV4KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvbGRT
aXplID0gbV9jb25zdGFudHMuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXgg
Pj0gb2xkU2l6ZSB8fCAhbV9jb25zdGFudHNbY29uc3RhbnRJbmRleF0pIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jayA9ICptX2lubGluZVN0YWNrVG9wLT5tX2Nv
ZGVCbG9jazsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENv
bnN0YW50KG9wZXJhbmQpOwotICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
biBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gPSBjb2RlQmxvY2suY29uc3RhbnRTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24ob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAg
ICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJlcHJlc2VudGF0
aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQu
dmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49
IG9sZFNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb25zdGFudHMuZ3Jvdyhjb25zdGFu
dEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFNp
emU7IGkgPCBtX2NvbnN0YW50cy5zaXplKCk7ICsraSkKQEAgLTM0NywxMCArMzQ4LDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICAgICAgaWYg
KCFpbmxpbmVDYWxsRnJhbWUoKS0+aXNDbG9zdXJlQ2FsbCkgewogICAgICAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGlubGluZUNhbGxGcmFtZSgpLT5jYWxsZWVDb25zdGFudCgpOwot
ICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZCA9PSBWaXJ0dWFsUmVnaXN0ZXIoQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtKU0Nv
bnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAob3BlcmFu
ZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpIHsKKyAgICAgICAgfSBlbHNlIGlm
IChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSB7CiAg
ICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHNvbWUgY29uc3RhbnQtZm9sZGluZyBoZXJlIGJl
Y2F1c2UgdGhpcyBlbmFibGVzIENyZWF0ZVRoaXMgZm9sZGluZy4gTm90ZQogICAgICAgICAgICAg
Ly8gdGhhdCB3ZSBkb24ndCBoYXZlIHN1Y2ggd2F0Y2hwb2ludC1iYXNlZCBmb2xkaW5nIGZvciBp
bmxpbmVkIHVzZXMgb2YgQ2FsbGVlLCBzaW5jZSBpbiB0aGF0CiAgICAgICAgICAgICAvLyBjYXNl
IGlmIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmdsZXRvbiB0aGVuIHdlIGFscmVhZHkga25vdyBpdC4K
QEAgLTQxMCw3ICs0MTEsNyBAQCBwcml2YXRlOgogICAgICAgICBtX3NldExvY2FsUXVldWUuc2hy
aW5rKDApOwogICAgIH0KIAotICAgIE5vZGUqIHNldChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwg
Tm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKKyAgICBOb2RlKiBzZXQo
T3BlcmFuZCBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQob3BlcmFuZCksIHZhbHVlLCBzZXRNb2RlKTsKICAgICB9CkBAIC02OTEsMTUgKzY5
MiwyMCBAQCBwcml2YXRlOgogICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CiAgICAgfQogCisg
ICAgTm9kZSoganNDb25zdGFudChGcm96ZW5WYWx1ZSogY29uc3RhbnRWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhjb25zdGFudFZhbHVl
KSk7CisgICAgfQorCiAgICAgLy8gQXNzdW1lcyB0aGF0IHRoZSBjb25zdGFudCBzaG91bGQgYmUg
c3Ryb25nbHkgbWFya2VkLgogICAgIE5vZGUqIGpzQ29uc3RhbnQoSlNWYWx1ZSBjb25zdGFudFZh
bHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZv
KG1fZ3JhcGguZnJlZXplU3Ryb25nKGNvbnN0YW50VmFsdWUpKSk7CisgICAgICAgIHJldHVybiBq
c0NvbnN0YW50KG1fZ3JhcGguZnJlZXplU3Ryb25nKGNvbnN0YW50VmFsdWUpKTsKICAgICB9CiAK
ICAgICBOb2RlKiB3ZWFrSlNDb25zdGFudChKU1ZhbHVlIGNvbnN0YW50VmFsdWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9ncmFwaC5mcmVl
emUoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIGpzQ29uc3RhbnQobV9ncmFwaC5m
cmVlemUoY29uc3RhbnRWYWx1ZSkpOwogICAgIH0KIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMg
dG8gZ2V0L3NldCB0aGUgdGhpcyB2YWx1ZS4KQEAgLTg1MCw3ICs4NTYsNyBAQCBwcml2YXRlOgog
ICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJn
Q291bnQsIGludCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVU
eXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsK
ICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CkBAIC05NTksNyArOTY1LDMzIEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UHJlZGljdGlvbihtX2N1cnJlbnRJbmRleCk7
CiAgICAgfQotICAgIAorCisgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgcXVpdGUgYSB0cnVlIGJv
dHRvbSB2YWx1ZSBmb3IgZXhhbXBsZSBhbnkgb2JqZWN0IHNwZWN1bGF0aW9uIHdpbGwgbm93IGJl
IE9iamVjdHxPdGhlciBhcyB0aGlzIHJldHVybnMgbnVsbC4KKyAgICAvLyBXZSBzaG91bGQgZml4
IHRoaXMgd2hlbiB3ZSBjYW4gYWxsb2NhdGUgb24gdGhlIENvbXBpbGVyIHRocmVhZC4KKyAgICBG
cm96ZW5WYWx1ZSogYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHNwZWMpCisgICAgeworICAgICAgICBpZiAoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3Bl
Y090aGVyKSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc051bGwoKSk7CisK
KyAgICAgICAgaWYgKGlzU3VidHlwZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNCb29sZWFuKSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc0Jvb2xlYW4odHJ1ZSkpOworCisgICAg
ICAgIGlmIChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjRnVsbE51bWJlcikpCisgICAg
ICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdW1iZXIoMCkpOworCisgICAgICAgIGlm
IChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjQmlnSW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2dyYXBoLmZyZWV6ZShtX3ZtLT5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSk7CisKKyAg
ICAgICAgaWYgKGlzU3VidHlwZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNTdHJpbmcgfCBTcGVjU3lt
Ym9sKSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShtX3ZtLT5zbWFsbFN0cmlu
Z3MuZW1wdHlTdHJpbmcoKSk7CisKKyAgICAgICAgaWYgKGlzU3VidHlwZVNwZWN1bGF0aW9uKHNw
ZWMsIFNwZWNDZWxsT3RoZXIgfCBTcGVjT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBtX2dy
YXBoLmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgQVNTRVJUKGlzU3VidHlwZVNwZWN1bGF0
aW9uKHNwZWMsIFNwZWNFbXB0eSkgfHwgc3BlYyA9PSBTcGVjTm9uZSk7CisgICAgICAgIHJldHVy
biBtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSBnZXRB
cnJheU1vZGUoQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewogICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jazsKQEAgLTExNzQs
NyArMTIwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIE9wdGlvbmFsOiBhIGNvbnRpbnVhdGlv
biBibG9jayBmb3IgcmV0dXJucyB0byBqdW1wIHRvLiBJdCBpcyBzZXQgYnkgZWFybHkgcmV0dXJu
cyBpZiBpdCBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgQmFzaWNCbG9jayogbV9jb250aW51YXRp
b25CbG9jazsKIAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1ZTsKKyAgICAg
ICAgT3BlcmFuZCBtX3JldHVyblZhbHVlOwogICAgICAgICAKICAgICAgICAgLy8gU3BlY3VsYXRp
b25zIGFib3V0IHZhcmlhYmxlIHR5cGVzIGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2Rl
IGJsb2NrLAogICAgICAgICAvLyB3aGljaCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMg
dGhhdCBwYXN0IERGRyBjb21waWxhdGlvbnMgb2YgdGhpcwpAQCAtMTE5NCw3ICsxMjI2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIENvZGVCbG9jayosCiAgICAgICAgICAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssCiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwg
aWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZXR1cm5WYWx1ZVZSLAorICAgICAgICAgICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICAgICAgICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZTo6S2luZCwKQEAgLTEyNjksNiArMTMwMSw3IEBAIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2Vy
OjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCkKICAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sg
PSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2soQnl0ZWNvZGVJbmRleCgpLCBtX251bUFyZ3VtZW50
cywgbV9udW1Mb2NhbHMsIG1fbnVtVG1wcywgMSkpOwogICAgIEJhc2ljQmxvY2sqIGJsb2NrUHRy
ID0gYmxvY2sucHRyKCk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7
CisgICAgVkVSQk9TRV9MT0coIkFkZGluZyBuZXcgdW50YXJnZXRhYmxlIGJsb2NrOiAiLCBibG9j
a1B0ci0+aW5kZXgsICJcbiIpOwogICAgIHJldHVybiBibG9ja1B0cjsKIH0KIApAQCAtMTMwMSw4
ICsxMzM0LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgogQnl0ZUNvZGVQYXJzZXI6OlRl
cm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBw
YywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8Q2FsbE9wPigpOwotICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoYnl0ZWNvZGUu
bV9jYWxsZWUpOwotICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5
dGVjb2RlLm1fYXJndik7CisgICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChjYWxsZWVGb3IoYnl0
ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkpOworICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5
dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKIAogICAgIENhbGxMaW5rU3Rh
dHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwK
QEAgLTEzMTAsOCArMTM0Myw4IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vCiAKICAgICBJbmxp
bmVDYWxsRnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9k
ZSk7CiAKLSAgICByZXR1cm4gaGFuZGxlQ2FsbChieXRlY29kZS5tX2RzdCwgb3AsIGtpbmQsIHBj
LT5zaXplKCksIGNhbGxUYXJnZXQsCi0gICAgICAgIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJP
ZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOworICAgIHJldHVybiBoYW5k
bGVDYWxsKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50
KCksIEpJVFR5cGU6OkRGR0pJVCksIG9wLCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAor
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50
SW5kZXguY2hlY2twb2ludCgpKSwgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQ
cmVkaWN0aW9uKCkpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5
KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCkKQEAgLTEz
MjEsNyArMTM1NCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2Fs
bExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsCiB9CiAKIEJ5dGVDb2RlUGFy
c2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUg
b3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUs
CiAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CkBAIC0xNjM3LDcgKzE2NzAsNyBAQCB1bnNpZ25l
ZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVk
Q3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNp
YWxpemF0aW9uS2luZEZvcihraW5kKTsKQEAgLTE2NzEsNyArMTcwNCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIENhCiAgICAgc2l6ZV90IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgu
bV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCk7CiAKICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkK
LSAgICAgICAgcmVzdWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCku
dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChyZXN1bHQpOwogCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJp
YWJsZSA9IG51bGxwdHI7CiAgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4
MjMsNyArMTg1Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgbV9jdXJyZW50SW5z
dHJ1Y3Rpb24gPSBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6
OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFu
dCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVu
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRl
eCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2Nr
LCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0
aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFs
YW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2Fs
bGVlKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxl
ZSwgIlxuIik7CiAKQEAgLTE5MDAsNyArMTkzMyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBj
CiAgICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZh
cmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAg
Y29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVu
dHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LAogICAgIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCkBAIC0yMDQ0LDcgKzIwNzcsNyBAQCB1bnNp
Z25lZCBCeXRlQ29kZVBhcnNlcjo6Z2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3Rh
dHVzJiBjYWxsTGlua1N0YXR1cwogfQogCiBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlv
blJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLAogICAgIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQpAQCAtMjIyMCw3ICsyMjUzLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRp
b25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4
KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVz
dWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBB
U1NFUlQob3AgPT0gQXJpdGhNaW4gfHwgb3AgPT0gQXJpdGhNYXgpOwogCkBAIC0yMjUwLDcgKzIy
ODMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
Citib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwg
T3BlcmFuZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0co
IiAgICAgICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTIzODks
MjcgKzI0MjIsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJh
eVZhbHVlc0ludHJpbnNpYzogewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAg
ICAgICAgIEl0ZXJhdGlvbktpbmQga2luZDsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2lj
KSB7Ci0gICAgICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAg
Y2FzZSBUeXBlZEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJ
dGVyYXRpb25LaW5kOjpWYWx1ZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUtl
eXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5RW50cmllc0lu
dHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0g
ICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJh
dGlvbktpbmRGb3JJbnRyaW5zaWMoaW50cmluc2ljKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCEha2luZCk7CiAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4
aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRh
bnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1cC4KLSAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0g
anNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKyAgICAg
ICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oKmtpbmQpKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gZXhp
c3RpbmcgZXJyb3Igc3RyaW5nLgogICAgICAgICAgICAgdW5zaWduZWQgZXJyb3JTdHJpbmdJbmRl
eCA9IFVJTlQzMl9NQVg7CkBAIC0zNjQ3LDcgKzM2NjQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgSQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJl
c3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2Niw3ICszNjgz
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKQogewogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAg
IGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKQEAgLTM3ODAsNyArMzc5Nyw3
IEBAIHN0YXRpYyB2b2lkIGJsZXNzQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBu
b2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYg
dmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODU5LDcgKzM4NzYsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIFNwZWN1bGF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAotICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsCisgICAgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBU
eXBlZEFycmF5VHlwZSB0eXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7
CiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlKSkKQEAgLTM5MTYsNyArMzkzMyw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0
YW50SW50ZXJuYWxGdW5jdGlvbigKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9m
ZnNldCwKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIEludGVybmFs
RnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsK
ICAgICBWRVJCT1NFX0xPRygiICAgIEhhbmRsaW5nIGNvbnN0YW50IGludGVybmFsIGZ1bmN0aW9u
ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiXG4iKTsKQEAgLTY2MDQsMjAgKzY2MjEsNDA5IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgTEFTVF9PUENPREUob3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9j
b25zdHJ1Y3RfdmFyYXJnczogewogICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGw8T3BDb25z
dHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbnN0cnVjdFZhcmFyZ3MsIENhbGxN
b2RlOjpDb25zdHJ1Y3QpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJl
bnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwg
d2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3Ry
dWN0aW9uIik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7
CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENh
bGxFdmFsPigpOwogICAgICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1f
YXJndjsKICAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcElu
Zm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2Rl
Lm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9jYWxsX2V2YWwpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAg
ICAgdWludDMyX3Qgc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVu
TW9kZXM7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9kZXMgPSBX
VEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7CisgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZSZW1h
aW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAgIGJvb2wg
Z2VuZXJhdGVkQ2FzZSA9IGZhbHNlOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZv
cihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNC
bG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
c3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4OworCisgICAgICAgICAgICBOb2RlKiBzeW1ib2xJ
dGVyYXRvciA9IGdldERpcmVjdChieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKworICAgICAgICAgICAg
aWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRmlyc3Qgc2V0IHVwIHRoZSB3YXRjaHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29y
cmVjdG5lc3MuCisgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemls
eShhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAg
IEZyb3plblZhbHVlKiBmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gbV9ncmFwaC5mcmVl
emUoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSk7
CisgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPT0gMSkKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW5TeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2Nr
ID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGtub3duSXRlckZ1bmN0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhm
cm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpc0FycmF5ID0gYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJ
bmZvKEFycmF5VHlwZSksIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFk
ZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdl
dChmYXN0QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRh
a2VuID0gQnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogYW5kUmVzdWx0ID0gYWRkVG9HcmFwaChBcml0aEJpdEFuZCwgaXNBcnJheSwga25vd25J
dGVyRnVuY3Rpb24pOworCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGJpdCBh
bmQgY2Fubm90IGhhdmUgZWZmZWN0cyBzbyBpdCdzIG9rIHRvIGV4aXQgaGVyZS4KKyAgICAgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9w
SW5mbyhicmFuY2hEYXRhKSwgYW5kUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFz
dEFycmF5QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVGhlIGJyYW5jaCBhYm92ZSBtYXkgaGF2
ZSBtYWRlIGV4aXQgaW52YWxpZCBidXQgaXQncyBhY3R1YWxseSBvay4KKyAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwor
ICAgICAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uS2luZDo6VmFsdWVzKSkpOworICAgICAgICAgICAg
ICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1
Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRl
cmF0ZWRPYmplY3QpKSwgaXRlcmF0b3IsIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtp
bmROb2RlKTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgaXRlcmF0
b3IpOworCisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwganNDb25zdGFudChK
U1ZhbHVlKCkpKTsKKworICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBk
b24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4
dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5k
ZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOwor
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAg
aWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZ2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0
ZWRDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxv
Y2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAg
ICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVy
YXRvck9wZW4+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09
IE5vblRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQo
KTsKKworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRl
cmF0b3IpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlz
T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAg
ICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOwor
ICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0
QmxvY2spOworICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFy
Z2V0KG5vdE9iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwg
T3BJbmZvKGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvcikpOworCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5v
dE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAg
ICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBiZSBhIHR5cGUgZXJyb3IuLi4KKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvdywganNDb25zdGFudChqc051bGwoKSkp
OworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGlzT2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7
CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVk
aWN0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29k
ZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogbmV4dEltcGwgPSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUobmV4dElt
cGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6
OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3Rh
dHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4
dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisK
KworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fbmV4dCwgcHJl
ZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihuZXh0SW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBv
cGNvZGVMZW5ndGgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxz
LiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8g
dGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0g
Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlv
bi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChK
dW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9y
VGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVk
Q2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZ2VuZXJhdGVk
Q2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3RhbnQoSlNWYWx1
ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwgcmVzdWx0KTsKKworICAgICAgICAgICAgICAgIC8vIERv
IG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWlu
IHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgbV9jdXJy
ZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVu
dEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgcHJv
Y2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwg
T3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydElu
ZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgICAg
ICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pdGVyYXRv
cl9vcGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogewor
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMgPSBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVzKTsKKyAgICAg
ICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9mSXRlcmF0aW9u
TW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4OworICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAg
ICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0gZ2xvYmFsT2Jq
ZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogY29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAg
ICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5ICYmIGFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9ucyB3ZSBuZWVkIGZv
ciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRk
TGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworCisgICAgICAgICAg
ICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgIT0gMSkgeworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBoYXNOZXh0ID0gYWRkVG9HcmFwaChJc0VtcHR5LCBnZXQoYnl0ZWNvZGUubV9u
ZXh0KSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZmFzdEFycmF5
QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOwor
ICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0
QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0g
QnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGhhc05leHQpOworCisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Tm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSksIGl0ZXJhdG9yKTsK
KworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzRG9uZUJsb2NrID0gYWxsb2NhdGVVbnRh
cmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGRvTG9hZEJsb2Nr
ID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwg
QXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRp
Y3Rpb25XaXRob3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgp
LCBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5k
ZXgpKSwgT3BJbmZvKFNwZWNJbnQ1MkFueSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhYmxlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmFi
bGUpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBidXR0ZXJmbHkgPSBhZGRUb0dyYXBoKEdl
dEJ1dHRlcmZseSwgaXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGgg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
aXRlcmFibGUsIGJ1dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzRG9uZSA9
IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgaW5kZXgsIGxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgLy8gVGhlIGFib3ZlIGNvbXBhcmUgZG9lc24ndCBw
cm9kdWNlIGVmZmVjdHMgc2luY2Ugd2Uga25vdyBpbmRleCBhbmQgbGVuZ3RoIGFyZSB1aW50MzJz
LgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFk
ZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdl
dChpc0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2Vu
ID0gQnJhbmNoVGFyZ2V0KGRvTG9hZEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaXNEb25lKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBkb0xvYWRCbG9j
azsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgT3BJbmZv
KFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikpOworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBvbmUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEpKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBp
bmRleCwgb25lKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGZhbHNlTm9kZSA9IGpzQ29u
c3RhbnQoanNCb29sZWFuKGZhbHNlKSk7CisKKworICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2UgaXQgb25s
eSB1c2VzIHRocmVlIGNoaWxkCisgICAgICAgICAgICAgICAgICAgIC8vIHNsb3RzLgorICAgICAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0MTkyCisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5t
X2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9y
IHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldEJ5VmFsID0g
YWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIEdldEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29y
ZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVj
b2RlLm1fdmFsdWUsIGdldEJ5VmFsKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZG9uZSwgZmFsc2VOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJ
bnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRv
cjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSwgbmV3SW5kZXgpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50
IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29k
ZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1f
Y3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVl
dWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250
aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJvbGwgYmFjayB0aGUgY2hlY2tw
b2ludC4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNE
b25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIHRydWVOb2RlID0ganNDb25zdGFudChqc0Jvb2xlYW4odHJ1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpzTnVtYmVy
KG1heFNhZmVJbnRlZ2VyKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYm90dG9tTm9k
ZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KTsKKworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tTm9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIHRydWVOb2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8o
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdl
dChieXRlY29kZS5tX2l0ZXJhdG9yKSwgZG9uZUluZGV4KTsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5k
ZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3Ry
dWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1
c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0
ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2Nr
KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJt
aW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck5leHQ+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAg
ICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9j
aygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0
ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9u
ZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAg
T3BlcmFuZCBuZXh0UmVzdWx0ID0gT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVz
dWx0KTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJh
dG9yUmVzdWx0ID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBCcmFuY2hE
YXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2sp
OworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdl
dChub3RPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNo
LCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yUmVzdWx0
KSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVz
KCk7CisgICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpT
VmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJ
bmZvKG1fZ3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQs
IGluZm8pOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3Is
IE9wSW5mbyhFcnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAg
ICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBhdXRvIHZhbHVlUHJlZGljaXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9T
UkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5l
eHQ6OmdldFZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBp
c09iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigp
OworICAgICAgICAgICAgICAgICAgICBOb2RlKiBib3R0b21WYWx1ZSA9IGpzQ29uc3RhbnQoYm90
dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKHZhbHVlUHJlZGljaXRpb24pKTsKKworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAg
ICAgICAgICBhdXRvKiBkb25lSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgp
OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFw
aC5pZGVudGlmaWVycygpLmVuc3VyZShkb25lSW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAg
QWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1
czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVH
ZXRCeUlkKGJ5dGVjb2RlLm1fZG9uZSwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihkb25lSW1wbCksIGlkZW50aWZpZXJO
dW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAg
ICAgICAvLyBTZXQgYSB2YWx1ZSBmb3IgbV92YWx1ZSBzbyB3ZSBkb24ndCB0aGluaworICAgICAg
ICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAg
ICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRk
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0
KGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2Vu
ID0gQnJhbmNoVGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGdldChieXRlY29kZS5tX2RvbmUpKTsK
KyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBub3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byogdmFsdWVJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+dmFs
dWUuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZSh2YWx1ZUltcGwpOworCisgICAgICAgICAg
ICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0g
R2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZVByZWRpY2l0aW9uLCBiYXNl
LCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZhbHVl
SW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgp
OworICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsK
KyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENhc2UpIHsKKyAgICAgICAgICAgICAgICBO
b2RlKiByZXN1bHQgPSBqc0NvbnN0YW50KEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3Zh
bHVlLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIHJlc3Vs
dCk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2Fu
dCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVj
b2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChF
eGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrID0gY29udGludWF0aW9uOworICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0b3JfbmV4dCk7CisgICAgICAgIH0KKwogICAgICAg
ICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSog
ZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyKSk7CkBAIC03
MTA3LDcgKzc1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgLy8gbG9hZHMgZnJvbSB0aGUgc2NvcGUgcmVnaXN0ZXIgbGF0
ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0aGUgREZHIGZyb20gdHJhY2tpbmcgdGhlCiAgICAg
ICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBsaXZlbmVzcyBvZiB0aGUgc2NvcGUgcmVnaXN0ZXIu
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dFNjb3BlPigpOwotICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSk7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgICAgICAgICAgTm9kZSogcmVzdWx0OwogICAg
ICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENv
bnN0YW50PEpTRnVuY3Rpb24qPigqbV92bSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gd2Vh
a0pTQ29uc3RhbnQoZnVuY3Rpb24tPnNjb3BlKCkpOwpAQCAtNzQ4Niw3ICs3ODkyLDcgQEAgQnl0
ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSwgLy8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAg
IFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1ZVZSLAorICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUs
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0LAogICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwK
QEAgLTc0OTUsNyArNzkwMSw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJ
bmxpbmVTdGFja0VudHJ5KAogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9w
cm9maWxlZEJsb2NrKHByb2ZpbGVkQmxvY2spCiAgICAgLCBtX2NvbnRpbnVhdGlvbkJsb2NrKGNv
bnRpbnVhdGlvbkJsb2NrKQotICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZVZSKQorICAg
ICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZSkKICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFy
c2VyLT5tX2lubGluZVN0YWNrVG9wKQogewogICAgIHsKQEAgLTc1NjEsNyArNzk2Nyw3IEBAIEJ5
dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAg
ICAvLyBNYWNoaW5lIGNvZGUgYmxvY2sgY2FzZS4KICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayA9
PSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2spOwogICAgICAgICBBU1NFUlQoIWNhbGxlZSk7
Ci0gICAgICAgIEFTU0VSVCghcmV0dXJuVmFsdWVWUi5pc1ZhbGlkKCkpOworICAgICAgICBBU1NF
UlQoIXJldHVyblZhbHVlLmlzVmFsaWQoKSk7CiAgICAgICAgIEFTU0VSVCghaW5saW5lQ2FsbEZy
YW1lU3RhcnQuaXNWYWxpZCgpKTsKIAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IDA7CkBA
IC03OTc2LDcgKzgzODIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAg
ICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogCiAgICAgICAgICAgICAgICAg
YXV0byBub2RlQW5kSW5kZXggPSBibG9jay0+ZmluZFRlcm1pbmFsKCk7Ci0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobm9kZUFuZEluZGV4Lm5vZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUp
OworICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZUFuZEluZGV4Lm5vZGUs
IG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxlKTsKICAgICAgICAgICAgICAg
ICBibG9jay0+cmVzaXplKG5vZGVBbmRJbmRleC5pbmRleCArIDEpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKaW5kZXggZTdmNmU3NjI0NjY5YjMw
MWY1YTAyMDQ4YzI1ZDQ4MTVjM2ExMzM5ZC4uNjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVm
M2I4YWI0MDJhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdT
aW1wbGlmaWNhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNC
bG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2Rl
T3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICB2b2lkIGtlZXBPcGVyYW5kQWxp
dmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9y
aWdpbiBub2RlT3JpZ2luLCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBOb2RlKiBs
aXZlbmVzc05vZGUgPSBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9w
ZXJhbmQpOwogICAgICAgICBpZiAoIWxpdmVuZXNzTm9kZSkKQEAgLTMwMiwxMSArMzAyLDkgQEAg
cHJpdmF0ZToKICAgICAKICAgICB2b2lkIGpldHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ss
IEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmln
aW4pCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAg
IGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3Jp
Z2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxv
Y2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpKSk7Ci0gICAgICAgIAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpl
dHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAg
a2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmln
aW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7
CisKICAgICAgICAgZml4SmV0dGlzb25lZFByZWRlY2Vzc29ycyhibG9jaywgamV0dGlzb25lZEJs
b2NrKTsKICAgICB9CiAgICAgCkBAIC0zNTIsMTEgKzM1MCw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAvLyBUaW1lIHRvIGluc2VydCBnaG9zdGllcyBmb3IgdGhpbmdzIHRoYXQgbmVlZCB0byBi
ZSBrZXB0IGFsaXZlIGluIGNhc2Ugd2UgT1NSCiAgICAgICAgICAgICAvLyBleGl0IHByaW9yIHRv
IGhpdHRpbmcgdGhlIGZpcnN0QmxvY2sncyB0ZXJtaW5hbCwgYW5kIGVuZCB1cCBnb2luZyBkb3du
IGEKICAgICAgICAgICAgIC8vIGRpZmZlcmVudCBwYXRoIHRoYW4gc2Vjb25kQmxvY2suCi0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJs
b2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAg
ICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3Vu
ZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhp
KSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+
dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBr
ZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2Rl
T3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlz
b25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVz
QXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2Vjb25kQmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzU5
Yjc3ODBhNmNjN2RlY2E3MDI0ODhmOGUxYzJhMGI2NzBiZjk5Zi4uNjAwMzMyZjE5MGZmOGI0MDQy
Y2Q1NDJhYjk1YjUwNTM2YWQ3YTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjc0LDYgKzI3NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBj
YXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJCiAgICAgY2FzZSBvcF9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAg
IGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5f
cHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDoKICAgICBjYXNl
IG9wX3B1dF90b19zY29wZToKQEAgLTMxMSw2ICszMTMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSQogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFt
cG9saW5lOgogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNh
c2UgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuX3Jl
dHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9u
OgogICAgIGNhc2Ugb3BfY2FsbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9jb25zdHJ1
Y3RfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJu
X2xvY2F0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggMWE0ZGVjZGEwYzJkNzM2ODdlZmNmMzg4Yjg0ODJmYjBlYzY0N2M0Zi4uZGJjODMxYzJl
YmUwODZmODczNjZhN2U1NGEzNWU1OTNhOWIwNzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNDExLDcgKzI0MTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBJZGVudGl0eVdpdGhQcm9maWxlOiB7Ci0gICAgICAg
ICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAppbmRleCBiZjQzNTBj
NGNkMTdlM2Q1MDA2NjM4ZjU1YWFjMzVhNTY1Mjk5NGExLi42OWM3NDgyMGQ0N2RjNWJhMjMxNjI0
YzhiZjkxNGNmY2JlMDc2MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZvckFsbEtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JB
bGxLaWxscy5oCkBAIC0xMDIsOCArMTAyLDYgQEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFmdGVyLmJ5
dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCksICJUcmFuc2l0aW9uaW5nIGFjcm9zcyBhIGNoZWNr
cG9pbnQgYnV0IGJlZm9yZSBhbmQgYWZ0ZXIgZG9uJ3Qgc2hhcmUgYW4gaW5saW5lQ2FsbEZyYW1l
LiIpOwotCiAgICAgLy8gRGV0ZWN0IGtpbGxzIHRoZSBzdXBlciBjb25zZXJ2YXRpdmUgd2F5OiBp
dCBpcyBraWxsZWQgaWYgaXQgd2FzIGxpdmUgYmVmb3JlIGFuZCBkZWFkIGFmdGVyLgogICAgIEJp
dFZlY3RvciBsaXZlQWZ0ZXIgPSBncmFwaC5sb2NhbHNBbmRUbXBzTGl2ZUluQnl0ZWNvZGUoYWZ0
ZXIpOwogICAgIHVuc2lnbmVkIG51bUxvY2FscyA9IGdyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggMjAyZDIyNTA1M2ZhOWRmYmU1
YzIzYzY0YmNmOGJlMzg0ZTNlNzY1NC4uN2NjMzRhZTJkMGQ0ZTVmODQ4ZTY5NTczMDI0OTJjMTIx
ZDcxZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKEJhc2ljQmxvY2sqIGJhc2ljQmxvY2spCiAgICAgQVNT
RVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2lj
QmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNC
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFs
dWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZU
bXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZU
bXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1wcygpKTsKKyAgICBB
U1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09IGJhc2lj
QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CiAKICAgICBtX2Fic3RyYWN0
VmFsdWVzLnJlc2l6ZSgpOwogCkBAIC0xNjEsNiArMTY0LDEwIEBAIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRh
aWwubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQudG1wKGkpLmNsZWFyKCk7CisgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwudG1wKGkpLmNsZWFyKCk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7CkBAIC0xNzUsMTMgKzE4Miw5IEBAIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICBibG9jay0+Y2ZhVGhpbmtzU2hvdWxkVHJ5
Q29uc3RhbnRGb2xkaW5nID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKICAgICAgICAgYmxvY2stPmNm
YVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50
KGkpLmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICAgICAg
YmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2st
PnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGJs
b2NrLT52YWx1ZXNBdEhlYWRbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNB
dFRhaWxbaV0uY2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM5LDcgKzI0Miw3IEBA
IGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFsdWUgZnJvbSBoZWFkIHRvIHRhaWwu
Ci0gICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSB2YXJpYWJsZUF0KGluZGV4KTsKKyAgICAg
ICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGF0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMzA0LDcgKzMwNyw3
IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gdmFyaWFibGVBdChpKTsKKyAgICAgICAgICAgIGJs
b2NrLT52YWx1ZXNBdFRhaWxbaV0gPSBhdEluZGV4KGkpOwogICAgICAgICB9CiAKICAgICAgICAg
Zm9yIChOb2RlQWJzdHJhY3RWYWx1ZVBhaXImIHZhbHVlQXRUYWlsIDogYmxvY2stPnNzYS0+dmFs
dWVzQXRUYWlsKQpAQCAtMzQzLDYgKzM0Niw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6
Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgICAgICBkYXRhTG9n
KCIgICBNZXJnaW5nIGZyb20gIiwgcG9pbnRlckR1bXAoZnJvbSksICIgdG8gIiwgcG9pbnRlckR1
bXAodG8pLCAiXG4iKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9m
QXJndW1lbnRzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpKTsK
ICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gdG8t
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NFUlQoZnJvbS0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZUbXBzKCkpOwogICAgIAogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgIApAQCAtMzUy
LDE0ICszNTYsOSBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2Nr
KiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAKICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3Jt
KSB7CiAgICAgY2FzZSBUaHJlYWRlZENQUzogewotICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVu
dCA9IDA7IGFyZ3VtZW50IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRz
KCk7ICsrYXJndW1lbnQpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9u
ID0gdG8tPnZhbHVlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1
ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpLCB0by0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGFyZ3VtZW50KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwg
PCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewotICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmxv
Y2FsKGxvY2FsKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5C
bG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5sb2NhbChsb2NhbCksIHRvLT52
YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubG9jYWwo
bG9jYWwpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGZyb20tPnZh
cmlhYmxlc0F0VGFpbC5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIEFic3RyYWN0VmFs
dWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5hdChpbmRleCk7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9t
LT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpLCB0by0+dmFyaWFibGVzQXRIZWFkLmF0KGluZGV4KSwg
ZnJvbS0+dmFyaWFibGVzQXRUYWlsLmF0KGluZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oCmluZGV4IDE4NjVlNmExZWZmYzNkYWFlZmU1ODRjYTg2MmM0OWJjMzY4
NTg1MDAuLmM1ZDAyNjg3M2UwMTBkMDdmMzgxMWM2YzRmZWY1NjZlMWNhNzBmOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgK
QEAgLTE1OCwxMCArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGVyYW5kczxBYnN0cmFj
dFZhbHVlPiYgdmFyaWFibGVzRm9yRGVidWdnaW5nKCk7CiAKKyAgICB1bnNpZ25lZCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZkFyZ3VtZW50
cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZUbXBzKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZUbXBzKCk7IH0KICAgICAKLSAgICBB
YnN0cmFjdFZhbHVlJiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkKKyAgICBBYnN0cmFjdFZhbHVl
JiBhdEluZGV4KHNpemVfdCBpbmRleCkKICAgICB7CiAgICAgICAgIGFjdGl2YXRlVmFyaWFibGVJ
Zk5lY2Vzc2FyeShpbmRleCk7CiAgICAgICAgIHJldHVybiBmYXN0Rm9yd2FyZChtX3ZhcmlhYmxl
c1tpbmRleF0pOwpAQCAtMTY5LDE3ICsxNzEsMTcgQEAgcHVibGljOgogCiAgICAgQWJzdHJhY3RW
YWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gdmFy
aWFibGVBdChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOworICAgICAgICByZXR1
cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOwogICAgIH0KICAg
ICAKICAgICBBYnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAg
ICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7CisgICAg
ICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5kZXgpKTsKICAgICB9
CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRl
eCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5hcmd1bWVudEluZGV4KGlu
ZGV4KSk7CiAgICAgfQogICAgIAogICAgIC8vIENhbGwgdGhpcyBiZWZvcmUgYmVnaW5uaW5nIENG
QSB0byBpbml0aWFsaXplIHRoZSBhYnN0cmFjdCB2YWx1ZXMgb2YKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAppbmRleCBmNWVlZjJmM2RmNzIxMjlhODM4Yzc2ODZl
MjZiOTYwYjUwZjU4MWVlLi43YTMzNjY2YWE3MWExZjY2NmM5NGIyOGI2NDQ3NDg0ZDY3YmJiN2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCkBAIC03Nyw2
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGF6eUpTVmFsdWUgbmV3U3RyaW5nKEdyYXBo
JiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBMYXppbmVzc0tpbmQga2luZCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZDsgfQorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRUeXBlKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtub3duVmFsdWUgPyBTcGVjQnl0ZWNvZGVUb3AgOiBTcGVjU3Ry
aW5nOyB9CiAgICAgCiAgICAgRnJvemVuVmFsdWUqIHRyeUdldFZhbHVlKEdyYXBoJikgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUy
ZGJkZDliOTM3MGQ2ZGU2NTNjNWE0ODg3MTE3MDBlOGI4NzliLi41MjIzNGI0YTVkM2Y2OTc2YzJm
YTk5ODE2ZGNlMTEwNjgxMDU0ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKQEAgLTQ4LDExICs0OCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292
ZXJ5SW5kZXgpCitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2Ug
anNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUs
IFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNv
dmVyeUluZGV4LCB1bnNpZ25lZCBkZmdJUkluZGV4KQogICAgIDogT1NSRXhpdEJhc2Uoa2luZCwg
aml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3Jp
Z2luLndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAg
ICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fcmVjb3ZlcnlJbmRleChy
ZWNvdmVyeUluZGV4KQorICAgICwgbV9kZmdJUkluZGV4KGRmZ0lSSW5kZXgpCiAgICAgLCBtX3N0
cmVhbUluZGV4KHN0cmVhbUluZGV4KQogewogICAgIGJvb2wgY2FuRXhpdCA9IGppdC0+bV9vcmln
aW4uZXhpdE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCA5ZTli
Y2VhNDgxYzFkNjg3Nzk3MmYyNTlkNjJjMWEyMzAwYjJiMTYxLi44Y2U4YjkyMDc5YWY3NTI5OTcw
M2YxN2ZkZGFlMmZlYzNiOWMyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1
Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSosIHZvaWQqLCB2b2lkCiAvLyBUaGlz
IHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGggYnkK
IC8vIGdvaW5nIGludG8gYmFzZWxpbmUgY29kZS4KIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9T
UkV4aXRCYXNlIHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOworICAgIE9TUkV4aXQoRXhp
dEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1
bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgg
PSBVSU5UX01BWCwgdW5zaWduZWQgZGZnSVJJbmRleCA9IFVJTlRfTUFYKTsKIAogICAgIGZyaWVu
ZCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQoQ2FsbEZyYW1lKik7
CiAKQEAgLTE1OSw2ICsxNTksNyBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFz
ZSB7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAg
ICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV9kZmdJUklu
ZGV4OwogCiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBjb2RlTG9jYXRp
b25Gb3JSZXBhdGNoKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCAxZGYzOTQzMjQxZDVhZjc5
MzE5OGVmOWM3MTI3M2U3NThhMGEyMjZhLi4wODVkYzUzMGIzYmMzNzlmYjRmM2U2MDkxY2I1YzY1
MjAyNzU4N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xNTksOSArMTU5LDE1IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIo
KSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7Ci0g
ICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgotICAgICAgICAgICAganVtcFRhcmdl
dCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAgY2FzZSBJbmxpbmVD
YWxsRnJhbWU6OkNhbGw6IHsKKyAgICAgICAgICAgIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2Rl
SUQoKSA9PSBvcF9jYWxsKQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRV
Uk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rp
b24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3Jfb3Blbik7CisgICAgICAg
ICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9u
ZXh0KQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04o
b3BfaXRlcmF0b3JfbmV4dCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0OgogICAgICAgICAgICAganVtcFRhcmdl
dCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3QpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0yMzksNiArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAg
fQogICAgIH0KIAorICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKICAgICByZXR1cm4ganVtcFRhcmdl
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMTAwM2VkNWZkM2ZiYzM4MTYyYzg5
MmIzNGM4NDdiOTI3NjgzZmFlLi42ZTA5MGEzOGJmYzA5NDc1YTdkN2JkNTkxZTI1MWEzZTkzNDY4
NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTEwMSw2ICsxMTAxLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2Rl
Qnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7Cisg
ICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmxhenlKU1ZhbHVlKCkuc3Bl
Y3VsYXRlZFR5cGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoK
ICAgICAgICAgY2FzZSBUb1N0cmluZzoKQEAgLTEzMDUsNyArMTMxMSw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJl
Z0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTTog
ewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRo
aXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uCiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9jdXJyZW50Tm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSBkdXJpbmcgcHJlZGljdGlvbiBwcm9wYWdh
dGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAw
ZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiLi45YWU5ODA0Yzc1Yjk1ZWM1
NjFlZDJmMWE1MmI5ZGVjOThjODQ1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkYXRh
TG9nRigiKSA9PSAoJXMgPSAiLCAjcmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRhTG9nKHJpZ2h0
KTsgXAogICAgICAgICAgICAgZGF0YUxvZ0YoIikgKCVzOiVkKS5cbiIsIF9fRklMRV9fLCBfX0xJ
TkVfXyk7IFwKKyAgICAgICAgICAgIGRhdGFMb2coIlxuXG5cbiIpOyBcCisgICAgICAgICAgICBt
X2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG51bGxwdHIpLT5kdW1wQnl0ZWNvZGUoKTsgXAog
ICAgICAgICAgICAgZHVtcEdyYXBoSWZBcHByb3ByaWF0ZSgpOyBcCiAgICAgICAgICAgICBXVEZS
ZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5D
VElPTiwgI2xlZnQgIiA9PSAiICNyaWdodCk7IFwKICAgICAgICAgICAgIENSQVNIKCk7IFwKQEAg
LTU2OCw2ICs1NzAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4g
Z2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsK
ICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4gc2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNM
aWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1w
cygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBi
bG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVz
QXRIZWFkLnRtcChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CisgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQorICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWls
LnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKS0+YWNjZXNzZXNTdGFjayht
X2dyYXBoKSk7CisKKyAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0aW9ucy50bXAoaSkgPSBu
b3RTZXQ7CisgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
aSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkgfHwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQpAQCAtNzE2
LDYgKzcyNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09
IExvYWRTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCisgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlv
bnMsIE9wZXJhbmQ6OnRtcChpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50
cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCiAgICAgICAgICAgICAg
ICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlvbnMsIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CkBAIC05NDQsNyArOTU5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tPcGVyYW5kKAogICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jaywgT3BlcmFuZHM8c2l6ZV90PiYgZ2V0TG9jYWxQb3NpdGlvbnMsCi0gICAgICAgIE9w
ZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkKKyAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIE9wZXJhbmQg
b3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChnZXRMb2NhbFBvc2l0aW9ucy5vcGVyYW5kKG9w
ZXJhbmQpID09IG5vdFNldCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIKaW5kZXggNGE4YjFlNTgxNDQxZmRhNjg3NmU2NTJjOTg0NjAxYTJi
M2I3OWQzNC4uOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEwYzgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzNyw2ICsxMzcsNyBAQCBtb2R1
bGUgRFNMCiAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiR2V0QnlWYWxI
aXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9NZXRhZGF0YS5yYgppbmRleCA3Y2QxNWQzMTVkNjM5MGFiYTI2MzVlOTYzNTlm
ODkwZTJlYjcxYTk1Li5jMDc3NWQ4ZTFiMTA1MDJkZjAxYTc0YWYwYzZkZWI0YTg3NWNjNjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKQEAgLTY3LDYg
KzY3LDcgQEAgY2xhc3MgTWV0YWRhdGEKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0
YWRhdGEpOwogCiAgICAgcHVibGljOgorICAgICAgICAje29wLm9wY29kZUlEfQogICAgICAgICBN
ZXRhZGF0YShjb25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29wIiBpZiBpbml0c30p
I3tpbml0c30geyB9CiAKICN7ZmllbGRzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9TZWN0aW9uLnJiCmluZGV4IDliNWVlOTA5NmVlNzFiMWIwZDNlZDdmN2NkMThkYjA2ZmNiMzVm
Y2YuLjZiNWE5NDJmMDgyMzlhNTJlMDY5ZTgwOWRhMjc3YTRlZjhlNjY5ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTUzLDcgKzUzLDE3IEBAIGNs
YXNzIFNlY3Rpb24KICAgZW5kCiAKICAgZGVmIHNvcnQhCi0gICAgICBAb3Bjb2RlcyA9IEBvcGNv
ZGVzLnNvcnQgeyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/
IDAgOiAxIDogLTEgfQorICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8Cisg
ICAgICAgICAgcmVzdWx0ID0gbmlsCisgICAgICAgICAgaWYgYS5jaGVja3BvaW50cyBvciBiLmNo
ZWNrcG9pbnRzCisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMgd2l0aCBjaGVja3BvaW50
cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3thLm5hbWV9IiBpZiBhLmNoZWNrcG9pbnRzIGFuZCBh
Lm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hl
Y2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7Yi5uYW1lfSIgaWYgYi5jaGVja3BvaW50
cyBhbmQgYi5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmVzdWx0ID0gYS5jaGVja3Bv
aW50cyA/IGIuY2hlY2twb2ludHMgPyAwIDogLTEgOiAxCisgICAgICAgICAgZWxzaWYKKyAgICAg
ICAgICAgICAgcmVzdWx0ID0gYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/
IDAgOiAxIDogLTEgCisgICAgICAgICAgZW5kCisgICAgICAgICAgcmVzdWx0CisgICAgICB9CiAg
ICAgICBAb3Bjb2Rlcy5lYWNoKCY6Y3JlYXRlX2lkISkKICAgZW5kCiAKQEAgLTczLDYgKzgzLDE4
IEBAIGNsYXNzIFNlY3Rpb24KICAgICAgIGVuZAogCiAgICAgICBpZiBjb25maWdbOmVtaXRfaW5f
c3RydWN0c19maWxlXQorICAgICAgICAgIGkgPSAwCisgICAgICAgICAgd2hpbGUgdHJ1ZQorICAg
ICAgICAgICAgICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50cworICAgICAgICAgICAgICAgICAg
b3V0IDw8ICJcbiIKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBOVU1CRVJfT0Zf
I3tjb25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fV0lUSF9DSEVDS1BPSU5UUyAje2l9XG4i
CisgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbmQKKworICAgICAgICAg
ICAgICBpICs9IDEKKyAgICAgICAgICBlbmQKKyAgICAgICAgICBvdXQgPDwgIlxuIgorCiAgICAg
ICAgICAgb3V0LndyaXRlKCIjZGVmaW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2Nv
bXBvbmVudF19X01FVEFEQVRBX1NJWkUobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAg
ICAgICAgICAgd2hpbGUgdHJ1ZQpAQCAtODcsNiArMTA5LDggQEAgY2xhc3MgU2VjdGlvbgogICAg
ICAgICAgIGVuZAogICAgICAgICAgIG91dCA8PCAiXG4iCiAKKworCiAgICAgICAgICAgb3V0Lndy
aXRlKCIjZGVmaW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVudF19X01F
VEFEQVRBX0FMSUdOTUVOVChtYWNybykgXFxcbiIpCiAgICAgICAgICAgaSA9IDAKICAgICAgICAg
ICB3aGlsZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCmluZGV4IDY0NTM5MTI3YjhjNzRjODIwMjliMmJiNjE4MGU2OTY5NzFhNjRiYzgu
LjNmZjkyYjQ1M2E3MjkyNmRjNzRlY2JkY2Y2ZTMxNGJjZmIzNjhlMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC00MywxMzkgKzQz
LDEzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIENvZGVCbG9jazsKLSAgICBj
bGFzcyBFdmFsRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAg
Y2xhc3MgVk07Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKLSAgICBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwotICAgIGNsYXNzIEpTTW9kdWxlUmVj
b3JkOwotICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZTsKLSAgICBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKLSAgICBjbGFz
cyBSZWdpc3RlcjsKLSAgICBjbGFzcyBKU1Njb3BlOwotICAgIGNsYXNzIFNvdXJjZUNvZGU7Ci0g
ICAgY2xhc3MgU3RhY2tGcmFtZTsKLSAgICBzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZTsKLSAgICBz
dHJ1Y3QgSGFuZGxlckluZm87Ci0gICAgc3RydWN0IEluc3RydWN0aW9uOwotICAgIHN0cnVjdCBQ
cm90b0NhbGxGcmFtZTsKLQotICAgIGVudW0gRGVidWdIb29rVHlwZSB7Ci0gICAgICAgIFdpbGxF
eGVjdXRlUHJvZ3JhbSwKLSAgICAgICAgRGlkRXhlY3V0ZVByb2dyYW0sCi0gICAgICAgIERpZEVu
dGVyQ2FsbEZyYW1lLAotICAgICAgICBEaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50LAotICAgICAg
ICBXaWxsTGVhdmVDYWxsRnJhbWUsCi0gICAgICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50LAotICAg
ICAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24sCi0gICAgfTsKLQotICAgIGVudW0gU3RhY2tGcmFt
ZUNvZGVUeXBlIHsKLSAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCi0gICAgICAgIFN0YWNr
RnJhbWVFdmFsQ29kZSwKLSAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCi0gICAgICAgIFN0
YWNrRnJhbWVGdW5jdGlvbkNvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCi0gICAg
fTsKLQotICAgIGNsYXNzIEludGVycHJldGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwotICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwot
ICAgICAgICBmcmllbmQgY2xhc3MgVk07Ci0KLSAgICBwdWJsaWM6Ci0gICAgICAgIEludGVycHJl
dGVyKFZNICYpOwotICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKLSAgICAgICAgCitjbGFzcyBDb2Rl
QmxvY2s7CitjbGFzcyBFdmFsRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
K2NsYXNzIFZNOworY2xhc3MgSlNGdW5jdGlvbjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xh
c3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFzcyBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNzIFJlZ2lzdGVyOworY2xhc3MgSlNTY29wZTsKK2Ns
YXNzIFNvdXJjZUNvZGU7CitjbGFzcyBTdGFja0ZyYW1lOworc3RydWN0IENhbGxGcmFtZUNsb3N1
cmU7CitzdHJ1Y3QgSGFuZGxlckluZm87CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgUHJv
dG9DYWxsRnJhbWU7CisKK2VudW0gRGVidWdIb29rVHlwZSB7CisgICAgV2lsbEV4ZWN1dGVQcm9n
cmFtLAorICAgIERpZEV4ZWN1dGVQcm9ncmFtLAorICAgIERpZEVudGVyQ2FsbEZyYW1lLAorICAg
IERpZFJlYWNoRGVidWdnZXJTdGF0ZW1lbnQsCisgICAgV2lsbExlYXZlQ2FsbEZyYW1lLAorICAg
IFdpbGxFeGVjdXRlU3RhdGVtZW50LAorICAgIFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwKK307CisK
K2VudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKKyAgICBTdGFja0ZyYW1lR2xvYmFsQ29kZSwKKyAg
ICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCisgICAgU3Rh
Y2tGcmFtZUZ1bmN0aW9uQ29kZSwKKyAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQorfTsKKworY2xh
c3MgSW50ZXJwcmV0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVu
ZCBjbGFzcyBDYWNoZWRDYWxsOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07CisKK3B1Ymxp
YzoKKyAgICBJbnRlcnByZXRlcihWTSAmKTsKKyAgICB+SW50ZXJwcmV0ZXIoKTsKKyAgICAKICNp
ZiBFTkFCTEUoQ19MT09QKQotICAgICAgICBDTG9vcFN0YWNrJiBjbG9vcFN0YWNrKCkgeyByZXR1
cm4gbV9jbG9vcFN0YWNrOyB9CisgICAgQ0xvb3BTdGFjayYgY2xvb3BTdGFjaygpIHsgcmV0dXJu
IG1fY2xvb3BTdGFjazsgfQogI2VuZGlmCi0gICAgICAgIAotICAgICAgICBzdGF0aWMgaW5saW5l
IE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOworICAgIAorICAgIHN0YXRpYyBpbmxpbmUgT3Bj
b2RlIGdldE9wY29kZShPcGNvZGVJRCk7CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGVJ
RCBnZXRPcGNvZGVJRChPcGNvZGUpOworICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bj
b2RlSUQoT3Bjb2RlKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIHN0YXRpYyBib29s
IGlzT3Bjb2RlKE9wY29kZSk7CisgICAgc3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKICNl
bmRpZgogCi0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNPYmopOwotICAgICAgICBKU1ZhbHVlIGV4
ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwo
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci0gICAgICAgIEpTT2Jq
ZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9u
LCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpT
VmFsdWUgbmV3VGFyZ2V0KTsKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOwotCi0gICAg
ICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRp
ZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwot
Ci0gICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdW53aW5kKFZNJiwgQ2FsbEZyYW1l
KiYsIEV4Y2VwdGlvbiopOwotICAgICAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25U
b0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsK
LSAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rVHlw
ZSk7Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgc3RhY2tUcmFjZUFzU3RyaW5nKFZNJiwgY29uc3Qg
VmVjdG9yPFN0YWNrRnJhbWU+Jik7Ci0KLSAgICAgICAgdm9pZCBnZXRTdGFja1RyYWNlKEpTQ2Vs
bCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IGZyYW1lc1RvU2tp
cCA9IDAsIHNpemVfdCBtYXhTdGFja1NpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0gRXhlY3V0aW9uRmxhZyB7IE5v
cm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIEpT
VmFsdWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVyblZhbHVlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgSlNPYmplY3QqIGNoZWNr
ZWRSZXR1cm4oSlNPYmplY3QqIHJldHVyblZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChG
dW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rp
b24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBjb25zdCBBcmdM
aXN0Jik7Ci0KLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUmKTsKLQot
ICAgICAgICBWTSYgbV92bTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKKyAgICBKU1ZhbHVl
IGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxP
YmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7CisgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxE
YXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU09iamVjdCog
ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29u
c3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVl
IG5ld1RhcmdldCk7CisgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworCisgICAgdm9pZCBnZXRB
cmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBh
cmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CisKKyAgICBORVZFUl9J
TkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNlcHRpb24qKTsK
KyAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKKyAgICBORVZFUl9JTkxJTkUgdm9p
ZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tUeXBlKTsKKyAgICBzdGF0aWMgU3RyaW5nIHN0
YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYpOworCisgICAg
dm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVz
dWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhTdGFja1NpemUgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIEV4
ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRpYWxpemVBbmRSZXR1cm4gfTsKKyAgICAKKyAgICBz
dGF0aWMgSlNWYWx1ZSBjaGVja2VkUmV0dXJuKEpTVmFsdWUgcmV0dXJuVmFsdWUpCisgICAgewor
ICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU09iamVjdCogY2hlY2tlZFJldHVybihKU09iamVj
dCogcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOworICAg
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgQ2FsbEZyYW1lQ2xvc3VyZSBw
cmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90
b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7CisKKyAgICBKU1ZhbHVlIGV4ZWN1dGUoQ2FsbEZy
YW1lQ2xvc3VyZSYpOworCisgICAgVk0mIG1fdm07CiAjaWYgRU5BQkxFKENfTE9PUCkKLSAgICAg
ICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CisgICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7
CiAjZW5kaWYKLSAgICAgICAgCisgICAgCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RF
UykKICNpZiAhRU5BQkxFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgQVNTRVJUX0VOQUJM
RUQKLSAgICAgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFi
bGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQuCisgICAgc3RhdGljIEhhc2hNYXA8T3Bj
b2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2Rl
SUQuCiAjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEFTU0VS
VF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSAgICB9
OwotCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1v
ZGUpOwotCi0gICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxG
cmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCi0gICAgewotICAgICAgICAvLyBXZSB3YW50IHRoZSBu
ZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3RhY2sgYWxpZ25lZCBvZmZzZXQgd2l0aCBh
IHN0YWNrCi0gICAgICAgIC8vIGFsaWduZWQgc2l6ZS4gQWxpZ24gdGhlIHNpemUgaGVyZS4KLSAg
ICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2YoCi0gICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAotICAgICAgICAgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycykgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKLQotICAgICAgICAvLyBB
bGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCi0gICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxl
ZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAotICAgICAgICAgICAgc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycyk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lz
dGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMy
X3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4
QXJndW1lbnRzID0gMHgxMDAwMDsKLSAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWdu
ZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKLSAgICB1
bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyk7Ci0gICAgdm9pZCBsb2Fk
VmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUqIGZpcnN0RWxlbWVudERlc3QsIEpTVmFs
dWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBz
ZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFt
ZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxG
cmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1
aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKLSAgICB2b2lkIHNl
dHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVj
Q2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9p
ZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7Cit9OworCitKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CisKK2lubGluZSBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNr
U2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQoreworICAgIC8vIFdl
IHdhbnQgdGhlIG5ldyBmcmFtZSB0byBiZSBhbGxvY2F0ZWQgb24gYSBzdGFjayBhbGlnbmVkIG9m
ZnNldCB3aXRoIGEgc3RhY2sKKyAgICAvLyBhbGlnbmVkIHNpemUuIEFsaWduIHRoZSBzaXplIGhl
cmUuCisgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCisgICAgICAgIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMp
IC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisKKyAgICAvLyBBbGlnbiB0aGUg
ZnJhbWUgb2Zmc2V0IGhlcmUuCisgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksCisgICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7CisgICAgcmV0dXJuIENh
bGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFt
ZU9mZnNldCk7Cit9CisKK3Vuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOworc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAweDEwMDAwOwordW5zaWduZWQgc2l6ZUZy
YW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIFZNJiwgSlNWYWx1ZSBh
cmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZhckFy
Z09mZnNldCk7Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyk7Cit2
b2lkIGxvYWRWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSogZmlyc3RFbGVtZW50RGVz
dCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3Zv
aWQgc2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwordm9pZCBzZXR1cFZhcmFyZ3NGcmFt
ZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxG
cmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1
aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBG
b3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBG
b3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1
aW50MzJfdCBsZW5ndGgpOwogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1
YjBmLi44YjNhMjM4YTRkYWYxZmM2NzkxNDBkOGJiZWM3NzA5Yjg1NjhiYjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBtX2xhYmVsc1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCldID0gbGFiZWwoKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAg
ICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgY29kZSBmb3IgIiwgbV9ieXRlY29k
ZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJ
bmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAgICAgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKQEAgLTQz
OCw2ICs0MzgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfaW50ZXJuYWxfZmllbGQpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfaW50ZXJuYWxfZmllbGQpCiAKKyAgICAgICAgREVGSU5FX09QKG9wX2l0ZXJhdG9yX29wZW4p
CisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9uZXh0KQorCiAgICAgICAgIERFRklORV9P
UChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCiAgICAgICAgIERFRklORV9P
UChvcF91bnNpZ25lZCkKQEAgLTUyNSw3ICs1MjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgcmFyZUNhc2VQcm9maWxlID0gJnJhcmVDYXNlUHJv
ZmlsZXMuYXQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKIAogICAgICAgICBpZiAoSklU
SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRp
bmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25n
KWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1p
dHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChs
b25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAg
ICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRlY29kZVNsb3dQYXRoKG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7CkBAIC01ODksNiArNTkyLDkgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dl
dF9mcm9tX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3RvX3Njb3Bl
KQogCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pdGVyYXRvcl9vcGVuKQorICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfU0xPV19PUCh1bnNpZ25lZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1df
T1AoaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChkZWMpCkBAIC02MjYsOCAr
NjMyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgaWYg
KEpJVEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQXQgIiwgZmlyc3RU
bywgIiBzbG93OiAiLCBpdGVyIC0gbV9zbG93Q2FzZXMuYmVnaW4oKSwgIlxuIik7CiAKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkg
fHwgZmlyc3RUbyAhPSBpdGVyLT50bywgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cg
Y2FzZSBjb2RlZ2VuLiIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmly
c3RUbyA9PSAoaXRlciAtIDEpLT50bywgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNh
c2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIg
PT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5vZmZzZXQoKSAhPSBpdGVyLT50by5vZmZz
ZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUby5vZmZzZXQoKSA9PSAo
aXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNh
c2UgY29kZWdlbi4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpCiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcygm
cmFyZUNhc2VQcm9maWxlLT5tX2NvdW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IDcwNzM1NWM2ZDcxMTgyYWEwNzI5YTI3NDkxMDA0ZjQ1ZTFlYTZhYzEuLjgzYWUxYTdiNjk4ZDY5
MzNkYmI4YTAzNzE5MDQ5ZWMyMjU4MThmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
Mjk3LDYgKzI5Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogCisgICAgICAgIHZvaWQgY2hlY2twb2ludFJlYWNo
ZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7
CisKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShKdW1wKTsKICAgICAgICAgdm9pZCBhZGRTbG93
Q2FzZShjb25zdCBKdW1wTGlzdCYpOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKCk7CkBAIC02
NzYsNiArNjc5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dD
YXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAorICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jf
b3Blbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJh
dG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKwogICAgICAgICB2
b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsK
ICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKQEAg
LTkxMSw2ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWZWN0b3I8Q2FsbFJl
Y29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsKKyAgICAgICAg
SGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50TGFiZWxzOwogICAgICAg
ICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9y
PEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZTFlNTY1ZGM1MjQ5ZjZhY2ZkYWEyNGJmZmI0NDcx
ZmZjYjIwYjg2Ni4uMDkxZWU5Mzg1MzA1ZDM3OTdjMmFkZWI2YTM2MTBiZTAzNTliMTIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYg
VVNFKEpTVkFMVUU2NCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJ5dGVjb2RlUHJv
ZmlsZUZvci5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJKSVRJbmxpbmVzLmgiCkBAIC00Miw4ICs0NCw4IEBACiAjaW5jbHVkZSAiU2V0dXBWYXJh
cmdzRnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRodW5r
R2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCisjaW5j
bHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01
MSw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxs
UmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX2RzdCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihkZXN0aW5h
dGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJl
Z2lzdGVyKCksIHJlZ1QwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC02MSwyMCAr
NjMsMjEgQEAgc3RkOjplbmFibGVfaWZfdDwKICwgdm9pZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJh
bWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogeworICAgIHVuc2lnbmVkIGNo
ZWNrcG9pbnQgPSBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOwogICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBhcmdDb3VudCA9
IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8
aW50PihieXRlY29kZS5tX2FyZ3YpOworICAgIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPSBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludCk7CisgICAg
aW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lz
dGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAgIGlmIChPcDo6b3Bjb2Rl
SUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSksIHJlZ1QwKTsKICAgICAgICAgSnVt
cCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAgc3Rv
cmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVz
c09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQ
cm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50KS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVy
ZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQogCiAgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50
SW5jbHVkaW5nVGhpcyksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
IH0KIAogCkBAIC0yMDcsNyArMjEwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIHsKICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2RlID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRl
Y29kZS5tX2NhbGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5
dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKIAogICAgIC8qIENhbGxlciBh
bHdheXM6CiAgICAgICAgIC0gVXBkYXRlcyBjYWxsRnJhbWVSZWdpc3RlciB0byBjYWxsZWUgY2Fs
bEZyYW1lLgpAQCAtMjM0LDkgKzIzNyw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2Fs
bGVlLgogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAotICAgIGlmIChjb21waWxlQ2FsbEV2YWwo
Ynl0ZWNvZGUpKSB7CisgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAg
IHJldHVybjsKLSAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rp
b25DaGVjazsKICAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFs
LCByZWdUMCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cihudWxs
cHRyKSk7CkBAIC0zODAsNiArMzgyLDE4NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3Ry
dWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAg
IGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBp
dGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZh
c3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0
aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dDxOYXJyb3c+OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Q8V2lkZTE2PjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9vcGVu
X3RyeV9mYXN0PFdpZGUzMj47CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RD
YXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwor
CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExp
bmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAvLyBjYWxsIHJl
c3VsdCAoaXRlcmF0b3IpIGlzIGluIHJlZ1QwCisKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICZ2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAgCisgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QwKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQpOworCisgICAgZmFzdENhc2UubGluayh0
aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNs
b3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9J
bmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKwor
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBuZXh0VlJl
ZyA9IGJ5dGVjb2RlLm1fbmV4dDsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgp
LnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworCisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRf
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRv
KiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlv
bi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX25leHRf
dHJ5X2Zhc3Q8TmFycm93PjsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0PFdpZGUxNj47CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0
b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCByZWdUMCk7CisgICAgSnVtcCBnZW5lcmljQ2Fz
ZSA9IGJyYW5jaElmTm90RW1wdHkocmVnVDApOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNl
ID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisg
ICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKKyAgICBvcjgoVHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSwgQWJzb2x1dGVBZGRyZXNzKCZt
ZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcykpOworICAgIGNvbXBpbGVPcENh
bGw8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwor
ICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1bHQgKHsgZG9uZSwgdmFs
dWUgfSBKU09iamVjdCkgaW4gcmVnVDAKKworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QwOwor
ICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgR1BSUmVnIGRvbmVHUFIgPSBy
ZWdUMTsKKyAgICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0
IGdldCBieSBpZCBiZWxvdy4KKyAgICBtb3ZlKHZhbHVlR1BSLCBpdGVyUmVzdWx0R1BSKTsKKwor
ICAgIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXJSZXN1bHRHUFIp
OworCisgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVl
R1BSKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVj
b2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCisgICAg
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0
R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kb25lLCBkb25lR1BSKTsKKyAgICAgICAgY2hlY2twb2lu
dFJlYWNoZWQoKTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gxID0g
cmVnVDI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOworICAgICAgICBjb25zdCBi
b29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGZhbHNlOworICAgICAgICBK
dW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3Mo
ZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hl
Y2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwor
CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBw
ZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7Cisg
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIp
OworCisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsKKyAgICB9CisKKyAgICBmYXN0
Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21w
aWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2Nh
bGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChq
dW1wKCkpOworCisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
TmV4dD4oKTsKKyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVj
b2RlLm1fZG9uZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKworICAg
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7
CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIp
KTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0
R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0
eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisK
KyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAg
ICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOworICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKKyAgICAgICAg
ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2Jq
ZWN0LmxpbmsodGhpcyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVy
YXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSkpOworICAgIH0KKworICAgIHsgICAKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9IGJ5dGVjb2RlLm1fdmFs
dWU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7
CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlk
SW5kZXgrK107CisKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAg
ICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9CisKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAppbmRleCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUxYmEyNzU2NTUzM2Y0
Li44NTQyYjM3OTE5NmQ4YTZhMjI2ZWJkYTBiMDNkM2MzNGQyNzc3YTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdtYSBvbmNl
CiAKICNpZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2lu
Y2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTgzLDYgKzE4NSwyNSBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjpoYXNBbnlTbG93Q2FzZXMoVmVjdG9yPFNsb3dDYXNl
RW50cnk+JiBzbG93Q2FzZXMsIFZlY3RvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5l
IHZvaWQgSklUOjpjaGVja3BvaW50UmVhY2hlZCgpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVy
aW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMg
c2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKworICAgIGF1
dG8gcmVzdWx0ID0gbV9jaGVja3BvaW50TGFiZWxzLmFkZChtX2J5dGVjb2RlSW5kZXgsIGxhYmVs
KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisK
K2lubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXAganVt
cCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0
aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9u
LCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICBtX2J5dGVjb2RlSW5kZXgg
PSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9ieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0byBpdGVyID0gbV9jaGVja3BvaW50TGFiZWxz
LmZpbmQobV9ieXRlY29kZUluZGV4KTsKKyAgICBBU1NFUlQoaXRlciAhPSBtX2NoZWNrcG9pbnRM
YWJlbHMuZW5kKCkpOworICAgIGp1bXAubGlua1RvKGl0ZXItPnZhbHVlLCB0aGlzKTsKK30KKwog
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YWRkU2xvd0Nhc2UoSnVtcCBqdW1wKQogewogICAgIEFT
U0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxs
ZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5k
ZXggaXMgc2V0LgpAQCAtMzE5LDcgKzM0MCw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgaWYgKCFzaG91bGRFbWl0
UHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KG1ldGFkYXRhLm1fcHJvZmlsZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh2YWx1ZVBy
b2ZpbGVGb3IobWV0YWRhdGEsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpKTsKIH0KIAog
aW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoUmVnaXN0ZXJJ
RCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA3
YWUxNTBjYzY2MTA3NjJiYWNjOGJlNDIyMDczYWFkNjRhYjMxMTkxLi5hNWUyYTI0N2NmMTU0ZGE0
NmViMzNkZmJiZjBlMzM2MGQzNmY1NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzNCw2ICsxMzQsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0
KiBnbG8KICAgICBBU1NFUlQodm0udGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogfQogCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBp
bnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworfQorCiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhlZmI1YjVhYzk4MGFlZTZjNTUyMzQ0MzdjOTAy
ODk1ODkwMjI2NjUuLjlmY2M0MWRlYzQ1ODJjOTY1MjkyMzY1NWRhOGYzMDI2OTVkZjcwMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTUsNiArMTU1
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIo
Vk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhj
ZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZShWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbihWTSopIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21U
aHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBX
VEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA4ZGVhN2YyNzhlNzY2MmU1MDMxNGNlYjliMDgzMzlmODdiZmRhNDk3Li44YmIxOGMyMWY0MmE5
ZjU3Y2RjMDUzZmRkZThjNDUwMWQ0OGUzYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2lu
Y2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkNoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oIgpAQCAtODIsNiArODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIExMSW50IHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKTsgXAogICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsgXAogICAg
IFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCisgICAgZGF0YUxv
Z0xuSWYoTExJTlRfVFJBQ0lORyAmJiBPcHRpb25zOjp0cmFjZUxMSW50U2xvd1BhdGgoKSwgIkNh
bGxpbmcgc2xvdyBwYXRoICIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOyBcCiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBOREVCVUcKQEAgLTY5
Myw3ICs2OTUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX2Rp
cmVjdCkKIH0KIAogCi1zdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvbiogcGMsIE9wR2V0QnlJZDo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU0Nl
bGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQorc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2Vs
bCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogCkBAIC03NDEs
NDQgKzc0MywzOSBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZAogICAgIHsKICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgIGlmIChz
bG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldFVu
c2V0TW9kZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0VW5zZXRNb2RlKHN0
cnVjdHVyZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHNsb3QuaXNWYWx1
ZSgpKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldFByb3RvTG9hZE1v
ZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Quc2xvdEJhc2UoKSk7CisgICAgICAgICAgICBtZXRh
ZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkp
OwogICAgICAgICB9CiAgICAgfQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7
CiB9CiAKLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKK3N0YXRp
YyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBi
YXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBt
ZXRhZGF0YSkKIHsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BHZXRCeUlkPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7Ci0gICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1f
ZHN0KSA9IHJlc3VsdDsKLSAgICAKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CisKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVwogICAgICAgICAmJiBi
YXNlVmFsdWUuaXNDZWxsKCkKICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCiAgICAgICAg
ICYmICFzbG90LmlzVW5zZXQoKSkgewogICAgICAgICB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBvbGRTdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEubW9kZSkgeworICAgICAgICAgICAgc3dpdGNoIChtZXRhZGF0YS5tb2RlKSB7CiAgICAg
ICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpEZWZhdWx0OgotICAgICAgICAgICAgICAgIG9sZFN0
cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJl
SUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5kZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
R2V0QnlJZE1vZGU6OlVuc2V0OgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAg
ICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6UHJvdG9M
b2FkOgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG9sZFN0
cnVjdHVyZUlEID0gMDsKQEAgLTc5OSwzNSArNzk2LDEwOSBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkgJiYgc2xv
dC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQg
YnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKKyAgICAgICAgICAg
IG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwogCiAgICAgICAgICAg
ICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUgY2FjaGUgZnJvbSBldmVyIGhhcHBlbmluZy4KLSAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5n
ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsK
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgp
KSB7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUu
c3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9
IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5j
YWNoZWRPZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFko
bWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSk7CiAKLSAgICAg
ICAgICAgIGlmICghKC0tbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENh
Y2hpbmcpKQorICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2Fj
aGluZykpCiAgICAgICAgICAgICAgICAgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoZ2xvYmFs
T2JqZWN0LCB2bSwgY29kZUJsb2NrLCBwYywgbWV0YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVu
dCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cg
JiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
c2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldEFycmF5
TGVuZ3RoTW9kZSgpOworICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5
UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZt
KSk7CiAgICAgICAgIH0KICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsK
ICAgICB9CiAKLSAgICBMTElOVF9QUk9GSUxFX1ZBTFVFKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeUlk
PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
KyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRl
Y29kZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3Jt
TExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVu
dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJh
dG9yX29wZW5fZ2V0X25leHQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJh
dG9yX29wZW5fZ2V0X25leHQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworLy8gICAgZGF0YUxv
Z0xuKCJDYWxsaW5nIHNsb3cgb3Blbl9nZXRfbmV4dCIpOworCisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICBSZWdpc3RlciYgbmV4dFJlZ2lz
dGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCk7CisKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2Jq
ZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIG5leHRSZWdpc3RlciA9
IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fbmV4dFByb2ZpbGUu
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4
dF9nZXRfZG9uZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4
dF9nZXRfZG9uZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisvLyAgICBkYXRhTG9nTG4oIkNh
bGxpbmcgc2xvdyBuZXh0X2dldF9kb25lIik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRv
ciByZXR1cm4gdmFsdWUgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVj
b2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIEpTVmFsdWUgaXRlcmF0
b3JSZXR1cm4gPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisgICAg
UmVnaXN0ZXImIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5t
X2RvbmUpOworCisgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09iamVjdCgpKQorICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOworCisgICAgSlNWYWx1ZSByZXN1bHQg
PSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0
b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRh
ZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZG9uZVJlZ2lzdGVyID0g
cmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0
X2dldF92YWx1ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4
dF9nZXRfdmFsdWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworLy8gICAgZGF0YUxvZ0xuKCJD
YWxsaW5nIHNsb3cgbmV4dF9nZXRfdmFsdWUiKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spOworICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0ZXJh
dG9yIHJldHVybiB2YWx1ZSB0bXAgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlz
IGJ5dGVjb2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIFJlZ2lzdGVy
JiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUp
OworICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsK
KworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwg
bWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgdmFsdWVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE1NjMsNyArMTYz
NCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKENhbGxGcmFtZSogY2Fs
bGVlRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IDAp
CiB7CiAgICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUu
CkBAIC0xNTcxLDE2ICsxNjQyLDE2IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJp
Y0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgLy8g
LSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KICAgICAvLyAtIFJl
dHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcg
Y2FsbCBmcmFtZS4KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5k
KGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9jYWxsZWUpOworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBjYWxsZWVGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJ
bmRleCkpOwogICAgIAotICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBi
eXRlY29kZS5tX2FyZ3Y7CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAt
IHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgp
OwogICAgIAotICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhi
eXRlY29kZS5tX2FyZ2MpOworICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2lu
dEluZGV4KSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBjYWxsZWVGcmFtZS0+
c2V0Q2FsbGVyRnJhbWUoY2FsbEZyYW1lKTsKICAgICAKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVG
cmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvKTsKKyAg
ICByZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmY2Fs
bExpbmtJbmZvRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKIH0KIAogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwpCkBAIC0xNjA0LDYgKzE2NzUsMjggQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCkKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxP
cENvbnN0cnVjdD4oKSwgQ29kZUZvckNvbnN0cnVjdCkpOwogfQogCitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dMbigi
Q2FsbGluZyBzbG93IG9wZW5fY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVyYXRv
ck9wZW4+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCkpOworfQor
CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2Fs
bCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisK
Ky8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfY2FsbCIpOworCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1l
LCBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yTmV4dDo6
Y29tcHV0ZU5leHQpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVf
ZnJhbWVfZm9yX3ZhcmFyZ3MpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE5OTAsNiArMjA4
Myw0NCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludChWTSYgdm0sIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdAogICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJh
dG9yT3BlbkNoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck9wZW4mIGJ5dGVjb2RlKQorewor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGl0
ZXJhdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFs
dWUoKTsKKyAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBKU1Zh
bHVlIG5leHQgPSBpdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGNhbGxG
cmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpID0gbmV4dDsKK30KKworc3RhdGljIHZv
aWQgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJhdG9yTmV4dCYg
Ynl0ZWNvZGUsIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlJiBzaWRlU3RhdGUpCit7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCA9IHNpZGVTdGF0ZS5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKKworICAg
IGF1dG8mIHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92
YWx1ZSk7CisgICAgYXV0byBpdGVyYXRvclJlc3VsdE9iamVjdCA9IHNpZGVTdGF0ZS50bXBzW09w
SXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0XTsKKyAgICBhdXRvIG5leHQgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCk7ICAgIAorCisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKG5leHQsICJXZSBzaG91bGQgbm90IE9TUiBleGl0IHRvIGEgY2hl
Y2twb2ludCBmb3IgZmFzdCBjYXNlcy4iKTsKKworICAgIGF1dG8mIGRvbmVSZWdpc3RlciA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworICAgIGlmIChjaGVja3BvaW50
SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAgZG9uZVJlZ2lzdGVy
ID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+ZG9uZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChkb25lUmVnaXN0ZXIuanNWYWx1
ZSgpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0ganNV
bmRlZmluZWQoKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBpdGVyYXRvclJl
c3VsdE9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSk7Cit9
CisKIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghY29kZUJsb2NrLT52bSgpLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7
CkBAIC0yMDY2LDYgKzIxOTcsMTUgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xv
d19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAgICAg
aGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+
YXM8T3BUYWlsQ2FsbFZhcmFyZ3M+KCksICpzaWRlU3RhdGUuZ2V0KCkpOwogICAgICAgICBicmVh
azsKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBoYW5kbGVJdGVyYXRv
ck9wZW5DaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRl
cmF0b3JPcGVuPigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0
b3JfbmV4dDogeworICAgICAgICBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KHZtLCBjYWxs
RnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCAqc2lkZVN0YXRl
LmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTAzLDYg
KzIyNDMsMTIgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBjZWxsKQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
KGNlbGwpOwogfQogCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNW
YWx1ZSB2YWx1ZSk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBkYXRhTG9nTG4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7Cit9
CisKIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50X2NyYXNoKCkK
IHsKICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjZGFmYTRmOTNjM2E5ZjA5ODA1
NzFjODE3NjdjMWEuLmY5YTM0ZGFiMzZkOWZhNTI3NTZhMTk4YjJkNzRmNzUyYzUzOGFjMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KQEAgLTEwMzIsNyArMTAzMiw3IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJl
bChvcGNvZGVOYW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYs
IGRlZmluZVdpZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAotbWFjcm8gY2FsbFRhcmdl
dEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxl
ZSwgY2FsbFB0clRhZykKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlz
cGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgog
ICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVsc2UKQEAgLTEwNDUsMTEg
KzEwNDUsMTEgQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFAKICAgICAgICAgIyB0aGF0IGNhbiBj
bG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKICAgICAgICAg
IyBjcmFzaGVzLgogICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICAg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAogICAgIGRlZmluZU9TUkV4
aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJB
ZnRlckNhbGwoKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3JvIHBy
ZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJU
YWcpCkBAIC0xMTE3LDcgKzExMTcsMTEgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBqbXAgY2FsbGVlLCBjYWxs
UHRyVGFnCiBlbmQKIAotbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK21hY3JvIHNsb3dQ
YXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNo
LCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUs
IHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRo
LCBwcmVwYXJlQ2FsbCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbENhbGxTbG93UGF0aCgK
ICAgICAgICAgc2xvd1BhdGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIwIGFuZCByMQpAQCAtMTEy
Niw3ICsxMTMwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXIKICAgICAgICAgICAgIG1vdmUg
Y2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0
MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgY2FsbFRh
cmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1Bh
dGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0yMDE2LDcgKzIwMjAsNyBAQCBtYWNy
byBkb0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gs
IGZyYW1lU2xvd1BhdGgsIHNsbwogICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVyRnJhbWVBbmRQ
Q1NpemUsIHNwCiAgICAgICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNh
bGwpCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVuZAogCiAKQEAgLTIwNzks
NyArMjA4Myw3IEBAIGVuZCkKICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCBy
ZXR1cm5lZC4KIAogX2xsaW50X29wX2NhbGxfZXZhbDoKLSAgICBzbG93UGF0aEZvckNhbGwoCisg
ICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAog
ICAgICAgICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDg4LDcgKzIwOTIsNyBA
QCBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAK
IF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBz
bG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCiAgICAg
ICAgIHdpZGUxNiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwOTcsNyArMjEwMSw3IEBAIF9s
bGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwp
CiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAg
ICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCiAg
ICAgICAgIHdpZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIxMDcsNyArMjExMSw3IEBA
IF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogCiAKIGNvbW1vbk9wKGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50LCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQotICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1hY3JvICgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwo
c2l6ZSwgT3BDYWxsRXZhbCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8gKCkKICAgICAgICAgZGlz
cGF0Y2hPcChzaXplLCBvcF9jYWxsX2V2YWwpCiAgICAgZW5kKQogZW5kKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRl
eCBhZTJlMzc3M2ZmZGNjNDA2NzRjN2FhYzBjMWQ0ZmU2Y2QwZmI3ODU5Li44NjEzNmU4NTdjOWY3
ODIyYjI0NDZjNjI2YmZkYzdhM2RmYmIyZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNjgsMjYgKzY4LDI2
IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEs
IGRpc3BhdGNoLCBmbikKICAgICBmbihtYWNybyAodmFsdWUpCiAgICAgICAgIG1vdmUgdmFsdWUs
IHQzCiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdDEsIHQzKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3By
b2ZpbGUsIHQxLCB0MykKICAgICAgICAgZ2V0KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQz
LCBbY2ZyLCB0MSwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNy
byB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdmFsdWUpCi0gICAgc3RvcmVx
IHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0
YWRhdGFdCittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0
YWRhdGEsIHZhbHVlKQorICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRhZGF0YV0KIGVuZAogCiAjIEFmdGVyIGNhbGxp
bmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3Qg
dXNlZC4KLW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAgICAgbG9hZFBDKCkKICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1
Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBCCi0gICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgbV9k
c3QsIHQxKQorICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
dDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MiwgcjAp
CisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIw
KQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcAogICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAg
ICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWREaXJlY3QsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGly
ZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJl
Y3RTbG93OgpAQCAtMTM0OCw1MyArMTM0OCw1OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAog
ICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQs
IE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisjIFRoZSBiYXNlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MworbWFjcm8gcGVyZm9ybUdldEJ5
SURIZWxwZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1l
LCBzbG93TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDIsIHQx
KQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJd
LCB0MQotICAgIGdldChtX2Jhc2UsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
KHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKIC5vcEdldEJ5SWRE
ZWZhdWx0OgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkRlZmF1bHQsIC5v
cEdldEJ5SWRQcm90b0xvYWQKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0
MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93
Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAor
ICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0s
IHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRC
eUlkUHJvdG9Mb2FkOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3Rv
TG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3RoCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0
YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKLSAgICBiaW5lcSB0MywgdDEsIC5v
cEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFk
YXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKLSAgICBsb2FkcCBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJd
LCB0MworICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5h
bWUlLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwg
c2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRh
ZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2Rl
LmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEs
IHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVy
bih0MCkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIg
R2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBtb3ZlIHQzLCB0
MAotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElz
QXJyYXksIC5vcEdldEJ5SWRTbG93Ci0gICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5v
cEdldEJ5SWRTbG93CisgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0Miwg
dDUpCisgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhp
bmdTaGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1f
YnV0dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCi0gICAgYmls
dCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBv
cnEgbnVtYmVyVGFnLCB0MAotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAg
ICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVN
ZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwg
Lm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgVmFsdWVVbmRl
ZmluZWQpCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNs
b3dMYWJlbAorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IHQyLCBWYWx1ZVVuZGVmaW5lZCkKICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKK2VuZAor
CitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MCkK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRT
bG93KQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEs
IG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisKIC5v
cEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9p
ZCkKICAgICBkaXNwYXRjaCgpCkBAIC0xNDAyLDcgKzE0MDgsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Q
b2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWQsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQyLCByMCkKICAgICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE0OTcsNyArMTUw
Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwo
cmVzdWx0LCBzY3JhdGNoKQogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0
b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5VmFsLCB0NSwgcmVzdWx0KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9w
cm9maWxlLCB0NSwgcmVzdWx0KQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1
NTgsNyArMTU2NCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRC
eVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdldEJ5VmFsRG9u
ZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUs
IHQyKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAg
LTE1NzEsNyArMTU3Nyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9p
bnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNp
emUpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0
NSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQog
ICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTk0OCw2ICsxOTU0LDMwIEBAIG1hY3JvIGFycmF5
UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBnZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8g
Y2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwg
bWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpCisgICAgbWV0YWRhdGEodDUsIHQwKQorICAgIGdldENhbGxlZSh0MCkKKwor
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxs
ZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDAsIHQzKQorICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKwor
ICAgIGdldEFyZ3VtZW50U3RhcnQodDMpCisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ3AgdDMK
KyAgICBhZGRwIGNmciwgdDMKKyAgICBzdG9yZXEgdDIsIENhbGxlZVt0M10KKyAgICBnZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyh0MikKKyAgICBzdG9yZVBDKCkKKyAgICBzdG9yZWkgdDIs
IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBtb3Zl
IHQzLCBzcAorICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJU
YWcpCisgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgSlNFbnRyeVB0clRhZykKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKG9w
Y29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVh
bFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorZW5kCisKIG1hY3Jv
IGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJl
Q2FsbCwgcHJvbG9ndWUpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgICAgICBtZXRhZGF0YSh0NSwgdDApCkBAIC0xOTU2LDI0ICsxOTg2LDE5IEBAIG1hY3JvIGNv
bW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2Fs
bCwgcHJvbG9ndWUpCiAgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGRO
YW1lLCBkc3QpCiAgICAgICAgIGVuZCwgbWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVl
LCB0MCkKLSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQotICAgICAgICBicW5lcSB0Mywg
dDIsIC5vcENhbGxTbG93Ci0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3Ys
IHQzKQotICAgICAgICBsc2hpZnRpIDMsIHQzCi0gICAgICAgIG5lZ3AgdDMKLSAgICAgICAgYWRk
cCBjZnIsIHQzCi0gICAgICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQotICAgICAgICBnZXR1KHNp
emUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVQQygpCi0gICAgICAg
IHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3Qz
XQotICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0Miwg
dDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRh
ZykKLQotICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQor
ICAgICAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0
MCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFydChkc3QpCisg
ICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCBkc3QpCisgICAgICAg
IGVuZAorCisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50Q291bnQoZHN0KQorICAgICAgICAgICAg
Z2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgZHN0KQorICAgICAgICBlbmQKKworICAg
ICAgICBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJv
ZmlsZSwgbV9kc3QsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENh
bGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQK
IApAQCAtMjI3Niw3ICsyMzAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9z
Y29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNy
byBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6
bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MSwgdDAsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MikK
KyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikK
ICAgICAgICAgcmV0dXJuKHQyKQogICAgIGVuZAogCkBAIC0yMjg0LDE0ICsyMzA5LDE0IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRh
ZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAgICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAg
dGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNj
b3BlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9m
aWxlLCB0NSwgdDApCiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdl
dENsb3N1cmVWYXIoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1f
b3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3Zhcmlh
Ymxlc1t0MCwgdDEsIDhdLCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUs
IHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCkBAIC0yNTUxLDcgKzI1NzYs
NiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCBPcFByb2Zp
bGVDb250cm9sRmxvdywgbWFjcm8gKHNpemUsCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi0KIGxs
aW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
KyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKQEAg
LTI1NjcsNiArMjU5MSwxNDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3Ro
LCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIGVuZCkKIAogCits
bGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YShh
MiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRl
cmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUx
NigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYp
CisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChf
aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFy
cm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQp
CisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBz
aW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0
aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yT3BlbkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisK
Ky5pdGVyYXRvck9wZW5HZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgp
CisgICAgICAgIGptcCAuZ2V0QnlJZFN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxs
ZWUoZHN0KQorICAgICAgICBnZXQobV9zeW1ib2xJdGVyYXRvciwgZHN0KQorICAgIGVuZAorCisg
ICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1
KHNpemUsIE9wSXRlcmF0b3JPcGVuLCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAg
ICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUg
MSwgZHN0CisgICAgZW5kCisKKworICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xs
aW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJh
dG9yUHJvZmlsZSwgbV9pdGVyYXRvciwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3Rv
R2V0QnlJZENoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVk
aW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldEJ5SWRT
dGFydDoKKyAgICBtYWNybyBzdG9yZU5leHRBbmREaXNwYXRjaCh2YWx1ZSkKKyAgICAgICAgbW92
ZSB2YWx1ZSwgdDIKKyAgICAgICAgZ2V0KG1fbmV4dCwgdDEpCisgICAgICAgIHN0b3JlcSB0Miwg
W2NmciwgdDEsIDhdCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgIGxvYWRWYXJp
YWJsZShnZXQsIG1faXRlcmF0b3IsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0
ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9w
SXRlcmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3Bl
bkdlbmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNo
KQorCisuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93OgorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCisgICAgZGlzcGF0Y2goKQor
CitlbmQpCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRv
ck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorCisg
ICAgbG9hZFZhcmlhYmxlKGdldCwgbV9uZXh0LCB0MCkKKyAgICBidHFueiB0MCwgdDAsIC5pdGVy
YXRvck5leHRHZW5lcmljCisgICAgbWV0YWRhdGEoYTIsIHQ1KQorICAgIG1hY3JvIGZhc3ROYXJy
b3coKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93
KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMTYoKQorICAgICAgICBjYWxsU2xvd1BhdGgo
X2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RX
aWRlMzIoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lk
ZTMyKQorICAgIGVuZAorICAgIHNpemUoZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwgZmFzdFdpZGUz
MiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9wKCkgZW5kKQorCisgICAgIyBGSVhNRTogV2Ugc2hvdWxk
IGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNzZW1ibHkgc2luY2UgaXQncyB0aGUgImZhc3QiIGNhc2Uu
CisgICAgYmJlcSByMSwgY29uc3RleHByIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMsIC5pdGVyYXRv
ck5leHRHZW5lcmljCisgICAgZGlzcGF0Y2goKQorCisuaXRlcmF0b3JOZXh0R2VuZXJpYzoKKyAg
ICBtYWNybyBnb3RvR2V0RG9uZUNoZWNrcG9pbnQoKQorICAgICAgICBqbXAgLmdldERvbmVTdGFy
dAorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgZ2V0KG1fbmV4
dCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3Rh
cnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JOZXh0LCBtX3N0YWNrT2Zmc2V0
LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3Vu
dChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKyAgICAjIFVzZSBtX3ZhbHVl
IHNsb3QgYXMgYSB0bXAgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIHdyaXRlIHRvIGl0IGxhdGVyLgor
ICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3JfbmV4dCwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRv
cl9uZXh0X2NhbGwsIE9wSXRlcmF0b3JOZXh0LCBtX25leHRSZXN1bHRQcm9maWxlLCBtX3ZhbHVl
LCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9HZXREb25lQ2hlY2twb2ludCwgbWV0
YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3Vt
ZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0RG9uZVN0YXJ0OgorICAgIG1hY3JvIHN0b3Jl
RG9uZUFuZEptcFRvR2V0VmFsdWUoZG9uZVZhbHVlKQorICAgICAgICAjIHVzZSB0MCBiZWNhdXNl
IHBlcmZvcm1HZXRCeUlESGVscGVyIHVzdWFsbHkgcHV0cyB0aGUgZG9uZVZhbHVlIHRoZXJlIGFu
ZCBvZmZsaW5lYXNtIHdpbGwgZWxpZGUgdGhlIHNlbGYgbW92ZS4KKyAgICAgICAgbW92ZSBkb25l
VmFsdWUsIHQwCisgICAgICAgIGdldChtX2RvbmUsIHQxKQorICAgICAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQxLCA4XQorICAgICAgICBqbXAgLmdldFZhbHVlU3RhcnQKKyAgICBlbmQKKworCisgICAg
bG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNr
LCAuZ2V0RG9uZVNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwg
bV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1l
dGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKQorCisuZ2V0RG9uZVNsb3c6CisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAg
ICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZSkKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2RvbmUsIHQwKQorCisgICAgIyBzdG9yZURvbmVB
bmRKbXBUb0dldFZhbHVlIHB1dHMgdGhlIGRvbmVWYWx1ZSBpbnRvIHQwCisuZ2V0VmFsdWVTdGFy
dDoKKyAgICAjIEJyYW5jaCB0byBzbG93IGlmIG5vdCBtaXNjIHByaW1pdGl2ZS4KKyAgICBidHFu
eiB0MCwgfjB4ZiwgLmdldFZhbHVlU2xvdworICAgIGJ0aXogdDAsIDB4MSwgLm5vdERvbmUKKyAg
ICBkaXNwYXRjaCgpCisKKy5ub3REb25lOgorICAgIG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRj
aCh2KQorICAgICAgICBtb3ZlIHYsIHQyCisgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICAg
ICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGln
bm1lbnQodDAsIDB4YmFkZGIwMWUpCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAg
ICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBt
YXkgaGF2ZSBjbG9iYmVyZWQgdDMuCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMp
CisgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMg
YSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUuCisg
ICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRh
dGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVW
YWx1ZUFuZERpc3BhdGNoKQorCisuZ2V0VmFsdWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKK2Vu
ZCkKKworCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldElu
dGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9h
ZFZhcmlhYmxlKGdldCwgbV9iYXNlLCB0MSkKICAgICBnZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxG
aWVsZCwgbV9pbmRleCwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmIKaW5kZXggOGQ3NjcxMTZjMDU0ZTVlYTY2NGVmNDA2MmM1NmYyNjA1ZTBkOGI0
NS4uNTg5YWUwZTBmM2VkMzRiNjYxZTg1NjJiY2EyOTgwMmVjMTBlNWI2MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgpAQCAtNjI5LDcgKzYyOSw3
IEBAIGVuZAogCiBjbGFzcyBOb2RlCiAgICAgZGVmIHZhbGlkYXRlCi0gICAgICAgIHJhaXNlICJV
bnJlc29sdmVkICN7ZHVtcH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgcmFpc2Ug
IlVucmVzb2x2ZWQgJyN7ZHVtcH0nIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCiAgICAgZW5kCiAg
ICAgCiAgICAgZGVmIHZhbGlkYXRlQ2hpbGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGI4ZGU5NjU1ODJmN2Q5MTI3MTMz
N2Q1NDMxOTAzZTgzMThjMjZmNDcuLjU3YjM3N2RlYWVhMmFjMzdlZDdmNGM0YWU3NDlmNGJhMzI5
OTMxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNTMs
OCArMTU0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBSRVRVUk5fUFJPRklMRUQodmFs
dWVfXykgXAogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyh2YWx1ZV9fLCBQUk9GSUxFX1ZBTFVF
KHJldHVyblZhbHVlX18pKQogCi0jZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAot
ICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisjZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFs
dWVfXykgXAorICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQorCisjZGVm
aW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKKyAgICAgICAg
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2
b2lkIHRocm93QXJpdHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKQEAgLTk2NSw2ICs5NjksMTI3IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCkKICAgICBSRVRVUk4oanNCb29sZWFuKGFzT2Jq
ZWN0KGJhc2VWYWx1ZSktPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKSkpOwogfQogCit0ZW1wbGF0ZTxPcGNvZGVTaXpl
IHdpZHRoPgorU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9m
YXN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1l
dGFkYXRhUHRyKQoreworICAgIC8vIERvbid0IHNldCBQQzsgd2UgY2FuJ3QgdGhyb3cgYW5kIGl0
J3MgcmVsYXRpdmVseSBzbG93LgorICAgIEJFR0lOX05PX1NFVF9QQygpOworCisgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck9wZW4sIHdpZHRoPigpOworICAg
IGF1dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck9wZW46Ok1ldGFk
YXRhKj4obWV0YWRhdGFQdHIpOworICAgIEpTVmFsdWUgaXRlcmFibGUgPSBHRVRfQyhieXRlY29k
ZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCk7CisgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYWJsZSwg
bV9pdGVyYWJsZVByb2ZpbGUpOworICAgIEpTVmFsdWUgc3ltYm9sSXRlcmF0b3IgPSBHRVRfQyhi
eXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgYXV0byYgaXRlcmF0b3Ig
PSBHRVQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisKKyAgICBhdXRvIHByZXBhcmVGb3JGYXN0QXJy
YXlJdGVyYXRpb24gPSBbJl0geworICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAgICAgLy8gVGhpcyBpcyBjb3Jy
ZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVja2VkIHRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlk
LgorICAgICAgICBKU0Z1bmN0aW9uKiBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFzeW1i
b2xJdGVyYXRvckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7IAorCisgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JGdW5jdGlvbigpICE9IHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBXZSBzaG91bGQg
YmUgZ29vZCB0byBnby4KKyAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVu
TW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlv
bk1vZGU6OkZhc3RBcnJheTsKKyAgICAgICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkgPSBKU1ZhbHVl
KCk7CisgICAgICAgIGF1dG8qIGl0ZXJhdGVkT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oaXRl
cmFibGUpOworICAgICAgICB7CisgICAgICAgICAgICBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRv
cjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaXRl
cmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CisgICAgICAgIH0KKyAgICAgICAg
UFJPRklMRV9WQUxVRV9JTihpdGVyYXRvci5qc1ZhbHVlKCksIG1faXRlcmF0b3JQcm9maWxlKTsK
KyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICB9OworCisgICAg
aWYgKGl0ZXJhYmxlLmluaGVyaXRzPEpTQXJyYXk+KHZtKSkgeworICAgICAgICBpZiAocHJlcGFy
ZUZvckZhc3RBcnJheUl0ZXJhdGlvbigpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkKKyAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkpOworICAgIH0KKworICAgIC8vIFJldHVybiB0byB0
aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0YS5tX2l0ZXJh
dGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vl
bk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7Cit9
CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9u
YXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCog
bWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8TmFycm93
PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBT
TE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0
dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0
YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK3RlbXBsYXRlPE9w
Y29kZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywg
dm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JOZXh0LCB3aWR0aD4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9ICpyZWludGVycHJldF9jYXN0PE9wSXRlcmF0b3JOZXh0OjpNZXRhZGF0YSo+KG1l
dGFkYXRhUHRyKTsKKworICAgIEFTU0VSVCghR0VUKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgp
KTsKKyAgICBKU09iamVjdCogaXRlcmF0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihHRVQoYnl0ZWNv
ZGUubV9pdGVyYXRvcikuanNWYWx1ZSgpKTs7CisgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChi
eXRlY29kZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCkuYXNDZWxsKCk7CisgICAgaWYgKGF1dG8gYXJy
YXlJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9y
KSkgeworICAgICAgICBpZiAoYXV0byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZt
LCBpdGVyYWJsZSkpIHsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9i
c2VydmVTdHJ1Y3R1cmVJRChhcnJheS0+c3RydWN0dXJlSUQoKSk7CisKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRp
b25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgICAg
ICAgICBhdXRvJiBpbmRleFNsb3QgPSBhcnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJy
YXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KTsKKyAgICAgICAgICAgIGludDY0X3QgaW5kZXggPSBp
bmRleFNsb3QuZ2V0KCkuYXNBbnlJbnQoKTsKKyAgICAgICAgICAgIEFTU0VSVCgwIDw9IGluZGV4
ICYmIGluZGV4IDw9IG1heFNhZmVJbnRlZ2VyKCkpOworCisgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlOworICAgICAgICAgICAgYm9vbCBkb25lID0gaW5kZXggPCBhcnJheS0+bGVuZ3RoKCk7Cisg
ICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV9kb25lKSA9IGpzQm9vbGVhbihkb25lKTsKKyAgICAg
ICAgICAgIGlmICghZG9uZSkgeworICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFy
cmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAg
ICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsg
MSkpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXJyYXktPmdldEluZGV4KGdsb2JhbE9iamVj
dCwgaW5kZXgpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICAgICAgICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBtX3ZhbHVl
UHJvZmlsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5vIG5l
ZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZl
LgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVt
YmVyKG1heFNhZmVJbnRlZ2VyKCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR0VU
KGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkp
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
CisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgor
ICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9p
dGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAg
IHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jf
bmV4dF90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwor
U2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUx
NihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRh
ZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMTY+KGNh
bGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1df
UEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4g
aXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRy
KTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgQkVH
SU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4ZGI1ZjU1OGZhNzg1MDRjYWIwOTY0M2M2MS4uN2FiMDhh
MmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRjZDhiMmVlMGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0Niw2ICsyNDYsOCBAQCBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdF9vcl9udWxsKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2luX2J5X3ZhbCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRlcmF0b3JfbmV4dF90cnlfZmFz
dCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpAQCAtMjgzLDYgKzI4NSwxOCBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+Citl
eHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0
KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRh
dGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGEpOworCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRl
cm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENh
bGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rf
bmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEp
OworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRf
dHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCog
bWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJh
dG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGEpOworCiB1c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhS
ZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwCmluZGV4IDM1MzU5MDkwNDkxY2UwYWZkY2Q4YmJiNGY4NzViYjM4MThjMjJkM2Uu
LjY4NzRlYzc5MDM3NThjZjlkZjQ0MzlhNjIzOTA2MWNmMjcwNTg5M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMzMwLDYgKzMzMCwyNCBAQCBj
b25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9y
SW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCit7CisgICAgc3dpdGNoIChpbnRyaW5zaWMp
IHsKKyAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheVZh
bHVlc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAg
ICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmlu
c2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6S2V5czsKKyAgICBjYXNlIEFycmF5
RW50cmllc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgor
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6RW50cmllczsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJkN2Q4YWMyMDU0MmU4YThkN2UxOGM0MmJhZTkuLjcx
YmEzYWFkMzU5Njk1NmFmYzJkMGFiZmM2ZmQxZGUxN2FmMWVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xODcsNiArMTg3LDggQEAgZW51bSBJbnRy
aW5zaWMgOiB1aW50OF90IHsKICAgICBEYXRhVmlld1NldEZsb2F0NjQsCiB9OwogCitPcHRpb25h
bDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMpOwor
CiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyk7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3Iu
aAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThhOTY4N2VjNjA5Li40ZmQwYTEx
NjUyNWNkYzUzMmE1M2QwYjhiNWFjYjUzMzg3YThkYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjgsNiArNjgsMTAgQEAgcHVi
bGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2Fz
dDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7
IH0KIAogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSos
IEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKTsKKyAgICBzdGF0aWMgSlNB
cnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmpl
Y3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAgICBy
ZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBqc051bWJlcihzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsKKyAgICB9CiAgICAgc3RhdGljIEpTQXJyYXlJdGVy
YXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXgg
NDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFlZC4uZDMwMmIxODY1M2UzODQ5
Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBRdWVy
eWluZyB0aGUgdHlwZS4KICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBib29sIGlzRnVu
Y3Rpb24oVk0mKSBjb25zdDsKKyAgICBib29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBi
b29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlwZSYsIENhbGxEYXRhJikgY29uc3Q7CiAgICAgYm9v
bCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJiwg
Q29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRl
NjU3OGFlZWZmNjljMWNmZGJlYmVhYmFkODBhZjcuLjYyZjlkMjRmMTVkMDcyNDVhZDc3NmM0ODc5
ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODI3LDYgKzgyNywxMyBAQCBpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29uc3QKICAgICByZXR1cm4gYXNDZWxsKCktPmlzRnVu
Y3Rpb24odm0pOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSkg
Y29uc3QKK3sKKyAgICBDYWxsVHlwZSB1bnVzZWRUeXBlOworICAgIENhbGxEYXRhIHVudXNlZERh
dGE7CisgICAgcmV0dXJuIGlzQ2FsbGFibGUodm0sIHVudXNlZFR5cGUsIHVudXNlZERhdGEpOwor
fQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNh
bGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NlbGwoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggZThiMjNjZTU5OWQzNjJk
YzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzExYi4uYjI1MDM1NjljODQyMjU2MDExNDFhODBjZjU5ODQ4
ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTYw
LDEzICs2MCwxMyBAQCBpbmxpbmUgVG8ganNDYXN0KEpTVmFsdWUgZnJvbSkKIC8vIFNwZWNpZmlj
IHR5cGUgb3ZlcmxvYWRzLgogI2RlZmluZSBGT1JfRUFDSF9KU19EWU5BTUlDX0NBU1RfSlNfVFlQ
RV9PVkVSTE9BRChtYWNybykgXAogICAgIG1hY3JvKEpTSW1tdXRhYmxlQnV0dGVyZmx5LCBKU1R5
cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlwZSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1dHRlcmZs
eVR5cGUpIFwKLSAgICBtYWNybyhKU0FycmF5SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJh
dG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNTdHJp
bmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmlu
Z0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExh
c3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9i
amVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlv
biwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAogICAg
IG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpT
VHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6
OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBcCisgICAgbWFjcm8oSlNBcnJh
eUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNBcnJheUl0
ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXIsIEpTVHlwZTo6QXJyYXlCdWZm
ZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZm
ZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlUeXBlLCBMYXN0VHlwZWRBcnJheVR5cGUpIFwKICAgICBt
YWNybyhKU1Byb21pc2UsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSwgSlNUeXBlOjpKU1Byb21pc2VU
eXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYzZTNjOGZmNjIwOGY2MjVmNTcwMzY4NzNmMC4uMTE3
M2FhMDg4ZGNiNzZjMDRmZTRiNWZjMGIxYTQ5MzkzMzkxZTc4MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTU5LDEwICs1NTks
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0
eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZywgTm9JbnRy
aW5zaWMpKTsKICAgICAgICAgfSk7Ci0gICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5p
dExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQp
IHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0
Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgYXJyYXlQ
cm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7Ci0gICAgICAgIH0pOworICAg
IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5
UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwogCiAgICAgbV9pdGVyYXRv
clByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAgLTE3NDksNyArMTc0Niw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAg
dGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsK
LSAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9y
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3NGIyMTc2NDcxYTlmMDUxMy4uMGFjZGZhZWQ5ZTlh
ZGZjMjM4YWI3YzIzNDJlMzU0OTMwYWE2OTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTksNyArMjk5LDcgQEAgcHVibGljOgog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0
RnVuY3Rpb247CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+
IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKKyAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90
b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoK
ICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5j
dGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9u
KCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldCh0aGlzKTsgfQot
ICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQorICAgIEpTRnVuY3Rpb24q
IGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNv
bnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CkBAIC02MTksNiArNjE5
LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIG51bWJlclByb3RvVG9TdHJpbmdGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldEluaXRp
YWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90
b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJv
dG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogcmVn
RXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBhcnJheVByb3RvVmFs
dWVzRnVuY3Rpb24oKTsgfQogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1N5bWJvbFJlcGxhY2VG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLmdldCgp
OyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0Owog
ICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA5OTY5NGQwMTI3
YmFlMWNlYTVjZjYzZmE5Y2RkOTc3MDAwY2I3YWE0Li5mYjQwZmM5NTA3NmFjNTBhMGEzOTRmNThj
NTNlYjFjYmRiMDZmYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKQEAgLTExOSw2ICsxMTksOCBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3Nl
bWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNoYWRvd0NoaWNrZW5M
b2dTaXplLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dD
aGlja2VuTWF4VGFpbERlbGV0ZWRGcmFtZXNTaXplLCAxMjgsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIFwKKyAgICB2KEJvb2wsIHVzZUl0ZXJhdGlvbkludHJpbnNpY3MsIHRydWUsIE5vcm1hbCwg
bnVsbHB0cikgXAorICAgIFwKICAgICB2KEJvb2wsIHVzZU9TTG9nLCBmYWxzZSwgTm9ybWFsLCAi
TG9nIGRhdGFMb2coKXMgdG8gb3NfbG9nIGluc3RlYWQgb2Ygc3RkZXJyIikgXAogICAgIC8qIGR1
bXBEaXNhc3NlbWJseSBpbXBsaWVzIGR1bXBERkdEaXNhc3NlbWJseS4gKi8gXAogICAgIHYoQm9v
bCwgZHVtcERpc2Fzc2VtYmx5LCBmYWxzZSwgTm9ybWFsLCAiZHVtcHMgZGlzYXNzZW1ibHkgb2Yg
YWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24gY29tcGlsYXRpb24iKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA3NjRhZDA2NWFjMDExZTMzYzMy
MzhjZDlkYTk1MzljMTU4MzkyM2U1Li45YzJjZTdhZmFlNmUzOGU3YTYwODAyNmY1MTc3MTEwZTNj
ODU1NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
QEAgLTEyNjgsNiArMTI2OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wSW5Db250ZXh0KFByaW50
U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogdm9pZCBTdHJ1Y3R1cmU6
OmR1bXBCcmllZihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpIGNvbnN0
CiB7CiAgICAgb3V0LnByaW50KCIlIiwgc3RyaW5nLCAiOiIsIGNsYXNzSW5mbygpLT5jbGFzc05h
bWUpOworICAgIGlmIChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKQorICAgICAg
ICBvdXQucHJpbnQoIiwiLCBJbmRleGluZ1R5cGVEdW1wKGluZGV4aW5nVHlwZSgpKSk7CiB9CiAK
IHZvaWQgU3RydWN0dXJlOjpkdW1wQ29udGV4dEhlYWRlcihQcmludFN0cmVhbSYgb3V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaCBiL1Nv
dXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKaW5kZXggMzU3YmEyZmEy
Zjc5MjlhNmE5OThhOWE0ZWYxNGQyYmU1NzU0NjM3MS4uNTZhYmM0YjUzZWM5ZmFiNjA3NWJmNmQy
ZWJiYmVkMWYzM2NkZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3Bl
cmF0b3JPdmVybG9hZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVyYXRvck92
ZXJsb2Fkcy5oCkBAIC01OSwzICs1OSw5IEBACiAKICNkZWZpbmUgT1ZFUkxPQURfUkVMQVRJT05B
TF9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFR1JBTFMoZW51bU5hbWUpIE9WRVJM
T0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHN0
ZDo6aXNfaW50ZWdyYWxfdjxUPikKIAorI2RlZmluZSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9S
U19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBlbmFibGVFeHByZXNzaW9uKSBcCisgICAg
T1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgfCwgZW5hYmxl
RXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dIRU4o
ZW51bU5hbWUsICYsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVSTE9BRF9PUEVSQVRPUl9G
T1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBeLCBlbmFibGVFeHByZXNzaW9uKSBcCisKKyNk
ZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRF
UkdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFT
U19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkYzk4OWM1NWI0MzRlZmY2
ZmQzZWY0ZGEzYTUyM2M3ZmQ1NzNhYjIuLmUxYzJkMmQyN2I0YjVmZDQ2NmU4ZjAwMDM2OGU1M2E3
NTNmNWI0ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDQtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlv
biBmb3Iga25vd24gdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMu
anM6CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpz
OgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoaXRlci5yZXR1cm4pOgorICAgICAgICAoaXRl
cmF0b3JJbnRlcmZhY2VFcnJvclRlc3QpOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJv
clRlc3RSZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4p
OgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpz
OgorICAgICAgICAoZmluZCk6CisgICAgICAgIChpLmxldC52Lm9mLmZpbmQpOgorICAgICAgICAq
IHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzOgorICAgICAgICAo
ZmluZCk6CisgICAgICAgIChzZXQgYWRkKToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9y
LW9mLWRvbmUtZ2V0dGVyLmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4u
Z2V0IGRvbmUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0
dXJuKToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qczoK
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCB2YWx1ZSk6CisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5p
dGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0
cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanM6CisgICAgICAgIChp
LmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVy
YXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRj
aCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhl
YWRlci5qczoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUuZ2V0IGRvbmUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJh
dG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNo
KToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanM6
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
LlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAg
ICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVy
LWluLWZvci1vZi1oZWFkZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAg
ICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJs
ZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAg
ICAgICAgKGkuY2F0Y2gpOgorCiAyMDIwLTA0LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFNraXAgYWxsIGxvdyBleGVjdXRhYmxlIG1lbW9yeSB3YXNtIHRl
c3RzIG9uIGFybTY0CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9m
LWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcwppbmRleCA1NWVjYzBiZmNmOTE5Y2FjYWU3ZmQxNWRk
YjQwYjE0ZmRjYTk0ZWRhLi4yMDEyYjkxMjg1MGY1ODExNjdmYmQzMTA1MDU5Yjc2ZDc2NjNiNmQ4
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJh
eS1lbnRyaWVzLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRl
LWFycmF5LWVudHJpZXMuanMKQEAgLTMsMTAgKzMsMTIgQEAgZnVuY3Rpb24gZm9vKCkgewogICAg
IHZhciBhcnJheSA9IFtdOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjUwMDA7IGkrKykKICAg
ICAgICAgYXJyYXkucHVzaChpKTsKLSAgICAKKwogICAgIHZhciByZXN1bHQgPSAwOwotICAgIGZv
ciAodmFyIFtrZXksIHZhbHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpCisgICAgZm9yICh2YXIgW2tl
eSwgdmFsdWVdIG9mIGFycmF5LmVudHJpZXMoKSkgeworICAgICAgICBwcmludChrZXkgKyAiICIg
KyAkdm0uaW5kZXhpbmdNb2RlKGFycmF5KSk7CiAgICAgICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1
ZSArIGFycmF5W2tleV07CisgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvY3VzdG9tLWl0ZXJhdG9ycy5qcwppbmRleCBmZDY0MTNmZTNiNWU5MDNhZmZlMzgwM2ZkMDA0
YzBjYjFmMWM2NGYzLi5kM2QxYmQ3ZTg1OGU4NzRmYmQxMTNkODJmOTIxMWVhNGJkNWVmN2I1IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKQEAgLTIyLDcgKzIyLDcgQEAgZm9yICh2YXIg
dmFsdWUgb2YgaXRlcikgewogICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZh
bHVlOwogfQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBj
YWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAog
CkBAIC01Myw3ICs1Myw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChT
dHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQog
aWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxl
ZC4iOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAg
ICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBsb29raW5nIHVwIG5leHQuIikKLSAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsK
IH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVk
LiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAt
MTM2LDcgKzEzNiw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJp
bmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1cCByZXR1cm4uIikKLSAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIAogCkBA
IC0xNjUsMTAgKzE2NSwxMCBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAo
U3RyaW5nKGUpICE9PSAiRXJyb3I6IG5leHQgaXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJF
cnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAo
cmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAg
IHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAgLTE4Myw3ICsx
ODMsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewog
ICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVy
biBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxl
ZCIpOwogICAgIH0KIH07CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0
Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRp
b24uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAg
ICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjog
cmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2YXIgaXRlciA9IHsK
ICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQg
PSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiB0cnkg
ewpAQCAtMjE4LDggKzIxOCw4IEBAIHRyeSB7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0gY2F0
Y2ggKGUpIHsKLSAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQu
IikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICBp
ZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiB3YXMgY2FsbGVkIikKKyAgICAgICAgdGhy
b3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlz
IG5vdCBjYWxsZWQuIjsKQEAgLTI1NSwxMCArMjU1LDEwIEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50
ZXJmYWNlRXJyb3JUZXN0KG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNh
dGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAg
ICAgfQogICAgIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJu
IGlzIGNhbGxlZC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVk
Iik7CiB9CiAKIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0
ZXJhdG9yUmVzdWx0KSB7CkBAIC0yODIsNyArMjgyLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRl
cmZhY2VFcnJvclRlc3RSZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAg
IH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5h
dGUgaXRlcmF0aW9uLiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJv
d246ICIgKyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5D
YWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAg
LTMxMyw3ICszMTMsNyBAQCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVy
bihub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAg
ICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVy
cm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAo
IXJldHVybkNhbGxlZCkKICAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxl
ZC4iOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9y
LW9mLW9uLW1hcC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1v
Zi1vbi1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4YjdlZTgxNDI0YTJkMmY1MzhjZTdiMjA1OWQ4ZDZl
NDU4ZTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250
YWluaW5nLWZvci1vZi1vbi1tYXAuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gKmZpbmQo
bm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgW2FycmF5XSBvZiBub2RlcykgeworICAgICAgICBp
ZiAoIWFycmF5LmZpbmQoKHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIHlpZWxkIGFycmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOworCitsZXQgbWFw
ID0gbmV3IE1hcCgpOworbm9JbmxpbmUobWFwW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KTsKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpCisgICAgbWFwLnNldChbMSwyLDQsNSw1XSwge30p
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChsZXQgdiBvZiBm
aW5kKG1hcCwgaSAlIDIpKSB7IH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZjMyNzM5MGQ3Mzc1
YTIyMDJhZTU5YTExMjQ2NTY5OGNiNmVhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCkBAIC0wLDAgKzEsMjMg
QEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBwKQoreworICAgIGZvciAobGV0IGFycmF5IG9mIG5v
ZGVzKSB7CisgICAgICAgIGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUo
ZmluZCk7CisKK2xldCBzZXQgPSBuZXcgU2V0KCk7Citub0lubGluZShzZXRbU3ltYm9sLml0ZXJh
dG9yXSgpLm5leHQpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBzZXQuYWRk
KFsxLDIsNCw1LDVdLCB7fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAg
ICBmb3IgKGxldCB2IG9mIGZpbmQoc2V0LCBpICUgMikpIHsKKyAgICAgICAgaWYgKGkgJSAyICE9
PSAxKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJubyByZXN1bHQgc2hvdWxkIGhhdmUg
YmVlbiBwcm9kdWNlZCBoZXJlIik7CisgICAgICAgIGlmICghKHYgaW5zdGFuY2VvZiBBcnJheSkp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJlc3VsdCB3YXMgbm90IGFuIGFycmF5Iik7
CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRv
bmUtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFiNGM0OWM5M2IyOWZjYjBmNzEwYzZjODJkMWZkODgwMDFhMjJlMjUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1n
ZXR0ZXIuanMKQEAgLTAsMCArMSwyMyBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkg
eworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7Cisg
ICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIGdl
dCBkb25lKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5hbFRpZXIoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcmNlT1NSKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKwor
ICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJl
dHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAg
ICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQorICAgIGlm
IChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcyBiL0pTVGVz
dHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcw
OTZlZTAzZTE1MjU3M2FlZGM2NGQwNDM5ZmIyYmYyMmM2NDE1YgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKQEAgLTAsMCAr
MSwyMSBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxldCByZXR1cm5D
YWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIGRvbmU6IDAsCisg
ICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIGRv
bmU6IHRoaXMuZG9uZSsrLAorICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsgaWYgKGlzRmlu
YWxUaWVyKCkpIEZvcmNlT1NSKCk7ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAg
ICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1
cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAg
ICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQorICAgIH0gY2F0Y2ggeworICAgIH0KKyAgICBpZiAo
cmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMmJkMzJhZGQ3Y2MzYmEzNDMyNTRkYTcxMDhlNTE5ZmY3NWIzMjUxCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1u
b24tb2JqZWN0LmpzCkBAIC0wLDAgKzEsMTYgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyAr
K2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0g
eworICAgICAgICBuZXh0KCkgeyByZXR1cm4gMTsgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRv
cl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9
IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUp
IHsgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT0gIlR5cGVFcnJvcjogSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCisgICAgICAgICAgICB0
aHJvdyBlOworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9uZS1n
ZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9u
ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGExNDJjOGE2YzU0ZjQ3
NmVjMDM5YTE0ZTllMmQzZTdiOTZkZjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEs
MjQgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOwor
ICAgIGxldCByZXR1cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0
KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZ2V0IGRvbmUoKSB7CisgICAgICAgICAgICB0
aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3ltYm9sLml0
ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAg
ICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHRyeSB7Cisg
ICAgICAgIGZvciAoYSBvZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAg
ICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20t
bmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1uZXh0
LWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IxOTRmZDdjYTVhYzU5YWQ2OTYxOTQy
Zjg2MjdiNjBhNWFhMzAxOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93
LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2ZvciAobGV0
IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1cm5D
YWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeworICAgICAgICAg
ICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW1N5bWJv
bC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7CisgICAg
ICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAgICBub0lu
bGluZShpdGVyYWJsZS5uZXh0KTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFi
bGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJvcnIoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQorCisg
ICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2Yt
aGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9y
LW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDg3ODgzNThlNGVkMzA2MTJhY2M2ZjJlZjNhMzBk
OGQ1NjY2NzlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12
YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI3IEBACitmb3IgKGxl
dCBpID0gMDsgaSA8PSAxZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0dXJu
Q2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeyBy
ZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZG9uZTogZmFsc2UsCisgICAgICAgIGdldCB2YWx1ZSgp
IHsKKyAgICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisg
ICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0
dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKSB7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICB9CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAgICAgICB0aHJv
dyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396507</attachid>
            <date>2020-04-14 23:42:51 -0700</date>
            <delta_ts>2020-04-15 00:30:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-175454-20200414234250.patch</filename>
            <type>text/plain</type>
            <size>252449</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi42MDk4MGZmMzZhZjQyZGYy
MWU0MWEzY2RkMDcwZjc3MjE2N2RkOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTQgQEAKKzIwMjAtMDQtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24g
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBidWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJh
eUl0ZXJhdG9yTmV4dEhlbHBlcik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZUlEKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2
YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRp
b25Gb3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25XaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmguCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
IChKU0M6OmlzU3VidHlwZVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25D
b250YWlucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgIChK
U0M6OlN1cGVyU2FtcGxlclNjb3BlOjpyZWxlYXNlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
T3Blbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y05leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6Zm9yQWxsVmFsdWVzKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6Om51bWJlck9mVG1wcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6dG1wKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpqc0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6d2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNG
R1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5o
OgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om51bWJl
ck9mVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpvcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnZhcmlhYmxlQXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6Okxh
enlKU1ZhbHVlOjpzcGVjdWxhdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
bGlkYXRlLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Y2xvb3BTdGFjayk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjaGVja2VkUmV0dXJu
KToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q2FsbFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrcG9pbnRSZWFj
aGVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZv
cm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNs
b3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X2R1bXBfdmFsdWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKIDIwMjAtMDQtMTQgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlYnVnZ2VyOiBh
ZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBleHByZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwMzk0YjdiZTVi
NWJiMDE4YjRlZmJjYzk4NWY1Yjc4ZGEyMjY4NmQuLjM0MmU3NWM3OTU1M2E5ZDllMGJhZjBkZjJl
YjRiZGZiYmQ4NjBmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDQtMTQgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdl
IGRvIGl0ZXJhdGlvbiBmb3Iga25vd24gdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmg6
CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54
Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0
Q29yZS54Y2NvbmZpZwppbmRleCA1MmI0NmVjYzllMjg5Y2FkODVhYTE3ZTJkMDk3YWJiZTUzNjVi
MzlmLi41YTlhMGI0NDQxMTA3MjNkNzM5YTMyNTAyODVlZTlhNjgyMzVmYmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNj
b25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3Jp
cHRDb3JlLnhjY29uZmlnCkBAIC00MCw4ICs0MCw4IEBAIFNFQ1RPUkRFUl9GTEFHU19Qcm9kdWN0
aW9uW3Nkaz1tYWNvc3gqXSA9IC1XbCwtb3JkZXJfZmlsZSxKYXZhU2NyaXB0Q29yZS5vcmRlcjsK
IAogR0NDX1BSRUZJWF9IRUFERVIgPSBKYXZhU2NyaXB0Q29yZVByZWZpeC5oOwogR0NDX1NZTUJP
TFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7Ci1PVEhFUl9DRkxBR1MgPSAkKGluaGVyaXRlZCkgLS1z
eXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKLU9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChp
bmhlcml0ZWQpIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87CitPVEhFUl9DRkxBR1Mg
PSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9
dW5pY29kZS87CitPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZm5vLXNscC12
ZWN0b3JpemUgLS1zeXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKIEhFQURFUl9TRUFSQ0hf
UEFUSFMgPSAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlIiAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0
OwogSU5TVEFMTF9QQVRIID0gJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0
YjhlMTgxY2MyOGUuLmRmNDI3ZGY1YTAyNzU5MzNiNDk3NzRkYzdlMTAyNjc1YjcwZDA4MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTAzLDYgKzExMDMsOCBAQAogCQk1M0M0
RjY2QjIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAw
OSAvKiBKU0FQSUdsb2JhbE9iamVjdC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0
MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNDNkZFRUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmln
aW4uaCAqLzsgfTsKIAkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMwODFF
QTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLzsgfTsKKwkJNTNEMzU0OTkyNDBEODhC
RDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVj
b2RlUHJvZmlsZUZvci5oICovOyB9OworCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTNENDQ0REMxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDQ0REIxREFGMDhBQjAw
QjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oICovOyB9OwogCQk1M0UxRjhGODIxNTQ3MTVB
MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTFGOEY3MjE1NDcxNDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUzRTc3N0U0MUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUy
NjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKQEAgLTM4MTQsNiAr
MzgxNiw5IEBACiAJCTUzQzZGRUYwMUU4QUZFMEMwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2lu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21PcGNvZGVPcmln
aW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NBNzMwNzFFQTUzM0Q4MDA3
NjA0OUQgLyogV2FzbUJCUVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2FzbUJCUVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NB
NzMwODFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbUJCUVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVByb2ZpbGVGb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVj
b2RlVXNlRGVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVj
b2RlVXNlRGVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNENDFFQzgyM0Mw
MDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REIxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFs
dWUuaDsgcGF0aCA9IGIzL0IzV2FzbUFkZHJlc3NWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0Q0NDRERDFEQUYwOUEwMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUFkZHJlc3NW
YWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZVByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMjAsOCArODIyNSwxMCBAQAogCQkJCUMy
RkNBRTBFMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwICov
LAogCQkJCUMyRkNBRTBGMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCAqLywKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oICovLAorCQkJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBC
eXRlY29kZVByb2ZpbGVGb3IuaCAqLywKIAkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8sCiAJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlUmV3cml0ZXIuaCAqLywKKwkJCQk1M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQgLyog
Qnl0ZWNvZGVVc2VEZWYuY3BwICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oICovLAogCQkJCUUzNUJBMkMwMjQxQTBFOEMwMEI2NzA4NiAvKiBCeVZh
bEluZm8uY3BwICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8u
aCAqLywKQEAgLTgzMTUsNiArODMyMiw3IEBACiAJCQkJMTRDQzNCQTEyMTM4QTIzODAwMkQ1OEI2
IC8qIEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLywKIAkJCQkxNENDM0JBMjIxMzhBMjM4MDAyRDU4
QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKIAkJCQk1M0Y2QkY2QzFDM0YwNjBBMDBGNDFF
NUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8sCisJCQkJNTNENDFF
QzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovLAogCQkJCUJD
RkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLAogCQkJCUJDRkQ4Qzkx
MEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkwRkI1NDY3ODE0RjVDNDY4
MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLApAQCAtOTEyNyw2ICs5
MTM1LDcgQEAKIAkJCQkwRjJERDgwQjFBQjNEODU4MDBCQkI4RTggLyogQnl0ZWNvZGVLaWxscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTMxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZFQzAxODM1NjZGOTAw
RDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJl
d3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyog
Qnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEg
LyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcgQEAK
IAkJCQkwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQ
ZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0
ZXJhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFFOTg0
QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4
MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUwNzA4
MzNjYmY1YmE1ZWJlZjBlYzguLjE1Mzk3ZThiN2Y0OGE4NGZiMjdmMTFkMmYxMzcxZTBlMmEzMDFj
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCkBAIC02ODYsNiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc3Rv
cmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChU
cnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMy
KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0
b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG9yNjQoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTE2MDMsNyAr
MTYxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3Mu
YmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChSZWdp
c3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNy
YywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzKSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkp
OwogICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCAwKTsK
QEAgLTE2MTgsNyArMTYzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihz
cmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lk
IHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4
KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBU
cnVzdGVkSW1tMzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAgICAg
ICAgIGlmICghaW1tOC5tX3ZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggOGM2OTc5YmI5YjJmZGVi
MDRjYTAyNmU3NjZkMjA4YjczYTA2M2YyZS4uMmExZGRlZGVlMzZkYmUzY2RlNTcyZjQ4NjA1YTQ2
NGM4MGI2ZTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpvcjE2OworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjg7CiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZDMyOwpAQCAtOTYsNiArOTcsMTIgQEAgcHVibGljOgogICAgICAgICBvcjE2KGlt
bSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3I4KFRy
dXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7Cisg
ICAgICAgIG9yOChpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNo
UmVnaXN0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDk5YThjMTkyM2YyNWU0NDExZDZiNGZm
N2U3YTU5YjA1OTIzOGQ4M2UuLjk0YjM3ZmRhMWQxY2U2ZDcwYTc5MWU3YmE2MWVmMjYzZDU5YTUz
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJh
eUl0ZXJhdG9yUHJvdG90eXBlLmpzCkBAIC00NiwyMSArNDYsMTkgQEAgZnVuY3Rpb24gYXJyYXlJ
dGVyYXRvck5leHRIZWxwZXIoYXJyYXksIGtpbmQpCiAgICAgdmFyIHZhbHVlOwogCiAgICAgdmFy
IGluZGV4ID0gQGdldEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBhcnJheUl0ZXJh
dG9yRmllbGRJbmRleCk7Ci0gICAgaWYgKGluZGV4ICE9PSAtMSkgewotICAgICAgICB2YXIgbGVu
Z3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOwotICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGgpIHsK
LSAgICAgICAgICAgIEBwdXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAYXJyYXlJ
dGVyYXRvckZpZWxkSW5kZXgsIGluZGV4ICsgMSk7Ci0gICAgICAgICAgICBkb25lID0gZmFsc2U7
Ci0gICAgICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlvbktpbmRLZXkpCi0gICAgICAgICAg
ICAgICAgdmFsdWUgPSBpbmRleDsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHZhbHVlID0gYXJyYXlbaW5kZXhdOwotICAgICAgICAgICAgICAgIGlmIChraW5kID09PSBAaXRl
cmF0aW9uS2luZEVudHJpZXMpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gW2luZGV4LCB2
YWx1ZV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgQHB1dEFy
cmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCwg
LTEpOwotICAgIH0KKyAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOworICAgIGlm
IChpbmRleCA8IGxlbmd0aCkgeworICAgICAgICBAcHV0QXJyYXlJdGVyYXRvckludGVybmFsRmll
bGQodGhpcywgQGFycmF5SXRlcmF0b3JGaWVsZEluZGV4LCBpbmRleCArIDEpOworICAgICAgICBk
b25lID0gZmFsc2U7CisgICAgICAgIGlmIChraW5kID09PSBAaXRlcmF0aW9uS2luZEtleSkKKyAg
ICAgICAgICAgIHZhbHVlID0gaW5kZXg7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFs
dWUgPSBhcnJheVtpbmRleF07CisgICAgICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlvbktp
bmRFbnRyaWVzKQorICAgICAgICAgICAgICAgIHZhbHVlID0gW2luZGV4LCB2YWx1ZV07CisgICAg
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgQHB1dEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxk
KHRoaXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCwgQE1BWF9TQUZFX0lOVEVHRVIpOwogCiAg
ICAgcmV0dXJuIHsgdmFsdWUsIGRvbmUgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCBmYjM0OGI5MmRkMjYyM2MwNjUxZWZkMmU0YThj
MGU4ZGUyMzdiMjAxLi45NDI2NTdjNjJmMDc0OWNhMDVjNGVlZTRkNjdiOTVmZTY0NTVkOWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0y
MDcsMTAgKzIwNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dE9mQm91bmRzKCkgeyBtX291
dE9mQm91bmRzID0gdHJ1ZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyBy
ZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJl
SUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgfQorICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlE
KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVj
dHVyZUlEOyB9CisgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJl
KSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCiAgICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKik7CiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRl
eCAxZjU2Njk0Y2U3MDBmZGViZTFmZGNiZDA0NGYyYTg3ZDA4OGY3ZWEyLi41ODVjYzU4YzM3ZTg4
Mzg2OWE0ZThjYWJjNjBmYmQ3ZTRiNTYyYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTM0LDYgKzM0LDcgQEAgdHlwZXMgWwogICAg
IDpHZXRCeVZhbEhpc3RvcnksCiAgICAgOkdldFB1dEluZm8sCiAgICAgOkluZGV4aW5nVHlwZSwK
KyAgICA6SXRlcmF0aW9uTW9kZU1ldGFkYXRhLAogICAgIDpKU0NlbGwsCiAgICAgOkpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LAogICAgIDpKU0dsb2JhbE9iamVjdCwKQEAgLTExNjIsNiArMTE2
Myw2NCBAQCBvcCA6Z2V0X3Jlc3RfbGVuZ3RoLAogICAgICAgICBudW1QYXJhbWV0ZXJzVG9Ta2lw
OiB1bnNpZ25lZCwKICAgICB9CiAKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIGl0ZXJhdG9yID0g
c3ltYm9sSXRlcmF0b3IoaXRlcmFibGUpOyBuZXh0T3JJbmRleCA9IGl0ZXJhdG9yLm5leHQ7Cisj
IEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93ZXZlciwgdGhpcyBoYXMgc3BlY2lhbCBiZWhhdmlv
ciB3aGVyZSBpdGVyYXRvciBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZQorIyBhbmQgbmV4dE9ySW5k
ZXggaXMgdGhlICJpbmRleCIgb2YgdGhlIGl0ZXJhdG9yIChpbnQgZm9yIGFycmF5cy9zdHJpbmdz
IGFuZCBidWNrZXQgZm9yIG1hcC9zZXQpLgorb3AgOml0ZXJhdG9yX29wZW4sCisgICAgYXJnczog
eworICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0OiBWaXJ0
dWFsUmVnaXN0ZXIsCisgICAgICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1
bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhdGlvbk1ldGFk
YXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAorICAg
ICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbW9kZU1ldGFkYXRh
OiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgIH0sCisgICAgdG1wczogeworICAgICAgICBpdGVyYXRvck9iamVjdDogSlNWYWx1ZSwK
KyAgICB9LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIHN5bWJvbENhbGw6IG5pbCwKKyAg
ICAgICAgZ2V0TmV4dDogbmlsLAorICAgIH0KKworIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgdG1w
ID0gbmV4dE9ySW5kZXguY2FsbChpdGVyYXRvcik7IGRvbmUgPSB0bXAuZG9uZTsgdmFsdWUgPSBk
b25lID8gdW5kZWZpbmVkIDogdG1wLnZhbHVlOworb3AgOml0ZXJhdG9yX25leHQsCisgICAgYXJn
czogeworICAgICAgICBkb25lOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAg
IG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6
IHsKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAg
ICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCisgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisg
ICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlTW9kZU1ldGFk
YXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKKyAgICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwK
KyAgICAgICAgaXNEb25lOiBKU1ZhbHVlLAorICAgICAgICB2YWx1ZTogSlNWYWx1ZSwKKyAgICB9
LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBuaWwsCisgICAgICAg
IGdldERvbmU6IG5pbCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9CisKIG9wIDp5aWVs
ZCwKICAgICBhcmdzOiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLApAQCAt
MTI5MCw2ICsxMzQ5LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9jYXRpb24KIG9wIDpv
cF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9pZF9yZXR1cm5fbG9j
YXRpb24KIG9wIDpvcF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9y
X29wZW5fcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRp
b24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZV9ub190bHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBkOGZmNmM3OTg5NmFm
ZDAwZTIwY2M0Mjc3OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhkNDQyMDQwOGNhYzUw
YTM4ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIzMSwxMyBAQCBCaXRt
YXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChjb25zdCBD
b2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChPcENhbGxWYXJhcmdz
OjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJlc3VsdC5zZXQoT3BJ
dGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1
ODVjNzIxMjE3ZDRhZmVkNjZjZGJlMjdlMDdjNzNiODZlNGYxZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaApAQCAt
MCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQgaGFzTWVt
YmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQg
Y2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOwor
ICAgIHJldHVybiAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGU7CisKKyAg
ICAvLyBJbnNlcnQgcGVyIG1ldGFkYXRhIG92ZXJyaWRlcyBoZXJlIHdoZW4gd2UgbmVlZCB0aGVt
LgorICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1l
dGFkYXRhPgorYm9vbCBoYXNBcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRh
dGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQcm9maWxl
Rm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9yKEJ5dGVj
b2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAg
QVNTRVJUKGhhc0FycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7Cisg
ICAgcmV0dXJuICphcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgp
OworfQorCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQgaGFzTWVtYmVy
LgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSogdmFs
dWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hl
Y2twb2ludEluZGV4KQoreworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bj
b2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJ
bmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4g
Jm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVu
OjpnZXROZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGRlZmF1
bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgIH0gZWxz
ZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9y
X25leHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2Fz
ZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UmVz
dWx0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJu
ICZtZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpn
ZXRWYWx1ZTogcmV0dXJuICZtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAgICAgICAgZGVmYXVs
dDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSAK
KyAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX3Byb2ZpbGU7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc1ZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIHJldHVy
biB2YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlJiB2YWx1ZVBy
b2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJ
bmRleCkKK3sKKyAgICBBU1NFUlQoaGFzVmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3Bv
aW50SW5kZXgpKTsKKyAgICByZXR1cm4gKnZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNo
ZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorT3BlcmFu
ZCBkZXN0aW5hdGlvbkZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCwgSklUVHlwZSB0eXBlID0gSklUVHlwZTo6Tm9uZSkKK3sKKyAgICBpZiBjb25z
dGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAg
IHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46
OnN5bWJvbENhbGw6IHJldHVybiBieXRlY29kZS5tX2l0ZXJhdG9yOworICAgICAgICBjYXNlIE9w
SXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gYnl0ZWNvZGUubV9uZXh0OworICAgICAgICBk
ZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlE
ID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgp
IHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHsKKyAgICAgICAg
ICAgIGlmICh0eXBlID09IEpJVFR5cGU6OkRGR0pJVCB8fCB0eXBlID09IEpJVFR5cGU6OkRGR0pJ
VCkKKyAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0Ojpu
ZXh0UmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBieXRlY29kZS5tX3ZhbHVlOyAvLyBXZSBy
ZXVzZSB2YWx1ZSBhcyBhIHRlbXAgYmVjYXVzZSBpdHMgZWl0aGVyIG5vdCB1c2VkIG9yIHdyaXR0
ZW4gYXMgdGhlIHRlbXAgb2JqZWN0IGRpZXMuCisgICAgICAgIH0KKyAgICAgICAgY2FzZSBPcEl0
ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgY2Fz
ZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBieXRlY29kZS5tX3ZhbHVlOworICAg
ICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5t
X2RzdDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2NhdGlvbnMKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRm9yKGNvbnN0IEJ5dGVjb2Rl
JiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJB
TShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlE
ID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9
PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBieXRlY29kZS5t
X3N5bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNv
ZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5k
ZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVj
b2RlLm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fY2FsbGVl
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3Vuc2lnbmVkIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hl
Y2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAg
IGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsK
KyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9s
Q2FsbCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVj
b2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVj
a3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2FyZ2M7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlmZl90IHN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2lu
dEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNv
bnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAg
ICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7
CisgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIGJ5dGVj
b2RlLm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNv
ZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAgICByZXR1
cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhdG9y
Lm9mZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9hcmd2Owor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorTExJbnRDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQg
Y2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOwor
ICAgIHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1NjI2YzEzLi5hNWE1
MDdlZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTI1OSw2ICsyNTks
OSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAgVVNFUyhPcFlpZWxkLCBnZW5lcmF0
b3IsIGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9yT3Blbiwgc3ltYm9sSXRlcmF0b3Is
IGl0ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQsIGl0ZXJhdG9yLCBuZXh0LCBpdGVy
YWJsZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkOgogICAgICAgICBoYW5k
bGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU3ByZWFkPigpKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwgdGhyb3duVmFsdWUpCiAKKyAgICBE
RUZTKE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkKKyAgICBERUZTKE9wSXRlcmF0b3JO
ZXh0LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50ZXI6IHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIyNTkxOTQ3NzY4NTU3ZWE4N2E2NTdm
MjNhNjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2OWU5NjM0MTc1MTIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtNDAs
MTggKzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxsTGlua0luZm86OkNhbGxUeXBlIENh
bGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgaWYgKG9w
Y29kZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKQorICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNhc2Ug
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAgICByZXR1cm4gVGFpbENhbGxW
YXJhcmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2FzZSBvcF9jYWxsX2V2
YWw6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4
dDoKICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFy
YXJncykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ2FsbFZh
cmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkKKworICAgIGNhc2Ugb3Bf
Y29uc3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0OwotICAgIGlmIChvcGNvZGVJRCA9
PSBvcF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6
CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgcmV0dXJuIFRh
aWxDYWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBv
cGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwotICAgIHJldHVybiBU
YWlsQ2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2FsbDsKIH0KIAog
Q2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjEzZDE3MzRhMDJjNThhMzIxNzU5
MjVkMjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEzNzhhZWJlZjkwMjU2ZjExNWVmMTdl
M2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQgogICAg
IGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24t
PmFzPE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgY2Fs
bExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShw
cm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBv
cF9pdGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFz
PE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZv
OworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdlNjE2MGI2NTNlN2E0ZTczMDRiMi4u
YTRhN2M1YWFiZjA1NmIzODMxNDQ4NDE4ZjkxZGE4ODU0ZjdiYTdjNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtOTcsNiAr
OTgsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CiAKKwogI2lmIEVOQUJMRShB
U1NFTUJMRVIpCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNlbmRpZgpAQCAt
NTgzLDYgKzU4NSwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9w
Q2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAKKyAgICAgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9w
SXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFUQShP
cEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQ
cm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBj
YXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEo
T3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsNiArMTI0MCwzMyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDE4CiAgICAgICAgIC8vIFdlIG5lZWQg
dG8gYWRkIG9wdGltaXphdGlvbnMgZm9yIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1
bmNfZGVjbF9pbl9ldmFsIHRvIGRvIGxpbmsgdGltZSBzY29wZSByZXNvbHV0aW9uLgogCisgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdl
dEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVm
YXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8
IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVj
dHVyZUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgaXRl
cmF0b3Igb3BlbiBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAgICAgICAgICAgIExMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5
SWRDYWNoZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIH0pOworCisKKyAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgeworICAgICAgICAgICAgYXV0byBjbGVhcklmTmVlZGVkID0gWyZdIChHZXRCeUlkTW9kZU1l
dGFkYXRhJiBtb2RlTWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRh
Lm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1vZGVNZXRh
ZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0
cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBp
dGVyYXRvciBuZXh0IExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOworICAgICAgICAgICAgICAg
IExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTElu
dEdldEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgICAgICAg
ICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAg
fSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2Rl
ICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEy
MzEsNyArMTI3NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVz
KCkKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3Nl
T1NSKCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICBM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUobWV0YWRhdGEpOworICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9y
RWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSAr
MTM2OSwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAg
ICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAg
ICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAgICAgICAgc3dpdGNoIChvcGNv
ZGUpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVy
dHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+
YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBMTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlk
Q2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVN
ZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBvcGVuIHBy
b3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rp
b24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ug
b3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNj
ZXNzLiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0
byBjbGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3Vy
ZSBvdXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4uCisgICAgICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRh
dGEodGhpcyk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1v
ZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFs
dWVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMTAy
LDExIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNl
IG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCkpOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0
dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1l
dGFkYXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTli
YjA4MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3
NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
a0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1
ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAj
ZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7Cisg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBm
dW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9P
UENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUs
IGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZh
bHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOwor
ICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4
dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25l
UHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmls
ZSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAg
QEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVu
YykKIAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJU0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAg
ICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
CmluZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4YzIuLjI4MmNmOGY0
MjdjMWZiZWFiMjk2YTM1ODNiMDc5OTQxZGExMGVmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtODYsNiArODYsMzUgQEAgR2V0QnlT
dGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9wX2dldF9ieV92YWw6CiAgICAgICAgIHJldHVy
biBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09
IE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0
cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisK
KyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdl
dF9ieV9pZF9wcm90b19sb2FkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5
U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRl
bnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9j
ayk7CisgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9y
TmV4dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRh
ZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
biBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFk
YXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIHN0cnVjdHVy
ZUlEID0gbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+dmFsdWU7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDogewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5m
b3JtYXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgKaW5kZXggMDg1YWU4ZDE5OTc2Yjg4NmYwMDE5Zjg1ZmE2N2IwMmJlMTRjZGE1ZS4u
M2Q3MGNkNTQzZWNmYWU5MDIyNTAyOTYwMWEwZDQwNWVjNjcxYjJkMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTMyLDcgKzMyLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2Rl
SUQgPSA6OkpTQzo6T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1i
ZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1C
RVJfT0ZfQllURUNPREVfV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBP
cGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0PE9wY29k
ZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2Vy
dChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dp
dGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSBvcF93
aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSBvcF93aWRlMzI7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3RocyA9IDo6
SlNDOjpvcGNvZGVMZW5ndGhzOwpAQCAtNDEsNyArNDMsOSBAQCBzdHJ1Y3QgSlNPcGNvZGVUcmFp
dHMgewogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSBX
YXNtT3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVj
b2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfV0FT
TV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJl
ck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9P
Rl9XQVNNX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29k
ZXNXaXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEpOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gd2FzbV93aWRlMTY7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3YXNtX3dpZGUzMjsKICAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gd2FzbU9wY29kZUxlbmd0
aHM7CkBAIC05OCwxMiArMTAyLDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5hcnJvdygp
LT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgT3Bj
b2RlU2l6ZSB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRz
PigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUzMjsKKyAgICAgICAgcmV0
dXJuIGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUxNiA6IE9wY29kZVNpemU6
Ok5hcnJvdzsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29k
ZVRyYWl0cz4KICAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aE1l
dGFkYXRhOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgorICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRo
Q2hlY2twb2ludHM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNP
cGNvZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3VudCgpIGNvbnN0CiAgICAgewpAQCAt
MTM3LDYgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUOjpkZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwogICAgIH0KIAorICAgIHRlbXBsYXRl
PGNsYXNzIFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJh
aXRzPgorICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCgo
aXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIHJldHVybiBUKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2lnbmVkVHlwZSo+KHRoaXMgKyAod2lk
dGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7CisgICAgfQorCiAgICAgdGVtcGxh
dGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgVCogY2Fz
dCgpCiAgICAgewpAQCAtMTYxLDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAg
QVNTRVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IElt
cGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KQEAgLTE2OSwxNCArMTk0LDE2IEBA
IHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTMyPFRyYWl0cz4oKSk7Ci0g
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KHRoaXMg
KyAxKTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJsaWMgQmFzZUluc3Ry
dWN0aW9uPE9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoSW5zdHJ1Y3Rpb24p
ID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIHN0
cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVJRD4g
ewogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0gMSwgIlNvIHBvaW50
ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkNjkxOTMxYzZjNzk0OGU1NTdlNGY1NjkyM2FlMzQ5
MGZlYjllOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFj
ZSBKU0MgeworCitlbnVtIGNsYXNzIEl0ZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKKyAgICBHZW5l
cmljID0gMSA8PCAwLAorICAgIEZhc3RBcnJheSA9IDEgPDwgMSwKK307CisKK2NvbnN0ZXhwciB1
aW50OF90IG51bWJlck9mSXRlcmF0aW9uTW9kZXMgPSAyOworCitPVkVSTE9BRF9CSVRXSVNFX09Q
RVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVSR1JBTFMoSXRlcmF0aW9uTW9kZSk7CisK
K3N0cnVjdCBJdGVyYXRpb25Nb2RlTWV0YWRhdGEgeworICAgIHVpbnQ4X3Qgc2Vlbk1vZGVzIHsg
MCB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHNlZW5Nb2RlcykpID09IHNp
emVvZihJdGVyYXRpb25Nb2RlKSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5k
ZXggMmQxNDNiOWNmNjc0MzA1ZDQwYzkxZWIwYWUzNTEzMzEyNTY5NDQxZi4uYmJlMWY2N2ZmYmVm
ZThlOGJiMTM2N2ViNmM3ZWQ2N2NiYWE4YWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTYwLDE0ICs2MCwzMSBA
QCB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Zmly
ZUludGVybmFsKFZNJiB2bSwgY29uc3QgRgogICAgIH0KIAogICAgIGF1dG8mIGluc3RydWN0aW9u
ID0gbV9vd25lci0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZU9mZnNldC5nZXQoKSk7Ci0g
ICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1l
dGFkYXRhKG1fb3duZXIuZ2V0KCkpKTsKKyAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJ
RCgpKSB7CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlk
Q2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgp
KS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAg
IGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFk
YXRhKG1fb3duZXIuZ2V0KCkpOworICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFk
YXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUo
bWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRh
ZGF0YSYgbWV0YWRhdGEpCit2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFkYXRhJiBt
ZXRhZGF0YSkKIHsKLSAgICAvLyBLZWVwIGhpdENvdW50Rm9yTExJbnRDYWNoaW5nIHZhbHVlLgot
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNo
ZSgpOworICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwogfQog
Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDIyMGZmZjNlM2JmNTQzNDFlOTYxYzgyZGY4
YzRlOGM5MDAwNzM0YmUuLjFkNTk1N2VmZjgxMDkyYTFkYWJkZWU1MDI1Y2FjNWU2ZjM4Njc4MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnN0YWxsKFZNJik7
CiAKLSAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6TWV0
YWRhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRN
b2RlTWV0YWRhdGEmKTsKIAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXko
KSBjb25zdCB7IHJldHVybiBtX2tleTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgKaW5kZXggMTg1MWI2M2M3Y2E2YWVmMmZiMzZiZjJmODdlOTJhMTllMGQ0MGMxOC4u
YWE4ODU5YWRkNjI4NjBmZmRhZGI0ZDIyMjg3YzM0YjA3Y2U1YjMzNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTQ4LDYgKzE0OCw5IEBAIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6OmdldE1TQlNl
dENvbnN0ZXhwcihtCiAgICAgbWFjcm8oT3BUYWlsQ2FsbCkgXAogICAgIG1hY3JvKE9wQ2FsbEV2
YWwpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorICAgIG1hY3JvKE9wSXRlcmF0b3JPcGVu
KSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck5leHQpIFwKKwogCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInR5cGUtbGltaXRzIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZDc2ZDRmYTdiNDZlOThiOWY5NzAwZGMz
ODYzMGY0Li45NDY1OGIwOTZiZjE5M2M4N2NmZDcxYTlmNWJkZTE1ZjYxMzMyYTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTIw
LDYgKzEyMCwxNiBAQCBpbmxpbmUgYm9vbCBpc0FueVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
KQogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9vbCBpc1N1YnR5cGVTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7CisgICAg
cmV0dXJuICEodmFsdWUgJiB+Y2F0ZWdvcnkpICYmIHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBz
cGVjdWxhdGlvbkNvbnRhaW5zKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBj
YXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBjYXRlZ29yeSkgJiYgdmFsdWU7Cit9
CisKIGlubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNDZWxsKSAmJiAhKHZhbHVlICYgflNwZWNDZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBs
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAppbmRl
eCA5NjEwZGNlNWNkYmMzZWMwOWNlMzNiMWQ2YmNjNGIzZmY4YTZjM2M4Li5lOWJmOTUzMWY3YmE1
OTU3MzExMGUzMWE3YTQ0Y2QyMjhiNzU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC00OCw2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CiAgICAgfQogCisgICAgdm9pZCByZWxlYXNl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvU2FtcGxlKTsKKyAgICAgICAgZ19zdXBlclNh
bXBsZXJDb3VudC0tOworICAgICAgICBtX2RvU2FtcGxlID0gZmFsc2U7CisgICAgfQorCiBwcml2
YXRlOgogICAgIGJvb2wgbV9kb1NhbXBsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYzZDM2
MmNhYzE5ZDQ5Mzk4OTQ3NzdiZWRhN2MwYWMyZDYzNjA2M2YuLjhmZWRlNjJiNTMwZWJkMTAxZmVk
YTYxYWJhYjk0OWEzZjNiMzU5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MDE2LDE0ICs0MDE2
LDE1IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1i
ZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JP
Zk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ss
IEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkK
IHsKICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9kZSA/IGZvckxvb3BOb2RlLT5pc0Zv
ckF3YWl0KCkgOiBmYWxzZTsKLSAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgKGlzRm9yQXdhaXQg
JiYgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkpOworICAgIGF1dG8gc2hv
dWxkRW1pdEF3YWl0ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpO
bzsKKyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBh
cnNlTW9kZSgpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBv
cmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFzeW5jSXRl
cmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3Ioc3ViamVjdC5nZXQo
KSwgbm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gaXNGb3JBd2FpdCA/
IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpIDogZW1pdEdldEdlbmVy
aWNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
bmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwg
cHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xh
YmVsKCk7CkBAIC00MTMwLDcgKzQxMzEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAg
ICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5n
ZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdhaXQg
PyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0ZXJh
dG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdl
dCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwogCiAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1
ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUu
Z2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDE0Myw3ICs0
MTQ0LDE0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAgICBwb3BGaW5hbGx5Q29u
dHJvbEZsb3dTY29wZSgpOwogICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpIHsKICAgICAg
ICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxv
dy4KLSAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBp
c0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgICAg
IGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hvdWxkRW1p
dEF3YWl0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkp
OworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25z
dCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNh
bGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9s
VGFibGUpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwg
aXMzMkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpKSkg
eworICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1YmplY3ROb2RlLCBjYWxs
QmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmFibGUgPSBuZXdUZW1wb3Jhcnko
KTsKKyAgICBlbWl0Tm9kZShpdGVyYWJsZS5nZXQoKSwgc3ViamVjdE5vZGUpOworCisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yU3ltYm9sID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIGl0ZXJhYmxlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0T3JJbmRleCA9IG5ld1RlbXBvcmFyeSgpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG5ld1RlbXBvcmFyeSgpOworICAgIENhbGxBcmd1
bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgbW92ZShhcmdzLnRoaXNSZWdpc3Rl
cigpLCBpdGVyYWJsZS5nZXQoKSk7CisgICAgZW1pdEl0ZXJhdG9yT3BlbihpdGVyYXRvci5nZXQo
KSwgbmV4dE9ySW5kZXguZ2V0KCksIGl0ZXJhdG9yU3ltYm9sLmdldCgpLCBhcmdzLCBub2RlKTsK
KworICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4g
dHJ5U3RhcnRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5VmlhVGhy
b3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5TGFiZWwgPSBuZXdM
YWJlbCgpOworICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVm
PExhYmVsPiBlbmRDYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBq
c1VuZGVmaW5lZCgpKTsKKworICAgIC8vIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvcidzIGxp
ZmV0aW1lIG11c3QgYmUgbG9uZ2VyIHRoYW4gSXRlcmF0b3JDbG9zZUNvbnRleHQuCisgICAgRmlu
YWxseUNvbnRleHQgZmluYWxseUNvbnRleHQoKnRoaXMsIGZpbmFsbHlMYWJlbC5nZXQoKSk7Cisg
ICAgcHVzaEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKGZpbmFsbHlDb250ZXh0KTsKKworICAgIHsK
KyAgICAgICAgUmVmPExhYmVsU2NvcGU+IHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKKworICAgICAgICBSZWY8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7Cisg
ICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICBlbWl0TGFiZWwoKnNj
b3BlLT5jb250aW51ZVRhcmdldCgpKTsKKyAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAg
ICAgaWYgKGZvckxvb3BOb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmb3JMb29w
Tm9kZS0+aXNGb3JPZk5vZGUoKSk7CisgICAgICAgICAgICBwcmVwYXJlTGV4aWNhbFNjb3BlRm9y
TmV4dEZvckxvb3BJdGVyYXRpb24oZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7Cisg
ICAgICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkb25lID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmdzKCp0aGlzLCBu
dWxscHRyLCAwKTsKKyAgICAgICAgICAgIG1vdmUobmV4dEFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dChkb25lLmdldCgp
LCB2YWx1ZS5nZXQoKSwgaXRlcmFibGUuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBuZXh0QXJn
cywgbm9kZSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBsb29wRG9u
ZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5n
ZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBwdXNoVHJ5KHRyeVN0YXJ0TGFiZWwu
Z2V0KCksIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6
ZWRGaW5hbGx5KTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMsIHZhbHVlLmdldCgpKTsKKyAgICAg
ICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAvLyBJdGVyYXRvckNsb3Nl
IHNlcXVlbmNlIGZvciBhYnJ1cHQgY29tcGxldGlvbnMuCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIEZpbmFsbHkgYmxvY2sgZm9yIHRoZSBlbnVtZXJhdGlvbi4KKyAgICAgICAgICAgIGVtaXRM
YWJlbChmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBwb3BUcnkodHJ5
RGF0YSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWY8TGFi
ZWw+IGZpbmFsbHlCb2R5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGZpbmFsbHlFeGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworCisg
ICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZmluYWxseUNvbnRleHQuY29t
cGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlvblR5cGVSZWdp
c3RlcigpLCB0cnlEYXRhKTsKKyAgICAgICAgICAgIG1vdmUoZmluYWxseUV4Y2VwdGlvblJlZ2lz
dGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpKTsKKyAg
ICAgICAgICAgIGVtaXRKdW1wKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAg
ICBlbWl0TGFiZWwoZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIG1vdmVFbXB0eVZh
bHVlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgIC8vIEZp
bmFsbHkgZmFsbCB0aHJvdWdoIGNhc2UuCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseUJv
ZHlMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICByZXN0b3JlU2NvcGVSZWdpc3RlcigpOworCisg
ICAgICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlEb25lID0gbmV3TGFiZWwoKTsKKworICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQp
OworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFy
eSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAgICAgICAg
ICAgIFJlZjxMYWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgIGVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgVHJ5
RGF0YSogcmV0dXJuQ2FsbFRyeURhdGEgPSBwdXNoVHJ5KHJldHVybkNhbGxUcnlTdGFydC5nZXQo
KSwgY2F0Y2hMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkQ2F0Y2gpOworCisg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7
CisgICAgICAgICAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0
b3IuZ2V0KCkpOworICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhv
ZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90
KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6
Ok5vKTsKKworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCB2YWx1ZS5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAgICAgIGVt
aXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiJfcyk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5RG9uZS5nZXQoKSk7Cisg
ICAgICAgICAgICBlbWl0RmluYWxseUNvbXBsZXRpb24oZmluYWxseUNvbnRleHQsIGVuZENhdGNo
TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBwb3BUcnkocmV0dXJuQ2FsbFRyeURhdGEsIGZp
bmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgLy8gQ2F0Y2ggYmxvY2sgZm9yIGV4Y2Vw
dGlvbnMgdGhhdCBtYXkgYmUgdGhyb3duIHdoaWxlIGNhbGxpbmcgdGhlIHJldHVybgorICAgICAg
ICAgICAgLy8gaGFuZGxlciBpbiB0aGUgZW51bWVyYXRpb24gZmluYWxseSBibG9jay4gVGhlIG9u
bHkgcmVhc29uIHdlIG5lZWQgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2ggYmxvY2sgaXMgYmVj
YXVzZSBpZiBlbnRlcmVkIHRoZSBhYm92ZSBmaW5hbGx5IGJsb2NrIGR1ZSB0byBhIHRocm93bgor
ICAgICAgICAgICAgLy8gZXhjZXB0aW9uLCB0aGVuIHdlIHdhbnQgdG8gcmUtdGhyb3cgdGhlIG9y
aWdpbmFsIGV4Y2VwdGlvbiBvbiBleGl0aW5nCisgICAgICAgICAgICAvLyB0aGUgZmluYWxseSBi
bG9jay4gT3RoZXJ3aXNlLCB3ZSdsbCBsZXQgYW55IG5ldyBleGNlcHRpb24gcGFzcyB0aHJvdWdo
LgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChjYXRjaExhYmVsLmdl
dCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdp
c3RlciA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5h
bGx5SGFuZGxlcihleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRleHQuY29tcGxl
dGlvblR5cGVSZWdpc3RlcigpLCByZXR1cm5DYWxsVHJ5RGF0YSk7CisgICAgICAgICAgICAgICAg
Ly8gU2luY2UgdGhpcyBpcyBhIHN5bnRoZXNpemVkIGNhdGNoIGJsb2NrIGFuZCB3ZSdyZSBndWFy
YW50ZWVkIHRvIG5ldmVyIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byByZXNvbHZlIGFueSBz
eW1ib2xzIGZyb20gdGhlIHNjb3BlLCB3ZSBjYW4gc2tpcCByZXN0b3JpbmcgdGhlIHNjb3BlCisg
ICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaGVyZS4KKworICAgICAgICAgICAgICAgIFJlZjxM
YWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdElzRW1wdHkobmV3VGVtcG9yYXJ5KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rl
ci5nZXQoKSksIHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1vdmUoZXhjZXB0
aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAg
ICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgICAg
IGVtaXRMYWJlbChlbmRDYXRjaExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgYnJlYWtMYWJlbElzQm91bmQgPSBzY29wZS0+YnJlYWtUYXJnZXRN
YXlCZUJvdW5kKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkKKyAgICAgICAgICAg
IGVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CisgICAgICAgIHBvcEZpbmFsbHlDb250
cm9sRmxvd1Njb3BlKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgeworICAgICAg
ICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93
LgorICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBu
b2RlLCBFbWl0QXdhaXQ6Ok5vKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbWl0TGFiZWwobG9v
cERvbmUuZ2V0KCkpOwpAQCAtNDI2NSw1NiArNDQwNCw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykK
ICAgICBPcElzRW1wdHk6OmVtaXQodGhpcywgZHN0LCBzcmMpOwogICAgIHJldHVybiBkc3Q7CiB9
Ci0gICAgCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1p
dEF3YWl0KQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0
aGlzLCBudWxscHRyKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYXRvcik7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0
KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICAgICAgaWYg
KGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICAgICAgZW1pdEF3YWl0KGRz
dCk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdM
YWJlbCgpOwotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5
KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVtaXRUaHJvd1R5cGVFcnJv
cigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Ci0gICAg
ICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgIH0KLSAgICByZXR1cm4gZHN0
OwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdp
dGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVy
SUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIsIDEpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50
UmVnaXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRp
dm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZHN0OwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICBSZWY8TGFiZWw+IGRv
bmUgPSBuZXdMYWJlbCgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1
cm5LZXl3b3JkKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9y
YXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOwotCi0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgQ2FsbEFyZ3VtZW50cyByZXR1
cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVy
bk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUt
PmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJs
ZUNhbGw6Ok5vKTsKLQotICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKLSAg
ICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKLQotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJ
c09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKLSAgICBl
bWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iX3MpOwotICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKLX0KIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6cHVzaEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0
ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIpCiB7CkBAIC00NTU1LDcgKzQ2NDQsMzUgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVySUQqIHZhbHVlKQogICAg
IG1vdmUodmFsdWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAKLVJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4dE9y
SW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVyYWJs
ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8gUmVzZXJ2
ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNh
bGxGcmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUlu
UmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkp
OworCisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisgICAgZW1p
dEV4cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+
ZGl2b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck9wZW46OmVtaXQodGhpcywgaXRlcmF0b3IsIG5l
eHRPckluZGV4LCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUudGhpc1JlZ2lzdGVyKCksIGl0ZXJh
YmxlLnN0YWNrT2Zmc2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklE
KiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNl
cnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4s
IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4g
Y2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXpl
SW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3Jhcnko
KSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBl
bWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2Rl
LT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yTmV4dDo6ZW1pdCh0aGlzLCBkb25lLCB2YWx1
ZSwgaXRlcmFibGUsIG5leHRPckluZGV4LCBpdGVyYXRvci50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0
b3Iuc3RhY2tPZmZzZXQoKSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVy
YXRvclN5bWJvbCk7CiAgICAgZW1pdENhbGxJdGVyYXRvcihpdGVyYXRvci5nZXQoKSwgYXJndW1l
bnQsIG5vZGUpOwpAQCAtNDU2Myw2ICs0NjgwLDU3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4
CiAgICAgcmV0dXJuIGl0ZXJhdG9yLmdldCgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICB7CisgICAg
ICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAg
IG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBl
bWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50
cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBE
ZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdh
aXQ6OlllcykKKyAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOworICAgIH0KKyAgICB7CisgICAg
ICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3Qu
Z2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2Jq
ZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJl
Z2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sK
KyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0
ciwgMSk7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0
b3IpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFs
dWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlv
biwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2Rl
LT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBk
c3Q7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNDbG9z
ZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdM
YWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJ
ZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3Jk
KTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJl
dHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIpOworICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCks
IG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5v
KTsKKworICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAgZW1p
dEF3YWl0KHZhbHVlLmdldCgpKTsKKworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChu
ZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKKyAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3Mp
OworICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKK30KKworCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
dGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlO
YW1lcygpLmFzeW5jSXRlcmF0b3JTeW1ib2wpOwpAQCAtNDU3NSw3ICs0NzQzLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2EKICAgICBlbWl0SnVtcChhc3luY0l0ZXJhdG9yRm91bmQuZ2V0KCkp
OwogICAgIGVtaXRMYWJlbChhc3luY0l0ZXJhdG9yTm90Rm91bmQuZ2V0KCkpOwogCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50
LCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0
R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICBtb3ZlKGl0ZXJhdG9yLmdldCgp
LCBjb21tb25JdGVyYXRvci5nZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1l
dGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVy
dHlOYW1lcygpLm5leHQpOwpAQCAtNDYwNCw3ICs0NzcyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJv
d2FibGUKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsK
ICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVudCwgbm9k
ZSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0
ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoYXJndW1lbnQs
IG5vZGUpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQp
OwogCiAgICAgICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAtNDY0Miw3
ICs0ODEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlp
ZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICAgICAg
ZW1pdEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRo
b2QuZ2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICBFbWl0QXdhaXQgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlID0gcGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gRW1pdEF3YWl0OjpZZXMgOiBF
bWl0QXdhaXQ6Ok5vOwotICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JDbG9zZShpdGVy
YXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBl
bWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJv
d1R5cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBt
ZXRob2QuIl9zKTsKIApAQCAtNDcwMyw3ICs0ODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW1pdExhYmVsKG5leHRFbGVtZW50Lmdl
dCgpKTsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCks
IG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7Cisg
ICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwg
bmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKIAog
ICAgICAgICAgICAgZW1pdExhYmVsKGJyYW5jaE9uUmVzdWx0LmdldCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGQ1MzRjZDgyOGFhYzNkMTQwYjRmNDZjODY4NzY4MDkxNGUwZGUzMjUuLjZiNzA4ZTk2
YWIxNDYwZGE2YTBhZTBjYjk1MzY4YTc5ZGNmOGVmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgyOCw2
ICs4MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERlZmluZVBy
b3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0
ZXIsCiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBn
ZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlv
bnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJpY0Vu
dW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJl
c3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIs
IFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogICAgICAgICB2b2lk
IGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2Rl
LCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogPSBu
dWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRyKTsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0R2V0VGVtcGxhdGVPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBU
YWdnZWRUZW1wbGF0ZU5vZGUqKTsKQEAgLTg5OCw5ICs4OTksMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Rlcml2ZWRBcnJheShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBE
ZXJpdmVkQXJyYXlUeXBlKTsgfQogICAgICAgICB2b2lkIGVtaXRSZXF1aXJlT2JqZWN0Q29lcmNp
YmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yKTsKIAotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
bmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJ
RCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKLSAgICAgICAg
dm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOworICAg
ICAgICB2b2lkIGVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVy
SUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRvciwgQ2FsbEFyZ3VtZW50
cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZv
aWQgZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiB2YWx1ZSwg
UmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBDYWxsQXJndW1l
bnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXN5bmNJdGVy
YXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVtaXRBd2FpdDo6Tm8p
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUpOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBp
dGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9
IEVtaXRBd2FpdDo6Tm8pOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVy
KFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CiAKQEAg
LTk1MCw5ICs5NTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHVzaENh
dGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICB2b2lkIGVtaXRQb3BDYXRj
aFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSopOwotCiAgICAgICAgIHZvaWQgZW1pdEF3YWl0KFJlZ2lzdGVySUQq
KTsKICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQ0ZmRi
NGRkNTRkNDkyZjkwZDJkNzIxZmQ3ZGFjMTJmZjdkMmY4NTAuLjJiMTVjYWE0NzEzYTg4NTY1YzRj
ZDA5NTI2ZjkwYzI0NWY2M2EwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ1NzIsNyArNDU3Miw3IEBAIHZvaWQg
QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIHJocykKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGdl
bmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgaWYgKG1fdGFyZ2V0
UGF0dGVybnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9z
ZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JH
ZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTg4LDcgKzQ1ODgsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNr
aXBwZWQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJh
dG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRo
aXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVl
LmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ2MjQsNyArNDYyNCw3IEBAIHZvaWQgQXJy
YXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIHJocykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobG9vcFN0YXJ0
LmdldCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvck5l
eHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQo
KSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZU
cnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00NjQyLDcgKzQ2NDIsNyBAQCB2b2lkIEFycmF5UGF0dGVy
bk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiByaHMpCiAKICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdG9y
Q2xvc2VkLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3Iu
Z2V0KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRl
cmF0b3IuZ2V0KCksIHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0b3JDbG9z
ZWQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMGE0YTExZjliNDBlNmIxM2M1
OTY0MjI4ZTQxMTI4OWYxZDllZTg2Ni4uMThkYWUwMDRjNzIyY2Q2ZmRjZjg5MTJiYzVjNDIxM2E0
MzFiMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDM5OCwxMCArNDM5OCw4IEBAIHZvaWQg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcygKICAg
ICAgICAgICAgICAgICBmdW5jdG9yKGZvck5vZGUobm9kZSkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0g
ICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hcmd1bWVudChpKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IG1fc3RhdGUubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3RvcihtX3N0YXRl
LmxvY2FsKGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5zaXplKCk7IGktLTspCisg
ICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hdEluZGV4KGkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDg5N2M3MGRmZmJhMDY2YjY0OWNhZmRjYzFl
ZjA5MzM3NjgxMDRkMTMuLjQzOGUxNmRlODU5NTkyNTRkOTU1NzIxYjZmMDhkYjk1ODE0ZmQ4ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RT
dGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RT
dGF0ZS5oCkBAIC0xMzcsMTEgKzEzNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1ha2VIZWFwVG9w
Rm9yTm9kZShlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyB9CiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRh
aWwubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IH0K
KyAgICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1
ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCk7IH0KKyAgICBBYnN0cmFjdFZhbHVlJiBhdEluZGV4KHNp
emVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KTsgfQog
ICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKSB7IHJldHVybiBtX2Js
b2NrLT52YWx1ZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKTsgfQogICAgIEFic3RyYWN0VmFsdWUm
IGxvY2FsKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmxvY2Fs
KGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkgeyBy
ZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGluZGV4KTsgfQorICAgIEFic3Ry
YWN0VmFsdWUmIHRtcChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFp
bC50bXAoaW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3RydWN0dXJlcygpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCAwOTk3YmFiMDUyNTI2NGU2ZjE2NDg1NDI0MmQ5NGNlM2I1N2UzNmRjLi5kMDEwZWUxMjdk
ZjRlYWYzY2U3ZDIzMDJlMzI1NmFjOTcwMTYxMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC0xNTcsNyArMTU4LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIEhlbHBlciBmb3IgbWluIGFuZCBtYXguCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZU1pbk1heChWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7
CisgICAgYm9vbCBoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAKICAgICB2b2lkIHJlZmluZVN0YXRpY2Fs
bHkoQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0KTsKICAgICAvLyBCbG9ja3MgY2Fu
IGVpdGhlciBiZSB0YXJnZXRhYmxlIChpLmUuIGluIHRoZSBtX2Jsb2NrTGlua2luZ1RhcmdldHMg
b2Ygb25lIElubGluZVN0YWNrRW50cnkpIHdpdGggYSB3ZWxsLWRlZmluZWQgYnl0ZWNvZGVCZWdp
biwKQEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEhhbmRsZSBjYWxscy4gVGhp
cyByZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5saW5pbmcgYW5kIGludHJpbnNpY3MuCiAg
ICAgZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5hbCB9OwogICAgIFRlcm1p
bmFsaXR5IGhhbmRsZUNhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVU
eXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwK
KyAgICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxM
aW5rU3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xODgsMjcgKzE4OSwyNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxW
YXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgY29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCk7CiAgICAg
dW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBp
dCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3Mg
aGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlm
IGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9v
bCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJn
dW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdp
c3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBOb2RlVHlw
ZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAgICAgdW5zaWduZWQgZ2V0SW5saW5p
bmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7
CiAgICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0aW1pemVkVG9KdW1w
LCBJbmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5k
bGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNB
cmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5l
eHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9j
aywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwotICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQg
aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVn
aXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVj
b2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3Vs
dCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQs
IENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJn
dW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0
SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
dW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ss
IGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhh
bmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlz
QXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBu
ZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgotICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNv
bnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAg
IHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENh
bGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9j
aywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAvLyBIYW5kbGUgaW50
cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3
ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxs
KE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSos
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OworICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQm
IGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVz
dWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50
cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29s
IGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRl
cm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpOworICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9wZXJhbmQgcmVzdWx0
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9v
bCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7Cisg
ICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAg
IE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZz
ZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAgICBib29sIGhhbmRs
ZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFu
dCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihPcGVyYW5kIHJl
c3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9vbCBoYW5k
bGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRU
eXBlLCBOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBC
eXRlY29kZT4KQEAgLTMxOCwxNSArMzE5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBn
ZXRMb2NhbE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAgIE5vZGUqIGdldChWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAg
ICAgICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBj
b25zdGFudEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLnRvQ29uc3Rh
bnRJbmRleCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNp
emUoKTsKICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUgfHwgIW1fY29u
c3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ29kZUJsb2Nr
JiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7Ci0gICAgICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5kKTsKLSAg
ICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3Rh
bnQob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25z
dGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpKTsK
ICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXplKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3RhbnRJbmRleCArIDEpOwogICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwgbV9jb25zdGFudHMu
c2l6ZSgpOyArK2kpCkBAIC0zNDcsMTAgKzM0OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKCkt
PmlzQ2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBp
bmxpbmVDYWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
b3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpCisgICAgICAgICAgICAg
ICAgaWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlNDb25zdGFudChjYWxsZWUpOwogICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZCA9PSBWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2
ZSB0byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRoaXMgZW5hYmxlcyBD
cmVhdGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQgd2UgZG9uJ3QgaGF2
ZSBzdWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1c2VzIG9mIENhbGxl
ZSwgc2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUgZnVuY3Rpb24gaXMg
YSBzaW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00MTAsNyArNDExLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNocmluaygwKTsKICAgICB9CiAKLSAg
ICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2Rl
IHNldE1vZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0KE9wZXJhbmQgb3BlcmFuZCwgTm9k
ZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2
YWx1ZSwgc2V0TW9kZSk7CiAgICAgfQpAQCAtNjkxLDE1ICs2OTIsMjAgQEAgcHJpdmF0ZToKICAg
ICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAorICAgIE5vZGUqIGpzQ29uc3RhbnQo
RnJvemVuVmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRkVG9H
cmFwaChKU0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1ZSkpOworICAgIH0KKwogICAgIC8v
IEFzc3VtZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4KICAg
ICBOb2RlKiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZVN0cm9u
Zyhjb25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZy
ZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgTm9kZSogd2Vha0pTQ29u
c3RhbnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZFRv
R3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKSk7
CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUp
KTsKICAgICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldC9zZXQgdGhlIHRoaXMg
dmFsdWUuCkBAIC04NTAsNyArODU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3As
IE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5m
bywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcCA9PSBU
YWlsQ2FsbCkgewpAQCAtOTU5LDcgKzk2NSwzMyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
cmV0dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAgIH0KLSAgICAKKworICAg
IC8vIEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGEgdHJ1ZSBib3R0b20gdmFsdWUgZm9yIGV4YW1w
bGUgYW55IG9iamVjdCBzcGVjdWxhdGlvbiB3aWxsIG5vdyBiZSBPYmplY3R8T3RoZXIgYXMgdGhp
cyByZXR1cm5zIG51bGwuCisgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzIHdoZW4gd2UgY2FuIGFs
bG9jYXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAgRnJvemVuVmFsdWUqIGJvdHRvbVZh
bHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSBzcGVjKQorICAgIHsKKyAgICAg
ICAgaWYgKGlzU3VidHlwZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNPdGhlcikpCisgICAgICAgICAg
ICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisgICAgICAgIGlmIChpc1N1YnR5
cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjQm9vbGVhbikpCisgICAgICAgICAgICByZXR1cm4gbV9n
cmFwaC5mcmVlemUoanNCb29sZWFuKHRydWUpKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3Bl
Y3VsYXRpb24oc3BlYywgU3BlY0Z1bGxOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3Jh
cGguZnJlZXplKGpzTnVtYmVyKDApKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3BlY3VsYXRp
b24oc3BlYywgU3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUo
bV92bS0+YmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworCisgICAgICAgIGlmIChpc1N1YnR5cGVT
cGVjdWxhdGlvbihzcGVjLCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9ncmFwaC5mcmVlemUobV92bS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOwor
CisgICAgICAgIGlmIChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjQ2VsbE90aGVyIHwg
U3BlY09iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkp
OworCisgICAgICAgIEFTU0VSVChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjRW1wdHkp
IHx8IHNwZWMgPT0gU3BlY05vbmUpOworICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoSlNW
YWx1ZSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5OjpBY3Rp
b24gYWN0aW9uKQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2s7CkBAIC0xMTc0LDcgKzEyMDYsNyBAQCBwcml2YXRl
OgogICAgICAgICAvLyBPcHRpb25hbDogYSBjb250aW51YXRpb24gYmxvY2sgZm9yIHJldHVybnMg
dG8ganVtcCB0by4gSXQgaXMgc2V0IGJ5IGVhcmx5IHJldHVybnMgaWYgaXQgZG9lcyBub3QgZXhp
c3QuCiAgICAgICAgIEJhc2ljQmxvY2sqIG1fY29udGludWF0aW9uQmxvY2s7CiAKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG1fcmV0dXJuVmFsdWU7CisgICAgICAgIE9wZXJhbmQgbV9yZXR1cm5W
YWx1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNwZWN1bGF0aW9ucyBhYm91dCB2YXJpYWJsZSB0
eXBlcyBjb2xsZWN0ZWQgZnJvbSB0aGUgcHJvZmlsZWQgY29kZSBibG9jaywKICAgICAgICAgLy8g
d2hpY2ggYXJlIGJhc2VkIG9uIE9TUiBleGl0IHByb2ZpbGVzIHRoYXQgcGFzdCBERkcgY29tcGls
YXRpb25zIG9mIHRoaXMKQEAgLTExOTQsNyArMTIyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBDb2RlQmxvY2sqLAogICAgICAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAg
ICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCAvLyBOdWxsIGlmIHRoaXMgaXMgYSBjbG9zdXJl
IGNhbGwuCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICAg
ICAgICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
aW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAgICAgICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsCiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQsCkBAIC0xMjY5LDYg
KzEzMDEsNyBAQCBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFi
bGVCbG9jaygpCiAgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNp
Y0Jsb2NrKEJ5dGVjb2RlSW5kZXgoKSwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBtX251
bVRtcHMsIDEpKTsKICAgICBCYXNpY0Jsb2NrKiBibG9ja1B0ciA9IGJsb2NrLnB0cigpOwogICAg
IG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOworICAgIFZFUkJPU0VfTE9HKCJB
ZGRpbmcgbmV3IHVudGFyZ2V0YWJsZSBibG9jazogIiwgYmxvY2tQdHItPmluZGV4LCAiXG4iKTsK
ICAgICByZXR1cm4gYmxvY2tQdHI7CiB9CiAKQEAgLTEzMDEsOCArMTMzNCw4IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENhbGxPcD4KIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxs
TW9kZSBjYWxsTW9kZSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPENhbGxPcD4oKTsK
LSAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKTsKLSAgICBpbnQg
cmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOworICAg
IE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoY2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRl
eC5jaGVja3BvaW50KCkpKTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8
aW50PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgbV9jdXJyZW50SW5k
ZXguY2hlY2twb2ludCgpKSk7CiAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCkBAIC0xMzEwLDggKzEzNDMsOCBA
QCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBObwogCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtp
bmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1vZGUpOwogCi0gICAgcmV0dXJuIGhh
bmRsZUNhbGwoYnl0ZWNvZGUubV9kc3QsIG9wLCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0
LAotICAgICAgICBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1
cywgZ2V0UHJlZGljdGlvbigpKTsKKyAgICByZXR1cm4gaGFuZGxlQ2FsbChkZXN0aW5hdGlvbkZv
cihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpLCBKSVRUeXBlOjpERkdKSVQp
LCBvcCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKKyAgICAgICAgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSks
IHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKIH0KIAog
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYgY2Fs
bExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQpCkBAIC0xMzIxLDcgKzEzNTQsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlu
a1N0YXR1cywgTm9kZSogY2FsbAogfQogCiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlv
blNpemUsCisgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAgIE5vZGUqIGNhbGxUYXJn
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LAog
ICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQogewpAQCAtMTYzNyw3ICsxNjcwLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6Omlu
bGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQordm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFu
ZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogewogICAgIGNvbnN0IEluc3RydWN0aW9uKiBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbiA9
IG1fY3VycmVudEluc3RydWN0aW9uOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lh
bGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2lu
ZCk7CkBAIC0xNjcxLDcgKzE3MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIHNp
emVfdCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMu
c2l6ZSgpOwogCiAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgIHJlc3VsdCA9IG1f
aW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHQpLnZpcnR1YWxSZWdpc3RlcigpOwor
ICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0KTsK
IAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPSBudWxscHRyOwogICAg
IGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CkBAIC0xODIzLDcgKzE4NTYsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIG1fY3VycmVudEluc3RydWN0aW9uID0gc2F2ZWRDdXJy
ZW50SW5zdHJ1Y3Rpb247CiB9CiAKLUJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVz
dWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdC
YWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tD
YWxsZWUpCitCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVz
dWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lz
dGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29k
ZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNv
bnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkKIHsKICAgICBWRVJCT1NF
X0xPRygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwogCkBAIC0xOTAw
LDcgKzE5MzMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogYwogICAgIHJldHVybiBDYWxsT3B0
aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVkOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LAogICAgIGNvbnN0IENhbGxMaW5rU3RhdHVz
JiBjYWxsTGlua1N0YXR1cywgaW50IGZpcnN0RnJlZVJlZywgVmlydHVhbFJlZ2lzdGVyIHRoaXNB
cmd1bWVudCwKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVk
IGFyZ3VtZW50c09mZnNldCwKICAgICBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kKQpAQCAtMjA0NCw3ICsyMDc3LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6
OmdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMK
IH0KIAogQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKAotICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsCisgICAg
Tm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1
cyYgY2FsbExpbmtTdGF0dXMsCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc0FyZ3VtZW50LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAg
ICBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKQEAgLTIyMjAsNyArMjI1
Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rv
cj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgQVNTRVJUKG9wID09IEFyaXRoTWlu
IHx8IG9wID09IEFyaXRoTWF4KTsKIApAQCAtMjI1MCw3ICsyMjgzLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9w
LCBpbnQgcmVnaXMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRy
aW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgICAgVGhlIGludHJpbnNp
YyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBAIC0yMzg5LDI3ICsyNDIyLDExIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5zaWM6IHsK
ICAgICAgICAgICAgIGluc2VydENoZWNrcygpOwogCi0gICAgICAgICAgICBJdGVyYXRpb25LaW5k
IGtpbmQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgewotICAgICAgICAgICAgY2Fz
ZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheVZhbHVl
c0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6VmFsdWVz
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBcnJheUtleXNJbnRy
aW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgotICAgICAg
ICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpLZXlzOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAgICAg
ICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQg
PSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
T3B0aW9uYWw8SXRlcmF0aW9uS2luZD4ga2luZCA9IGludGVyYXRpb25LaW5kRm9ySW50cmluc2lj
KGludHJpbnNpYyk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghIWtpbmQpOwogCiAgICAg
ICAgICAgICAvLyBBZGQgdGhlIGNvbnN0YW50IGJlZm9yZSBleGl0IGJlY29tZXMgaW52YWxpZCBi
ZWNhdXNlIHdlIG1heSB3YW50IHRvIGluc2VydCAocmVkdW5kYW50KSBjaGVja3Mgb24gaXQgaW4g
Rml4dXAuCi0gICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtpbmQpKSk7CisgICAgICAgICAgICBOb2RlKiBraW5kTm9k
ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpraW5kKSkpOwog
CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFuIGV4aXN0aW5nIGVycm9yIHN0cmluZy4K
ICAgICAgICAgICAgIHVuc2lnbmVkIGVycm9yU3RyaW5nSW5kZXggPSBVSU5UMzJfTUFYOwpAQCAt
MzY0Nyw3ICszNjY0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJ
VENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURP
TUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6
U2lnbmF0dXJlKiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICE9IHN0YXRpY19jYXN0PGludD4oMSArIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2NjYsNyArMzY4Myw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50
LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwg
Tm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAg
ICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRl
TGVuZ3RoSW50cmluc2ljOiB7CkBAIC0zNzgwLDcgKzM3OTcsNyBAQCBzdGF0aWMgdm9pZCBibGVz
c0NhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2Rl
TXVzdEdlbmVyYXRlKTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0
dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50
LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihP
cGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNO
b2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQogewogICAgIGlmICghdmFyaWFudC5kb21BdHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzg1OSw3ICszODc2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9k
dWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGUKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRl
cm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE9wZXJhbmQg
cmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAog
ICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUgdHlwZSwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGlmICghaXNUeXBlZFZp
ZXcodHlwZSkpCkBAIC0zOTE2LDcgKzM5MzMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24o
Ci0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVy
bmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgTm9kZSogY2Fs
bFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAg
ICBIYW5kbGluZyBjb25zdGFudCBpbnRlcm5hbCBmdW5jdGlvbiAiLCBKU1ZhbHVlKGZ1bmN0aW9u
KSwgIlxuIik7CkBAIC02NjA0LDIwICs2NjIxLDQwOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIExBU1RfT1BDT0RFKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk7CiAgICAgICAg
IH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6IHsK
ICAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVu
dEluc3RydWN0aW9uLCBDb25zdHJ1Y3RWYXJhcmdzLCBDYWxsTW9kZTo6Q29uc3RydWN0KTsKICAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3Vy
cmVudEluc3RydWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGlu
ZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0X3ZhcmFyZ3MpOwogICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAg
ICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7CiAgICAgICAgICAgICBh
ZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxsRXZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zm
c2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9l
dmFsKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2Rl
cyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9k
ZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVy
T2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxz
ZTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4o
KSk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAg
ICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVC
bG9jaygpOworCisgICAgICAgICAgICBCeXRlY29kZUluZGV4IHN0YXJ0SW5kZXggPSBtX2N1cnJl
bnRJbmRleDsKKworICAgICAgICAgICAgTm9kZSogc3ltYm9sSXRlcmF0b3IgPSBnZXREaXJlY3Qo
Ynl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICBhdXRvJiBhcnJheUl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0KCk7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVy
YXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUg
d2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAg
ICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVu
U3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IG1fZ3JhcGguZnJlZXplKGdsb2JhbE9iamVjdC0+YXJy
YXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uKCkpOworICAgICAgICAgICAgICAgIGlm
IChudW1iZXJPZlJlbWFpbmluZ01vZGVzID09IDEpCisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5
bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogZmFzdEFycmF5QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2Nr
KCk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRh
YmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBrbm93bkl0ZXJGdW5jdGlv
biA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxUHRyLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JG
dW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNB
cnJheSA9IGFkZFRvR3JhcGgoSXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhBcnJheVR5cGUpLCBnZXQo
Ynl0ZWNvZGUubV9pdGVyYWJsZSkpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEq
IGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2spOwor
ICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChn
ZW5lcmljQmxvY2spOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFuZFJlc3VsdCA9IGFk
ZFRvR3JhcGgoQXJpdGhCaXRBbmQsIGlzQXJyYXksIGtub3duSXRlckZ1bmN0aW9uKTsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBrbm93IHRoZSBiaXQgYW5kIGNhbm5vdCBoYXZlIGVmZmVj
dHMgc28gaXQncyBvayB0byBleGl0IGhlcmUuCisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFu
ZFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKworICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZhc3RBcnJheUJsb2NrOworICAgICAg
ICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIC8vIFRoZSBicmFuY2ggYWJvdmUgbWF5IGhhdmUgbWFkZSBleGl0IGludmFsaWQg
YnV0IGl0J3MgYWN0dWFsbHkgb2suCisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBOb2Rl
KiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0
ZXJhdGlvbktpbmQ6OlZhbHVlcykpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9
IGFkZFRvR3JhcGgoTmV3QXJyYXlJdGVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSk7CisgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJh
dG9yLCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5
SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSksIGl0ZXJhdG9yLCBraW5kTm9kZSk7CisgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIGl0ZXJhdG9yKTsKKworICAgICAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX25leHQsIGpzQ29uc3RhbnQoSlNWYWx1ZSgpKSk7CisKKyAgICAg
ICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3Vy
IGdldEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAg
ICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9m
ZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAg
ICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGdl
bmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJl
bnRJbmRleCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVy
YXRpb25Nb2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykg
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAg
ICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWlu
YWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JPcGVuPihjdXJyZW50SW5z
dHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAg
ICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAg
ICBOb2RlKiBpdGVyYXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxv
Y2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5j
aERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICBicmFu
Y2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAgICAgICAgICAg
ICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwg
YWRkVG9HcmFwaChJc09iamVjdCwgaXRlcmF0b3IpKTsKKworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3RPYmplY3RCbG9jazsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gVE9E
TzogVGhpcyBzaG91bGQgYmUgYSB0eXBlIGVycm9yLi4uCisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoVGhyb3csIGpzQ29uc3RhbnQoanNOdWxsKCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2Nr
OworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworCisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8qIG5leHRJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+bmV4
dC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKG5leHRJbXBsKTsKKworICAgICAgICAgICAg
ICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNp
emUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdl
dEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisKKyAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX25leHQsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIobmV4dEltcGwpLCBp
ZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBy
dW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJy
ZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVh
dGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENhc2UpIHsKKyAgICAgICAgICAg
ICAgICBOb2RlKiByZXN1bHQgPSBqc0NvbnN0YW50KEpTVmFsdWUoKSk7CisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29k
ZS5tX2l0ZXJhdG9yLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX25l
eHQsIHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2Ug
ZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBu
ZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJ
bmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7
CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24p
KTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsK
KworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0b3Jfb3Blbik7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgICAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAg
ICAgICAgICAgdWludDMyX3Qgc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0
YS5zZWVuTW9kZXM7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9k
ZXMgPSBXVEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7CisgICAgICAgICAgICBBU1NFUlQobnVtYmVy
T2ZSZW1haW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAg
IGJvb2wgZ2VuZXJhdGVkQ2FzZSA9IGZhbHNlOworCisgICAgICAgICAgICBCeXRlY29kZUluZGV4
IHN0YXJ0SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAgICAgICAgYXV0byYgYXJyYXlJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCgpOworICAgICAgICAgICAgQmFzaWNCbG9jayogZ2VuZXJpY0Js
b2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAm
IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3Qgc2V0IHVw
IHRoZSB3YXRjaHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5lc3MuCisgICAg
ICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlJl
bWFpbmluZ01vZGVzICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaGFzTmV4dCA9
IGFkZFRvR3JhcGgoSXNFbXB0eSwgZ2V0KGJ5dGVjb2RlLm1fbmV4dCkpOworICAgICAgICAgICAg
ICAgICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJsb2NrID0gYWxsb2NhdGVVbnRh
cmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5j
aERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2spOworICAgICAg
ICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChnZW5lcmlj
QmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJy
YW5jaERhdGEpLCBoYXNOZXh0KTsKKworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ayA9IGZhc3RBcnJheUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gZ2V0
KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tT
dHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnbG9iYWxPYmplY3QtPmFy
cmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpLCBpdGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRh
YmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRB
cnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQo
Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6Omdl
dFZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50
NTJBbnkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBpdGVyYWJsZSA9IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogYnV0dGVyZmx5ID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGl0ZXJhYmxl
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gYWRkVG9HcmFwaChHZXRBcnJh
eUxlbmd0aCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGl0ZXJhYmxlLCBidXR0ZXJmbHkp
OworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVH
cmVhdGVyRXEsIGluZGV4LCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9
IHRydWU7IC8vIFRoZSBhYm92ZSBjb21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBlZmZlY3RzIHNpbmNl
IHdlIGtub3cgaW5kZXggYW5kIGxlbmd0aCBhcmUgdWludDMycy4KKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEq
IGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNEb25lQmxvY2spOworICAg
ICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChkb0xv
YWRCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8o
YnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWlu
YWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZG9Mb2FkQmxvY2s7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRk
VG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpT
QXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgZ2V0
KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogb25lID0g
anNDb25zdGFudChqc051bWJlcigxKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0lu
ZGV4ID0gbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgaW5kZXgsIG9uZSkpOworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBmYWxzZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbihmYWxz
ZSkpOworCisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGNvbnNpZGVy
IG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNlcyB0aHJlZSBjaGlsZAor
ICAgICAgICAgICAgICAgICAgICAvLyBzbG90cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MgorICAgICAgICAgICAg
ICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworICAgICAg
ICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChpbmRleCk7CisgICAgICAgICAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFy
QXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBnZXRCeVZh
bCk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIGZhbHNlTm9kZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZv
KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBn
ZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIG5ld0luZGV4KTsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldEJ5VmFs
IGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQo
KSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9l
eGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAvLyBSb2xsIGJhY2sgdGhlIGNoZWNrcG9pbnQuCisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGlzRG9uZUJsb2NrOworICAgICAgICAg
ICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiB0cnVl
Tm9kZSA9IGpzQ29uc3RhbnQoanNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogZG9uZUluZGV4ID0ganNDb25zdGFudChqc051bWJlcihtYXhTYWZlSW50ZWdlcigpKSk7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJvdHRvbU5vZGUgPSBqc0NvbnN0YW50KGJvdHRv
bVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbU5vZGUpOworICAgICAgICAgICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCB0cnVlTm9kZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90
PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRv
ciksIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2Nh
bHMuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleCht
X2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1
ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29u
dGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0
SW5kZXg7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
KSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykgeworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygp
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWdl
bmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkg
PSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENh
bGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFs
aXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAgICAgICAgICAgICAgcHJvZ3Jl
c3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3RP
YmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygp
OworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERvbmVCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgIE9wZXJhbmQgbmV4dFJlc3VsdCA9
IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvclJlc3VsdCA9IGdldChuZXh0
UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1f
Z3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRh
LT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2JqZWN0QmxvY2spOwor
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEp
LCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvclJlc3VsdCkpOworICAgICAgICAgICAgICAg
ICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJs
b2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAg
ICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9n
cmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwor
ICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpT
VmFsdWVzLmFkZChlcnJvclN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBlcnJv
ck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpU
eXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRl
cm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0byB2YWx1
ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9jazsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVj
dWxhdGlvbih2YWx1ZVByZWRpY2l0aW9uKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
YmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogZG9uZUlt
cGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1
cmUoZG9uZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFj
Y2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAg
IEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmln
aW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX2Rv
bmUsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoZG9uZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywg
dHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGEgdmFsdWUg
Zm9yIG1fdmFsdWUgc28gd2UgZG9uJ3QgdGhpbmsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fdmFsdWUsIGJvdHRvbVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jl
c3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSog
YnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAg
ICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChjb250aW51YXRpb24pOworICAg
ICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RE
b25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZv
KGJyYW5jaERhdGEpLCBnZXQoYnl0ZWNvZGUubV9kb25lKSk7CisgICAgICAgICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90RG9uZUJsb2NrOwor
ICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8q
IHZhbHVlSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUodmFsdWVJbXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBl
IHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAg
ICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRl
Rm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNl
bGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0
ZWNvZGUubV92YWx1ZSwgdmFsdWVQcmVkaWNpdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2YWx1ZUltcGwpLCBpZGVudGlmaWVyTnVt
YmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25z
dGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0
KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgcmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCByZXN1bHQpOworCisgICAgICAgICAgICAg
ICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkg
aWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkg
KyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sg
PSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAg
ICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JU
ZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9
IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsK
KyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2l0ZXJhdG9yX25leHQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjog
ewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BK
bmVxUHRyPigpOwogICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBvaW50ZXIgPSBtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0Q29uc3Rh
bnQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcikpOwpAQCAtNzEwNyw3ICs3NTEzLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxhdGVyLCBhcyB0aGF0IHdvdWxkIHBy
ZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAgICAgICAgICAgLy8gYnl0ZWNvZGUt
bGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVyLgogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4oKTsKLSAgICAgICAg
ICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAgICAg
ICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxs
ZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4o
Km1fdm0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdlYWtKU0NvbnN0YW50KGZ1bmN0aW9u
LT5zY29wZSgpKTsKQEAgLTc0ODYsNyArNzg5Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVT
dGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLAog
ICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8v
IE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0
dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJldHVyblZhbHVlLAogICAgIFZpcnR1YWxSZWdpc3Rl
ciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsCkBAIC03NDk1LDcgKzc5MDEsNyBA
QCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAg
ICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhwcm9maWxl
ZEJsb2NrKQogICAgICwgbV9jb250aW51YXRpb25CbG9jayhjb250aW51YXRpb25CbG9jaykKLSAg
ICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAgICAsIG1fcmV0dXJuVmFsdWUocmV0
dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1Rv
cCkKIHsKICAgICB7CkBAIC03NTYxLDcgKzc5NjcsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgLy8gTWFjaGluZSBjb2RlIGJs
b2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sgPT0gYnl0ZUNvZGVQYXJzZXItPm1f
Y29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKCFjYWxsZWUpOwotICAgICAgICBBU1NFUlQoIXJl
dHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXR1cm5WYWx1ZS5pc1Zh
bGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZVN0YXJ0LmlzVmFsaWQoKSk7
CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOwpAQCAtNzk3Niw3ICs4MzgyLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgICAgIGluc2VydGlvblNl
dC5leGVjdXRlKGJsb2NrKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gbm9kZUFuZEluZGV4ID0g
YmxvY2stPmZpbmRUZXJtaW5hbCgpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5v
ZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxlKTsKKyAgICAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJbmRleC5ub2RlLCBub2RlQW5kSW5kZXgubm9kZS0+
b3AoKSA9PSBVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICAgICAgYmxvY2stPnJlc2l6ZShub2Rl
QW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwCmluZGV4IGU3ZjZlNzYyNDY2OWIzMDFmNWEwMjA0OGMyNWQ0ODE1YzNh
MTMzOWQuLjYxMGQ3ZDIwZWY2NTM1ZjdhOGU5NWJjZWExMjFlZjNiOGFiNDAyYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Js
b2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2Nr
LCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3Bl
cmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgTm9kZSogbGl2ZW5lc3NOb2RlID0gamV0dGlz
b25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgaWYg
KCFsaXZlbmVzc05vZGUpCkBAIC0zMDIsMTEgKzMwMiw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dm9pZCBqZXR0aXNvbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNv
bmVkQmxvY2ssIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luKQogICAgIHsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5u
dW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJs
b2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyAr
K2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ss
IGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwotICAgICAg
ICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxv
Y2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOworCiAgICAgICAgIGZpeEpldHRp
c29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpldHRpc29uZWRCbG9jayk7CiAgICAgfQogICAgIApA
QCAtMzUyLDExICszNTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gVGltZSB0byBpbnNl
cnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUga2VwdCBhbGl2ZSBpbiBjYXNl
IHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0byBoaXR0aW5nIHRoZSBmaXJzdEJs
b2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93biBhCiAgICAgICAgICAgICAvLyBk
aWZmZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJsb2NrLgotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFs
aXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJz
dEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0
aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlO
b2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5k
ZXgoaSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNlY29uZEJsb2NrLT5waGlzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1OWI3NzgwYTZjYzdkZWNhNzAyNDg4
ZjhlMWMyYTBiNjcwYmY5OWYuLjYwMDMzMmYxOTBmZjhiNDA0MmNkNTQyYWI5NWI1MDUzNmFkN2E3
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
QEAgLTI3NCw2ICsyNzQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3Bf
Y2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xl
bmd0aDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBvcF9pdGVyYXRvcl9u
ZXh0OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ug
b3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6CkBA
IC0zMTEsNiArMzEzLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGNoZWNr
cG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNo
ZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBjYXNlIGhhbmRsZVVuY2F1Z2h0RXhj
ZXB0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb246CisgICAg
Y2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxf
cmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY29uc3RydWN0X3JldHVybl9sb2NhdGlvbjoK
ICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFhNGRlY2RhMGMyZDcz
Njg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYuLmRiYzgzMWMyZWJlMDg2Zjg3MzY2YTdlNTRhMzVl
NTkzYTliMDc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMjQxMSw3ICsyNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTogewotICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFn
cyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggYmY0MzUwYzRjZDE3ZTNkNTAwNjYzOGY1NWFh
YzM1YTU2NTI5OTRhMS4uZDljOTc0MjhmZDZhZTVlYTUwNmQwNTcyNjczMDIwZGQxYWZmMTE0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaApAQCAtNzcsNyAr
NzcsNyBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGJlZm9yZUlubGluZUNhbGxGcmFtZSk7
CiAgICAgICAgIGlmIChhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkgIT0gYWZ0
ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSk7Ci0gICAgICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNv
ZGVJbmRleCgpLm9mZnNldCgpLCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rpb24gaXQgc2hv
dWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5
dGVjb2Rlcy4iKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYmVmb3JlLmJ5dGVj
b2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgfHwg
bm9kZUFmdGVyLT5vcCgpID09IEV4aXRPSyB8fCBub2RlQWZ0ZXItPm9wKCkgPT0gSW52YWxpZGF0
aW9uUG9pbnQsICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBpdCBzaG91bGQgY2hhbmdl
IHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vycm91bmRpbmcgYnl0ZWNvZGVzLiIp
OwogCiAgICAgICAgICAgICBhdXRvIGxpdmVCZWZvcmUgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9p
bnQoKmNvZGVCbG9jaywgYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgICAgICBhdXRv
IGxpdmVBZnRlciA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBhZnRlci5i
eXRlY29kZUluZGV4KCkpOwpAQCAtMTAyLDggKzEwMiw2IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3Bl
cmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNv
bnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFh
ZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpLCAiVHJhbnNpdGlvbmluZyBhY3Jvc3Mg
YSBjaGVja3BvaW50IGJ1dCBiZWZvcmUgYW5kIGFmdGVyIGRvbid0IHNoYXJlIGFuIGlubGluZUNh
bGxGcmFtZS4iKTsKLQogICAgIC8vIERldGVjdCBraWxscyB0aGUgc3VwZXIgY29uc2VydmF0aXZl
IHdheTogaXQgaXMga2lsbGVkIGlmIGl0IHdhcyBsaXZlIGJlZm9yZSBhbmQgZGVhZCBhZnRlci4K
ICAgICBCaXRWZWN0b3IgbGl2ZUFmdGVyID0gZ3JhcGgubG9jYWxzQW5kVG1wc0xpdmVJbkJ5dGVj
b2RlKGFmdGVyKTsKICAgICB1bnNpZ25lZCBudW1Mb2NhbHMgPSBncmFwaC5ibG9jaygwKS0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCmluZGV4IDIwMmQyMjUwNTNm
YTlkZmJlNWMyM2M2NGJjZjhiZTM4NGUzZTc2NTQuLjdjYzM0YWUyZDBkNGU1Zjg0OGU2OTU3MzAy
NDkyYzEyMWQ3MWZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrKQog
ICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9
PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNTRVJU
KGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxv
Y2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNCbG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFyaWFi
bGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51
bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51
bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7
CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSA9
PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkpOwogCiAgICAgbV9h
YnN0cmFjdFZhbHVlcy5yZXNpemUoKTsKIApAQCAtMTYxLDYgKzE2NCwxMCBAQCB2b2lkIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsr
aSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLnRtcChpKS5jbGVhcigp
OworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLnRtcChpKS5jbGVhcigpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpAQCAtMTc1LDEzICsxODIsOSBAQCB2b2lkIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgYmxvY2stPmNmYVRoaW5rc1No
b3VsZFRyeUNvbnN0YW50Rm9sZGluZyA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhU3RydWN0
dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CiAgICAgICAgIGJs
b2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hl
ZDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLm51
bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5h
cmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAg
ICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgICAg
IGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRIZWFkW2ldLmNsZWFyKCk7CisgICAgICAgICAgICBibG9jay0+
dmFsdWVzQXRUYWlsW2ldLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzOSw3ICsy
NDIsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDogewogICAg
ICAgICAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMgdGhlIHZhbHVlIGZyb20gaGVhZCB0
byB0YWlsLgotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gdmFyaWFibGVBdChpbmRleCk7
CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBhdEluZGV4KGluZGV4KTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTMwNCw3
ICszMDcsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IHZhcmlhYmxlQXQoaSk7CisgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gYXRJbmRleChpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiB2YWx1ZUF0VGFpbCA6IGJsb2NrLT5z
c2EtPnZhbHVlc0F0VGFpbCkKQEAgLTM0Myw2ICszNDYsNyBAQCBib29sIEluUGxhY2VBYnN0cmFj
dFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAgICAg
ZGF0YUxvZygiICAgTWVyZ2luZyBmcm9tICIsIHBvaW50ZXJEdW1wKGZyb20pLCAiIHRvICIsIHBv
aW50ZXJEdW1wKHRvKSwgIlxuIik7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5u
dW1iZXJPZkFyZ3VtZW50cygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVu
dHMoKSk7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fscygp
ID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGZy
b20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mVG1wcygpKTsKICAgICAKICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAK
QEAgLTM1MiwxNCArMzU2LDkgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFz
aWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgCiAgICAgc3dpdGNoIChtX2dyYXBo
Lm1fZm9ybSkgewogICAgIGNhc2UgVGhyZWFkZWRDUFM6IHsKLSAgICAgICAgZm9yIChzaXplX3Qg
YXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFy
Z3VtZW50cygpOyArK2FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0
aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJv
bS0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5h
cmd1bWVudChhcmd1bWVudCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVu
dCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7
IGxvY2FsIDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwp
IHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0
SGVhZC5sb2NhbChsb2NhbCk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVC
ZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwp
LCB0by0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKSwgZnJvbS0+dmFyaWFibGVzQXRUYWls
LmxvY2FsKGxvY2FsKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBm
cm9tLT52YXJpYWJsZXNBdFRhaWwuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBBYnN0
cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXQoaW5kZXgpOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlv
biwgZnJvbS0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5hdChp
bmRleCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hdChpbmRleCkpOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRleCAxODY1ZTZhMWVmZmMzZGFhZWZlNTg0Y2E4NjJj
NDliYzM2ODU4NTAwLi5jNWQwMjY4NzNlMDEwZDA3ZjM4MTFjNmM0ZmVmNTY2ZTFjYTcwZjk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oCkBAIC0xNTgsMTAgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3BlcmFuZHM8
QWJzdHJhY3RWYWx1ZT4mIHZhcmlhYmxlc0ZvckRlYnVnZ2luZygpOwogCisgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLnNpemUoKTsgfQogICAgIHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZB
cmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkgY29uc3QgeyByZXR1
cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9m
VG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mVG1wcygpOyB9CiAgICAg
Ci0gICAgQWJzdHJhY3RWYWx1ZSYgdmFyaWFibGVBdChzaXplX3QgaW5kZXgpCisgICAgQWJzdHJh
Y3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgewogICAgICAgICBhY3RpdmF0ZVZh
cmlhYmxlSWZOZWNlc3NhcnkoaW5kZXgpOwogICAgICAgICByZXR1cm4gZmFzdEZvcndhcmQobV92
YXJpYWJsZXNbaW5kZXhdKTsKQEAgLTE2OSwxNyArMTcxLDE3IEBAIHB1YmxpYzoKIAogICAgIEFi
c3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKKyAgICAg
ICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKICAg
ICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMubG9jYWxJbmRleChpbmRleCkp
OworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7
CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLmFyZ3VtZW50SW5k
ZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMuYXJndW1lbnRJ
bmRleChpbmRleCkpOwogICAgIH0KICAgICAKICAgICAvLyBDYWxsIHRoaXMgYmVmb3JlIGJlZ2lu
bmluZyBDRkEgdG8gaW5pdGlhbGl6ZSB0aGUgYWJzdHJhY3QgdmFsdWVzIG9mCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKaW5kZXggZjVlZWYyZjNkZjcyMTI5YTgz
OGM3Njg2ZTI2Yjk2MGI1MGY1ODFlZS4uN2EzMzY2NmFhNzFhMWY2NjZjOTRiMjhiNjQ0NzQ4NGQ2
N2JiYjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNW
YWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaApA
QCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExhenlKU1ZhbHVlIG5ld1N0cmlu
ZyhHcmFwaCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgTGF6aW5lc3NLaW5kIGtpbmQoKSBjb25z
dCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLbm93blZhbHVlID8gU3BlY0J5dGVjb2RlVG9wIDog
U3BlY1N0cmluZzsgfQogICAgIAogICAgIEZyb3plblZhbHVlKiB0cnlHZXRWYWx1ZShHcmFwaCYp
IGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5k
ZXggYTg1MmRiZGQ5YjkzNzBkNmRlNjUzYzVhNDg4NzExNzAwZThiODc5Yi4uNTIyMzRiNGE1ZDNm
Njk3NmMyZmE5OTgxNmRjZTExMDY4MTA1NGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCkBAIC00OCwxMSArNDgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVT
b3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVBy
b2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25l
ZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVl
U291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQ
cm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWdu
ZWQgcmVjb3ZlcnlJbmRleCwgdW5zaWduZWQgZGZnSVJJbmRleCkKICAgICA6IE9TUkV4aXRCYXNl
KGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0
LT5tX29yaWdpbi53YXNIb2lzdGVkKQogICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3Vy
Y2UpCiAgICAgLCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCiAgICAgLCBtX3JlY292ZXJ5
SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAgICAsIG1fZGZnSVJJbmRleChkZmdJUkluZGV4KQogICAg
ICwgbV9zdHJlYW1JbmRleChzdHJlYW1JbmRleCkKIHsKICAgICBib29sIGNhbkV4aXQgPSBqaXQt
Pm1fb3JpZ2luLmV4aXRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5k
ZXggOWU5YmNlYTQ4MWMxZDY4Nzc5NzJmMjU5ZDYyYzFhMjMwMGIyYjE2MS4uOGNlOGI5MjA3OWFm
NzUyOTk3MDNmMTdmZGRhZTJmZWMzYjljMjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2b2lkKiwgdm9pZAog
Ly8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBw
YXRoIGJ5CiAvLyBnb2luZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhpdCA6IHB1
YmxpYyBPU1JFeGl0QmFzZSB7Ci0gICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBz
dHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKKyAgICBPU1JF
eGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVy
eUluZGV4ID0gVUlOVF9NQVgsIHVuc2lnbmVkIGRmZ0lSSW5kZXggPSBVSU5UX01BWCk7CiAKICAg
ICBmcmllbmQgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxG
cmFtZSopOwogCkBAIC0xNTksNiArMTU5LDcgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgT1NS
RXhpdEJhc2UgewogICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2Zp
bGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUluZGV4OworICAgIHVuc2lnbmVkIG1f
ZGZnSVJJbmRleDsKIAogICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gY29k
ZUxvY2F0aW9uRm9yUmVwYXRjaCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggMWRmMzk0MzI0
MWQ1YWY3OTMxOThlZjljNzEyNzNlNzU4YTBhMjI2YS4uMDg1ZGM1MzBiM2JjMzc5ZmI0ZjNlNjA5
MWNiNWM2NTIwMjc1ODdhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTU5LDkgKzE1OSwxNSBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jawogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkg
KGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNF
bnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlz
V2lkZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNf
cmV0dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUj
I19yZXR1cm5fbG9jYXRpb24pKSkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2lu
ZCkgewotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKLSAgICAgICAgICAgIGp1
bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgIGNhc2Ug
SW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CisgICAgICAgICAgICBpZiAoY2FsbEluc3RydWN0aW9u
Lm9wY29kZUlEKCkgPT0gb3BfY2FsbCkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJ
TlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbElu
c3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgICAgICAg
ICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pOwor
ICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRl
cmF0b3JfbmV4dCkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX2l0ZXJhdG9yX25leHQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKICAgICAgICAgICAgIGp1
bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0KTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjM5LDYgKzI0NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CiAgICAgcmV0dXJuIGp1
bXBUYXJnZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEwMDNlZDVmZDNmYmMz
ODE2MmM4OTJiMzRjODQ3YjkyNzY4M2ZhZS4uNmUwOTBhMzhiZmMwOTQ3NWE3ZDdiZDU5MWUyNTFh
M2U5MzQ2ODU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExMDEsNiArMTEwMSwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxh
Z3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFu
dDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5sYXp5SlNWYWx1
ZSgpLnNwZWN1bGF0ZWRUeXBlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwog
ICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3Ry
dWN0b3I6CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CkBAIC0xMzA1LDcgKzEzMTEsNiBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2Fz
ZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2Fj
aGVkUmVzdWx0OgotICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OgogICAgICAgICBjYXNlIENh
bGxET006IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJs
ZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLgogICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG1fY3VycmVudE5vZGUsICJVbmV4cGVjdGVkIG5vZGUgZHVyaW5nIHByZWRpY3Rpb24g
cHJvcGFnYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAK
aW5kZXggMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4YTFiZmYzOThjYi4uOWFlOTgwNGM3
NWI5NWVjNTYxZWQyZjFhNTJiOWRlYzk4Yzg0NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgICAgICAg
ICAgZGF0YUxvZ0YoIikgPT0gKCVzID0gIiwgI3JpZ2h0KTsgXAogICAgICAgICAgICAgZGF0YUxv
ZyhyaWdodCk7IFwKICAgICAgICAgICAgIGRhdGFMb2dGKCIpICglczolZCkuXG4iLCBfX0ZJTEVf
XywgX19MSU5FX18pOyBcCisgICAgICAgICAgICBkYXRhTG9nKCJcblxuXG4iKTsgXAorICAgICAg
ICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihudWxscHRyKS0+ZHVtcEJ5dGVjb2Rl
KCk7IFwKICAgICAgICAgICAgIGR1bXBHcmFwaElmQXBwcm9wcmlhdGUoKTsgXAogICAgICAgICAg
ICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVU
VFlfRlVOQ1RJT04sICNsZWZ0ICIgPT0gIiAjcmlnaHQpOyBcCiAgICAgICAgICAgICBDUkFTSCgp
OyBcCkBAIC01NjgsNiArNTcwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBPcGVyYW5kczxz
aXplX3Q+IGdldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0
SGVhZCk7CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IHNldExvY2FsUG9zaXRpb25zKE9w
ZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRt
cChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSkgfHwgYmxvY2stPnZh
cmlhYmxlc0F0SGVhZC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKKyAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxl
c0F0VGFpbC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSktPmFjY2Vzc2Vz
U3RhY2sobV9ncmFwaCkpOworCisgICAgICAgICAgICAgICAgZ2V0TG9jYWxQb3NpdGlvbnMudG1w
KGkpID0gbm90U2V0OworICAgICAgICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLnRtcChpKSA9
IG5vdFNldDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8
IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFw
aCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykK
QEAgLTcxNiw2ICs3MjYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
Zm9ybSA9PSBMb2FkU3RvcmUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5k
KAorICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2Fs
UG9zaXRpb25zLCBPcGVyYW5kOjp0bXAoaSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5kKAogICAgICAg
ICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25z
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwpAQCAtOTQ0LDcg
Kzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNrT3BlcmFuZCgKICAgICAgICAgQmFz
aWNCbG9jayogYmxvY2ssIE9wZXJhbmRzPHNpemVfdD4mIGdldExvY2FsUG9zaXRpb25zLAotICAg
ICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0aW9ucywgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQpCisgICAgICAgIE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBP
cGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAoZ2V0TG9jYWxQb3NpdGlvbnMub3Bl
cmFuZChvcGVyYW5kKSA9PSBub3RTZXQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZlNjUyYzk4
NDYwMWEyYjNiNzlkMzQuLjk0ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIxMGM4MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzcsNiArMTM3LDcg
QEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkdl
dEJ5VmFsSGlzdG9yeS5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0
QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1ZDYzOTBhYmEyNjM1
ZTk2MzU5Zjg5MGUyZWI3MWE5NS4uYzA3NzVkOGUxYjEwNTAyZGYwMWE3NGFmMGM2ZGViNGE4NzVj
YzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0
YS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCkBA
IC02Nyw2ICs2Nyw3IEBAIGNsYXNzIE1ldGFkYXRhCiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE1ldGFkYXRhKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgI3tvcC5vcGNvZGVJRH0KICAg
ICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5jYXBpdGFsaXplZF9uYW1lfSYjeyIgX19vcCIgaWYg
aW5pdHN9KSN7aW5pdHN9IHsgfQogCiAje2ZpZWxkc30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvU2VjdGlvbi5yYgppbmRleCA5YjVlZTkwOTZlZTcxYjFiMGQzZWQ3ZjdjZDE4ZGIw
NmZjYjM1ZmNmLi42YjVhOTQyZjA4MjM5YTUyZTA2OWU4MDlkYTI3N2E0ZWY4ZTY2OTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCkBAIC01Myw3ICs1Mywx
NyBAQCBjbGFzcyBTZWN0aW9uCiAgIGVuZAogCiAgIGRlZiBzb3J0IQotICAgICAgQG9wY29kZXMg
PSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5l
bXB0eT8gPyAwIDogMSA6IC0xIH0KKyAgICAgIEBvcGNvZGVzID0gQG9wY29kZXMuc29ydCB7IHxh
LCBifAorICAgICAgICAgIHJlc3VsdCA9IG5pbAorICAgICAgICAgIGlmIGEuY2hlY2twb2ludHMg
b3IgYi5jaGVja3BvaW50cworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hl
Y2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7YS5uYW1lfSIgaWYgYS5jaGVja3BvaW50
cyBhbmQgYS5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2RlcyB3
aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2IubmFtZX0iIGlmIGIuY2hl
Y2twb2ludHMgYW5kIGIubWV0YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAgIHJlc3VsdCA9IGEu
Y2hlY2twb2ludHMgPyBiLmNoZWNrcG9pbnRzID8gMCA6IC0xIDogMQorICAgICAgICAgIGVsc2lm
CisgICAgICAgICAgICAgIHJlc3VsdCA9IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5l
bXB0eT8gPyAwIDogMSA6IC0xIAorICAgICAgICAgIGVuZAorICAgICAgICAgIHJlc3VsdAorICAg
ICAgfQogICAgICAgQG9wY29kZXMuZWFjaCgmOmNyZWF0ZV9pZCEpCiAgIGVuZAogCkBAIC03Myw2
ICs4MywxOCBAQCBjbGFzcyBTZWN0aW9uCiAgICAgICBlbmQKIAogICAgICAgaWYgY29uZmlnWzpl
bWl0X2luX3N0cnVjdHNfZmlsZV0KKyAgICAgICAgICBpID0gMAorICAgICAgICAgIHdoaWxlIHRy
dWUKKyAgICAgICAgICAgICAgaWYgIW9wY29kZXNbaV0uY2hlY2twb2ludHMKKyAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiXG4iCisgICAgICAgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgTlVN
QkVSX09GXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVudF19X1dJVEhfQ0hFQ0tQT0lOVFMg
I3tpfVxuIgorICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZW5kCisKKyAg
ICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgZW5kCisgICAgICAgICAgb3V0IDw8ICJcbiIK
KwogICAgICAgICAgIG91dC53cml0ZSgiI2RlZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9f
bmFtZV9jb21wb25lbnRdfV9NRVRBREFUQV9TSVpFKG1hY3JvKSBcXFxuIikKICAgICAgICAgICBp
ID0gMAogICAgICAgICAgIHdoaWxlIHRydWUKQEAgLTg3LDYgKzEwOSw4IEBAIGNsYXNzIFNlY3Rp
b24KICAgICAgICAgICBlbmQKICAgICAgICAgICBvdXQgPDwgIlxuIgogCisKKwogICAgICAgICAg
IG91dC53cml0ZSgiI2RlZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25l
bnRdfV9NRVRBREFUQV9BTElHTk1FTlQobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAg
ICAgICAgICAgd2hpbGUgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA2NDUzOTEyN2I4Yzc0YzgyMDI5YjJiYjYxODBlNjk2OTcx
YTY0YmM4Li4zZmY5MmI0NTNhNzI5MjZkYzc0ZWNiZGNmNmUzMTRiY2ZiMzY4ZTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNDMs
MTM5ICs0MywxMzkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBDb2RlQmxvY2s7
Ci0gICAgY2xhc3MgRXZhbEV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
OwotICAgIGNsYXNzIFZNOwotICAgIGNsYXNzIEpTRnVuY3Rpb247Ci0gICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7Ci0gICAgY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKLSAgICBjbGFzcyBKU01v
ZHVsZVJlY29yZDsKLSAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgY2xhc3Mg
UHJvZ3JhbUV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7Ci0g
ICAgY2xhc3MgUmVnaXN0ZXI7Ci0gICAgY2xhc3MgSlNTY29wZTsKLSAgICBjbGFzcyBTb3VyY2VD
b2RlOwotICAgIGNsYXNzIFN0YWNrRnJhbWU7Ci0gICAgc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7
Ci0gICAgc3RydWN0IEhhbmRsZXJJbmZvOwotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLSAgICBz
dHJ1Y3QgUHJvdG9DYWxsRnJhbWU7Ci0KLSAgICBlbnVtIERlYnVnSG9va1R5cGUgewotICAgICAg
ICBXaWxsRXhlY3V0ZVByb2dyYW0sCi0gICAgICAgIERpZEV4ZWN1dGVQcm9ncmFtLAotICAgICAg
ICBEaWRFbnRlckNhbGxGcmFtZSwKLSAgICAgICAgRGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudCwK
LSAgICAgICAgV2lsbExlYXZlQ2FsbEZyYW1lLAotICAgICAgICBXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwKLSAgICAgICAgV2lsbEV4ZWN1dGVFeHByZXNzaW9uLAotICAgIH07Ci0KLSAgICBlbnVtIFN0
YWNrRnJhbWVDb2RlVHlwZSB7Ci0gICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAotICAgICAg
ICBTdGFja0ZyYW1lRXZhbENvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAotICAg
ICAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAotICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29k
ZQotICAgIH07Ci0KLSAgICBjbGFzcyBJbnRlcnByZXRlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFZNOwotCi0gICAgcHVibGljOgotICAgICAgICBJ
bnRlcnByZXRlcihWTSAmKTsKLSAgICAgICAgfkludGVycHJldGVyKCk7Ci0gICAgICAgIAorY2xh
c3MgQ29kZUJsb2NrOworY2xhc3MgRXZhbEV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CitjbGFzcyBWTTsKK2NsYXNzIEpTRnVuY3Rpb247CitjbGFzcyBKU0dsb2JhbE9iamVj
dDsKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworY2xh
c3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFzcyBSZWdpc3RlcjsKK2NsYXNzIEpTU2Nv
cGU7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgU3RhY2tGcmFtZTsKK3N0cnVjdCBDYWxsRnJh
bWVDbG9zdXJlOworc3RydWN0IEhhbmRsZXJJbmZvOworc3RydWN0IEluc3RydWN0aW9uOworc3Ry
dWN0IFByb3RvQ2FsbEZyYW1lOworCitlbnVtIERlYnVnSG9va1R5cGUgeworICAgIFdpbGxFeGVj
dXRlUHJvZ3JhbSwKKyAgICBEaWRFeGVjdXRlUHJvZ3JhbSwKKyAgICBEaWRFbnRlckNhbGxGcmFt
ZSwKKyAgICBEaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50LAorICAgIFdpbGxMZWF2ZUNhbGxGcmFt
ZSwKKyAgICBXaWxsRXhlY3V0ZVN0YXRlbWVudCwKKyAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24s
Cit9OworCitlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CisgICAgU3RhY2tGcmFtZUdsb2JhbENv
ZGUsCisgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAorICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAor
ICAgIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGUsCisgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKK307
CisKK2NsYXNzIEludGVycHJldGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIFZNOwor
CitwdWJsaWM6CisgICAgSW50ZXJwcmV0ZXIoVk0gJik7CisgICAgfkludGVycHJldGVyKCk7Cisg
ICAgCiAjaWYgRU5BQkxFKENfTE9PUCkKLSAgICAgICAgQ0xvb3BTdGFjayYgY2xvb3BTdGFjaygp
IHsgcmV0dXJuIG1fY2xvb3BTdGFjazsgfQorICAgIENMb29wU3RhY2smIGNsb29wU3RhY2soKSB7
IHJldHVybiBtX2Nsb29wU3RhY2s7IH0KICNlbmRpZgotICAgICAgICAKLSAgICAgICAgc3RhdGlj
IGlubGluZSBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEKTsKKyAgICAKKyAgICBzdGF0aWMgaW5s
aW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOwogCi0gICAgICAgIHN0YXRpYyBpbmxpbmUg
T3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlKTsKKyAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlE
IGdldE9wY29kZUlEKE9wY29kZSk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBzdGF0
aWMgYm9vbCBpc09wY29kZShPcGNvZGUpOworICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29k
ZSk7CiAjZW5kaWYKIAotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKLSAgICAgICAgSlNW
YWx1ZSBleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOwotICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29u
c3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwotICAgICAg
ICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBm
dW5jdGlvbiwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xp
c3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhl
Y3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsK
LQotICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiom
LCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBh
cmdjKTsKLQotICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENh
bGxGcmFtZSomLCBFeGNlcHRpb24qKTsKLSAgICAgICAgdm9pZCBub3RpZnlEZWJ1Z2dlck9mRXhj
ZXB0aW9uVG9CZVRocm93bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRXhjZXB0
aW9uKik7Ci0gICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVn
SG9va1R5cGUpOwotICAgICAgICBzdGF0aWMgU3RyaW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYs
IGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYpOwotCi0gICAgICAgIHZvaWQgZ2V0U3RhY2tUcmFj
ZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFt
ZXNUb1NraXAgPSAwLCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBlbnVtIEV4ZWN1dGlvbkZs
YWcgeyBOb3JtYWwsIEluaXRpYWxpemVBbmRSZXR1cm4gfTsKLSAgICAgICAgCi0gICAgICAgIHN0
YXRpYyBKU1ZhbHVlIGNoZWNrZWRSZXR1cm4oSlNWYWx1ZSByZXR1cm5WYWx1ZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKHJldHVyblZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIEpTT2JqZWN0
KiBjaGVja2VkUmV0dXJuKEpTT2JqZWN0KiByZXR1cm5WYWx1ZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKHJldHVyblZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFyZUZvclJlcGVh
dENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxsRnJhbWUqLCBK
U0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiwgY29u
c3QgQXJnTGlzdCYpOwotCi0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJl
Jik7Ci0KLSAgICAgICAgVk0mIG1fdm07CisgICAgSlNWYWx1ZSBleGVjdXRlUHJvZ3JhbShjb25z
dCBTb3VyY2VDb2RlJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iaik7CisgICAg
SlNWYWx1ZSBleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOworICAgIEpTVmFsdWUgZXhlY3V0
ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25z
dCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNP
YmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rp
b24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jiwg
SlNWYWx1ZSBuZXdUYXJnZXQpOworICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSos
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKworICAgIHZv
aWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYg
Zmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOworCisgICAg
TkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB1bndpbmQoVk0mLCBDYWxsRnJhbWUqJiwgRXhjZXB0
aW9uKik7CisgICAgdm9pZCBub3RpZnlEZWJ1Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRXhjZXB0aW9uKik7CisgICAgTkVWRVJfSU5M
SU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rVHlwZSk7CisgICAgc3RhdGljIFN0
cmluZyBzdGFja1RyYWNlQXNTdHJpbmcoVk0mLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mKTsK
KworICAgIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFt
ZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFtZXNUb1NraXAgPSAwLCBzaXplX3QgbWF4U3RhY2tTaXpl
ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisKK3ByaXZhdGU6CisgICAg
ZW51bSBFeGVjdXRpb25GbGFnIHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJuIH07CisgICAg
CisgICAgc3RhdGljIEpTVmFsdWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVyblZhbHVlKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHJldHVyblZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJldHVy
blZhbHVlOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4o
SlNPYmplY3QqIHJldHVyblZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJldHVyblZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIENhbGxGcmFtZUNs
b3N1cmUgcHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1l
KiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBKU1Njb3BlKiwgY29uc3QgQXJnTGlzdCYpOworCisgICAgSlNWYWx1ZSBleGVjdXRl
KENhbGxGcmFtZUNsb3N1cmUmKTsKKworICAgIFZNJiBtX3ZtOwogI2lmIEVOQUJMRShDX0xPT1Ap
Ci0gICAgICAgIENMb29wU3RhY2sgbV9jbG9vcFN0YWNrOworICAgIENMb29wU3RhY2sgbV9jbG9v
cFN0YWNrOwogI2VuZGlmCi0gICAgICAgIAorICAgIAogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpCiAjaWYgIUVOQUJMRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEFTU0VS
VF9FTkFCTEVECi0gICAgICAgIHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNv
ZGVJRFRhYmxlKCk7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlELgorICAgIHN0YXRpYyBIYXNo
TWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNvZGVJRFRhYmxlKCk7IC8vIE1hcHMgT3Bjb2RlID0+
IE9wY29kZUlELgogI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8
fCBBU1NFUlRfRU5BQkxFRAogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMp
Ci0gICAgfTsKLQotICAgIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSos
IEVDTUFNb2RlKTsKLQotICAgIGlubGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJn
cyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQotICAgIHsKLSAgICAgICAgLy8gV2Ugd2Fu
dCB0aGUgbmV3IGZyYW1lIHRvIGJlIGFsbG9jYXRlZCBvbiBhIHN0YWNrIGFsaWduZWQgb2Zmc2V0
IHdpdGggYSBzdGFjawotICAgICAgICAvLyBhbGlnbmVkIHNpemUuIEFsaWduIHRoZSBzaXplIGhl
cmUuCi0gICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKAotICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAg
ICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXpl
SW5SZWdpc3RlcnMpIC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7Ci0KLSAgICAg
ICAgLy8gQWxpZ24gdGhlIGZyYW1lIG9mZnNldCBoZXJlLgotICAgICAgICB1bnNpZ25lZCBwYWRk
ZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKLSAgICAgICAg
ICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBudW1Vc2VkU3RhY2tT
bG90cyArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXpl
SW5SZWdpc3RlcnMpOwotICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1l
LT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB1
bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBhcmd1bWVudHMs
IHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1heEFyZ3VtZW50cyA9IDB4MTAwMDA7Ci0gICAgdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFy
YXJncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIFZNJiwgSlNWYWx1ZSBhcmd1bWVudHMs
IHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7
Ci0gICAgdW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSosIFZNJiwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpOwotICAgIHZv
aWQgbG9hZFZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBmaXJzdEVsZW1lbnREZXN0
LCBKU1ZhbHVlIHNvdXJjZSwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwotICAg
IHZvaWQgc2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWND
YWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90
IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBWYXJh
cmdzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVy
LCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3Vt
ZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAg
dm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCB1aW50MzJfdCBsZW5ndGgpOwot
ICAgIHZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFs
dWUgdGhpc1ZhbHVlLCB1aW50MzJfdCBsZW5ndGgpOworfTsKKworSlNWYWx1ZSBldmFsKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOworCitpbmxpbmUgQ2FsbEZyYW1lKiBj
YWxsZWVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVz
ZWRTdGFja1Nsb3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKK3sKKyAg
ICAvLyBXZSB3YW50IHRoZSBuZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3RhY2sgYWxp
Z25lZCBvZmZzZXQgd2l0aCBhIHN0YWNrCisgICAgLy8gYWxpZ25lZCBzaXplLiBBbGlnbiB0aGUg
c2l6ZSBoZXJlLgorICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mKAorICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAgICAg
ICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVn
aXN0ZXJzKSAtIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworCisgICAgLy8gQWxp
Z24gdGhlIGZyYW1lIG9mZnNldCBoZXJlLgorICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1l
T2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAorICAgICAgICBzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLAorICAgICAgICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAgIHJl
dHVybiBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2Fs
bGVlRnJhbWVPZmZzZXQpOworfQorCit1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKK3N0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4QXJndW1lbnRzID0gMHgxMDAwMDsKK3Vuc2lnbmVk
IHNpemVGcmFtZUZvclZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTSYsIEpT
VmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpOwordW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIFZNJiwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xv
dHMpOwordm9pZCBsb2FkVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUqIGZpcnN0RWxl
bWVudERlc3QsIEpTVmFsdWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0
aCk7Cit2b2lkIHNldHVwVmFyYXJnc0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBl
eGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50
MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBWYXJh
cmdzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVy
LCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3Vt
ZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lk
IHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBl
eGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lk
IHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgdWludDMyX3QgbGVuZ3RoKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2Ex
Nzg0MDhhNWIwZi4uOGIzYTIzOGE0ZGFmMWZjNjc5MTQwZDhiYmVjNzcwOWI4NTY4YmI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgbV9sYWJlbHNbbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpXSA9IGxhYmVsKCk7CiAKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3Nl
KQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1f
Ynl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5
dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwog
CkBAIC00MzgsNiArNDM4LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2ludGVybmFsX2ZpZWxkKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2ludGVybmFsX2ZpZWxkKQogCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRv
cl9vcGVuKQorICAgICAgICBERUZJTkVfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBE
RUZJTkVfT1Aob3BfcmV0KQogICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQogICAgICAgICBE
RUZJTkVfT1Aob3BfdW5zaWduZWQpCkBAIC01MjUsNyArNTI4LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIHJhcmVDYXNlUHJvZmlsZSA9ICZyYXJl
Q2FzZVByb2ZpbGVzLmF0KGJ5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CiAKICAgICAgICAg
aWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklU
IGVtaXR0aW5nIHNsb3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAi
LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUg
SklUIGVtaXR0aW5nIHNsb3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNl
dCAiLCAobG9uZylkZWJ1Z09mZnNldCgpKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIp
CiAgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVTbG93UGF0aChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCksIGxhYmVsKCkpOwpAQCAtNTg5LDYgKzU5Miw5IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfZnJvbV9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF90
b19zY29wZSkKIAorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3Jfb3BlbikK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2l0ZXJhdG9yX25leHQpCisKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodW5zaWduZWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9TTE9XX09QKGluYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZGVjKQpAQCAt
NjI2LDggKzYzMiw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIs
IGZpcnN0VG8sICIgc2xvdzogIiwgaXRlciAtIG1fc2xvd0Nhc2VzLmJlZ2luKCksICJcbiIpOwog
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xvd0Nhc2Vz
LmVuZCgpIHx8IGZpcnN0VG8gIT0gaXRlci0+dG8sICJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBp
biBzbG93IGNhc2UgY29kZWdlbi4iKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKGZpcnN0VG8gPT0gKGl0ZXIgLSAxKS0+dG8sICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4g
c2xvdyBjYXNlIGNvZGVnZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FH
RShpdGVyID09IG1fc2xvd0Nhc2VzLmVuZCgpIHx8IGZpcnN0VG8ub2Zmc2V0KCkgIT0gaXRlci0+
dG8ub2Zmc2V0KCksICJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdl
bi4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8ub2Zmc2V0
KCkgPT0gKGl0ZXIgLSAxKS0+dG8ub2Zmc2V0KCksICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4g
c2xvdyBjYXNlIGNvZGVnZW4uIik7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRW1pdFBy
b2ZpbGluZygpKQogICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFk
ZHJlc3MoJnJhcmVDYXNlUHJvZmlsZS0+bV9jb3VudGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCA3MDczNTVjNmQ3MTE4MmFhMDcyOWEyNzQ5MTAwNGY0NWUxZWE2YWMxLi44M2FlMWE3
YjY5OGQ2OTMzZGJiOGEwMzcxOTA0OWVjMjI1ODE4Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKQEAgLTI5Nyw2ICsyOTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKIAorICAgICAgICB2b2lkIGNoZWNrcG9p
bnRSZWFjaGVkKCk7CisgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50
KEp1bXApOworCiAgICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoSnVtcCk7CiAgICAgICAgIHZvaWQg
YWRkU2xvd0Nhc2UoY29uc3QgSnVtcExpc3QmKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZSgp
OwpAQCAtNjc2LDYgKzY3OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVt
aXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CiAKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisKICAg
ICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChjb25zdCBJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNp
Z25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQp
OwogCkBAIC05MTEsNiArOTE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVmVjdG9y
PENhbGxSZWNvcmQ+IG1fY2FsbHM7CiAgICAgICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7Cisg
ICAgICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsK
ICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CiAgICAgICAg
IFZlY3RvcjxKSVRHZXRCeVZhbEdlbmVyYXRvcj4gbV9nZXRCeVZhbHM7CiAgICAgICAgIFZlY3Rv
cjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGUxZTU2NWRjNTI0OWY2YWNmZGFhMjRi
ZmZiNDQ3MWZmY2IyMGI4NjYuLjA5MWVlOTM4NTMwNWQzNzk3YzJhZGViNmEzNjEwYmUwMzU5YjEy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjksNiArMjksOCBA
QAogI2lmIFVTRShKU1ZBTFVFNjQpCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCeXRl
Y29kZVByb2ZpbGVGb3IuaCIKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5o
IgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgpAQCAtNDIsOCArNDQsOCBAQAogI2luY2x1ZGUgIlNl
dHVwVmFyYXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRl
ICJUaHVua0dlbmVyYXRvcnMuaCIKLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
IAorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNTEsNyArNTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjplbWl0
UHV0Q2FsbFJlc3VsdChjb25zdCBPcCYgYnl0ZWNvZGUpCiB7CiAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOwotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZp
cnR1YWxSZWdpc3RlcigpLCByZWdUMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAt
NjEsMjAgKzYzLDIxIEBAIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAsIHZvaWQ+CiBKSVQ6OmNvbXBpbGVT
ZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKIHsKKyAgICB1bnNp
Z25lZCBjaGVja3BvaW50ID0gbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJn
Q291bnQgPSBieXRlY29kZS5tX2FyZ2M7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRp
Y19jYXN0PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBpbnQgYXJnQ291bnRJbmNsdWRpbmdU
aGlzID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnQp
OworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0
SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAgICBpZiAoT3A6
Om9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsg
Q2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkpLCByZWdUMCk7CiAgICAg
ICAgIEp1bXAgZG9uZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAg
ICAgIHN0b3JlMzIocmVnVDAsIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxl
LmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAs
IGFycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludCkuYWRkcmVzc09mTGFzdFNlZW5T
dHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIAogICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihh
cmdDb3VudEluY2x1ZGluZ1RoaXMpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSk7CiB9CiAKIApAQCAtMjA3LDcgKzIxMCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxs
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5k
CiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRl
Y29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVl
ID0gYnl0ZWNvZGUubV9jYWxsZWU7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGNhbGxl
ZUZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKICAgICAvKiBD
YWxsZXIgYWx3YXlzOgogICAgICAgICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIgdG8gY2Fs
bGVlIGNhbGxGcmFtZS4KQEAgLTIzNCw5ICsyMzcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2Fs
bChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0lu
ZAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhv
bGRzIGNhbGxlZS4KICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKLSAgICBpZiAoY29tcGlsZUNh
bGxFdmFsKGJ5dGVjb2RlKSkgeworICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtl
ZEZ1bmN0aW9uQ2hlY2s7CiAgICAgSnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChO
b3RFcXVhbCwgcmVnVDAsIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1Q
dHIobnVsbHB0cikpOwpAQCAtMzgwLDYgKzM4MiwxODQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2NvbnN0cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2wKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRv
KiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlv
bi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3Q8TmFycm93PjsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9v
cGVuX3RyeV9mYXN0PFdpZGUxNj47CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdDxXaWRlMzI+OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKyAgICBzZXR1cEFyZ3VtZW50
czxkZWNsdHlwZSh0cnlGYXN0RnVuY3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAg
ICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVt
cCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIs
IFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YykpKTsKKworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBt
X2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8g
Y2FsbCByZXN1bHQgKGl0ZXJhdG9yKSBpcyBpbiByZWdUMAorCisgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAmdm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdl
bigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIGZhc3RDYXNl
LmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVP
cENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExp
bmtJbmZvSW5kZXgrKyk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAo
KSk7CisKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
bmV4dFZSZWcgPSBieXRlY29kZS5tX25leHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50
ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklU
OjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQor
eworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7
CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Cisg
ICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5z
dHJ1Y3Rpb24tPndpZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRv
cl9uZXh0X3RyeV9mYXN0PE5hcnJvdz47CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1cm4gaXRl
cmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMTY+OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJu
IGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTMyPjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCwgcmVnVDApOworICAgIEp1bXAgZ2Vu
ZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KHJlZ1QwKTsKKyAgICBzZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZSh0cnlGYXN0RnVuY3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBm
YXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRy
dXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykp
KTsKKworICAgIGdlbmVyaWNDYXNlLmxpbmsodGhpcyk7CisgICAgb3I4KFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDx1aW50OF90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSksIEFic29sdXRlQWRk
cmVzcygmbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMpKTsKKyAgICBjb21w
aWxlT3BDYWxsPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKKyAgICBjaGVja3BvaW50UmVhY2hlZCgpOworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRv
bmUsIHZhbHVlIH0gSlNPYmplY3QpIGluIHJlZ1QwCisKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSBy
ZWdUMDsKKyAgICBHUFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QyOworICAgIEdQUlJlZyBkb25l
R1BSID0gcmVnVDE7CisgICAgLy8gaXRlclJlc3VsdEdQUiB3aWxsIGdldCB0cmFzaGVkIGJ5IHRo
ZSBmaXJzdCBnZXQgYnkgaWQgYmVsb3cuCisgICAgbW92ZSh2YWx1ZUdQUiwgaXRlclJlc3VsdEdQ
Uik7CisKKyAgICB7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyUmVz
dWx0R1BSKTsKKworICAgICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpOworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFk
ZCh2YWx1ZUdQUik7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdz
LAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRl
clJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
KyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwor
CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZG9uZSwgZG9uZUdQUik7CisgICAgICAgIGNo
ZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgfQorCisKKyAgICB7CisgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMSA9IHJlZ1QyOworICAgICAgICBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKKyAgICAgICAg
Y29uc3QgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBmYWxzZTsKKyAg
ICAgICAgSnVtcExpc3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFs
dWVSZWdzKGRvbmVHUFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKTsKKworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0
ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmlt
cGwoKSksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwor
ICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRh
dGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZh
bHVlR1BSKTsKKworICAgICAgICBpdGVyYXRpb25Eb25lLmxpbmsodGhpcyk7CisgICAgfQorCisg
ICAgZmFzdENhc2UubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Cisg
ICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRl
ciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNr
cG9pbnQoanVtcCgpKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck5leHQ+KCk7CisgICAgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9uZVZSZWcg
PSBieXRlY29kZS5tX2RvbmU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7
CisKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgSnVtcExpc3Qgbm90
T2JqZWN0OworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVz
dWx0R1BSKSk7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRl
clJlc3VsdEdQUikpOworCisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCku
cHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIAorICAgICAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRz
KCkpOworCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2Fs
bCk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKKyAg
ICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7Cisg
ICAgICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAg
IG5vdE9iamVjdC5saW5rKHRoaXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRo
cm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpKTsKKyAgICB9CisKKyAgICB7ICAgCisgICAgICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29k
ZS5tX3ZhbHVlOworICAgICAgICBHUFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QwOworCisgICAg
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUu
aW1wbCgpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21f
Z2V0QnlJZEluZGV4KytdOworCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworCisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVW
UmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQorCit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1
NjU1MzNmNC4uMjdhNTdmNGVlMzYxNjRhY2U4ZTM5ZjM2OGNlNzY1YmYxNWRkZmM3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFn
bWEgb25jZQogCiAjaWYgRU5BQkxFKEpJVCkKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3Iu
aCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNSw3ICsx
MDcsNyBAQCBBTFdBWVNfSU5MSU5FIEpJVDo6Q2FsbCBKSVQ6OmVtaXROYWtlZFRhaWxDYWxsKENv
ZGVQdHI8Tm9QdHJUYWc+IHRhcmdldCkKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRl
VG9wQ2FsbEZyYW1lKCkKIHsKLSAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCkuYml0cygpOworICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKS5iaXRzKCk7CiAgICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90
IGNsZWFyIHRoYXQgdGhpcyBpcyBuZWVkZWQuIEpJVE9wZXJhdGlvbnMgdGVuZCB0byB1cGRhdGUg
dGhlIHRvcCBjYWxsIGZyYW1lIG9uCkBAIC0xODMsNiArMTg1LDI1IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKSVQ6Omhhc0FueVNsb3dDYXNlcyhWZWN0b3I8U2xvd0Nhc2VFbnRyeT4mIHNsb3dDYXNl
cywgVmVjdG9yCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBKSVQ6OmNoZWNr
cG9pbnRSZWFjaGVkKCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRl
eCwgIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0
aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICBtX2J5
dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9i
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0byByZXN1bHQgPSBtX2No
ZWNrcG9pbnRMYWJlbHMuYWRkKG1fYnl0ZWNvZGVJbmRleCwgbGFiZWwoKSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSklU
OjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCBqdW1wKQoreworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRl
Y29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsg
MSk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX2NoZWNrcG9pbnRMYWJlbHMuZmluZChtX2J5dGVjb2Rl
SW5kZXgpOworICAgIEFTU0VSVChpdGVyICE9IG1fY2hlY2twb2ludExhYmVscy5lbmQoKSk7Cisg
ICAganVtcC5saW5rVG8oaXRlci0+dmFsdWUsIHRoaXMpOworfQorCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjphZGRTbG93Q2FzZShKdW1wIGp1bXApCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJ
bmRleCk7IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2Nv
bGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQuCkBAIC0z
MTksNyArMzQwLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKE1l
dGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEubV9wcm9m
aWxlKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHZhbHVlUHJvZmlsZUZvcihtZXRhZGF0
YSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVy
SUQgaW5kZXhpbmdUeXBlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZTE1MGNjNjYxMDc2MmJh
Y2M4YmU0MjIwNzNhYWQ2NGFiMzExOTEuLmE1ZTJhMjQ3Y2YxNTRkYTQ2ZWIzM2RmYmJmMGUzMzYw
ZDM2ZjU1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtMTM0LDYgKzEzNCwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dT
dGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIEFTU0VS
VCh2bS50YXJnZXRNYWNoaW5lUENGb3JUaHJvdyk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7Cit9CisKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKaW5kZXggOGVmYjViNWFjOTgwYWVlNmM1NTIzNDQzN2M5MDI4OTU4OTAyMjY2NS4uOWZj
YzQxZGVjNDU4MmM5NjUyOTIzNjU1ZGE4ZjMwMjY5NWRmNzAxOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcihWTSopIFdURl9JTlRFUk5B
TDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZNSGFuZGxlRXhjZXB0aW9uKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2Jq
ZWN0KikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRl
cmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENvZGVC
bG9jayopIFdURl9JTlRFUk5BTDsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDhkZWE3ZjI3OGU3NjYy
ZTUwMzE0Y2ViOWIwODMzOWY4N2JmZGE0OTcuLjhiYjE4YzIxZjQyYTlmNTdjZGMwNTNmZGRlOGM0
NTAxZDQ4ZTNjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQ
cm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGUuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgi
CkBAIC04Miw2ICs4Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
OyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOyBcCiAgICAgU2xvd1BhdGhGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwKKyAgICBkYXRhTG9nTG5JZihMTElOVF9UUkFD
SU5HICYmIE9wdGlvbnM6OnRyYWNlTExJbnRTbG93UGF0aCgpLCAiQ2FsbGluZyBzbG93IHBhdGgg
IiwgV1RGX1BSRVRUWV9GVU5DVElPTik7IFwKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNjkzLDcgKzY5NSw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfZGlyZWN0KQogfQogCiAKLXN0
YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFBy
b3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitzdGF0aWMgdm9pZCBz
ZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEdldEJ5
SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAKQEAgLTc0MSw0NCArNzQzLDM5IEBAIHN0
YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgQ29kCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgpKQot
ICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0VW5zZXRNb2RlKHN0cnVjdHVy
ZSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1ZhbHVlKCkpOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9m
ZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldFByb3RvTG9h
ZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Quc2xvdEJhc2UoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKIH0KIAotCi1MTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQorc3RhdGljIEpTVmFsdWUgcGVyZm9y
bUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAg
IExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEJ5SWQ+KCk7
Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0KTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKLSAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKLSAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kc3QpID0gcmVzdWx0Owot
ICAgIAorICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKwogICAgIGlm
ICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCiAgICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwo
KQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKICAgICAgICAgJiYgIXNsb3QuaXNVbnNl
dCgpKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlE
OwotICAgICAgICAgICAgc3dpdGNoIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1vZGUpIHsKICAgICAgICAgICAgIGNhc2UgR2V0
QnlJZE1vZGU6OkRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
ICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6VW5z
ZXQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQ6Ci0gICAgICAgICAg
ICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRN
b2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRh
dGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSAwOwpA
QCAtNzk5LDM1ICs3OTYsMTA5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWQpCiAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0g
YmFzZVZhbHVlKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQg
dGhlIG9sZCBjYWNoZS4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFy
VG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOworICAgICAgICAgICAgbWV0YWRhdGEuY2xlYXJU
b0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CiAKICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhl
IHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgotICAgICAgICAgICAgbWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOworICAgICAgICAg
ICAgbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogICAgICAgICAKICAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiAh
c3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0
cnVjdHVyZS0+aWQoKTsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5k
ZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgp
OworICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWSht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiBzbG90Lmlz
VmFsdWUoKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5oaXRDb3Vu
dEZvckxMSW50Q2FjaGluZyAmJiBzbG90LmlzVmFsdWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VS
VChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKCEoLS1t
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCisgICAgICAg
ICAgICBpZiAoISgtLW1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKICAgICAgICAg
ICAgICAgICBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShnbG9iYWxPYmplY3QsIHZtLCBjb2Rl
QmxvY2ssIHBjLCBtZXRhZGF0YSwgYmFzZUNlbGwsIHNsb3QsIGlkZW50KTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFz
ZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAg
ewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1v
ZGUoKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9k
ZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZSh2bSkpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Cisg
ICAgICAgICAgICBtZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVT
dHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQog
ICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAgIH0KIAotICAgIExM
SU5UX1BST0ZJTEVfVkFMVUUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEJ5SWQ+KCk7CisgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMs
IGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YSk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Cit9CisKK0xM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4
dCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4
dCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xv
dyBvcGVuX2dldF9uZXh0Iik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0
b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1faXRlcmF0b3IpOworICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0ZXIgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRf
Z2V0X2RvbmUiKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5leHQ+
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwor
ICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1ZSBz
aW5jZSBpdCdzIGVpdGhlciBub3QgbGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUgb3IgaXQncyBnb2lu
ZyB0byBiZSBmaWxsZWQgbGF0ZXIuCisgICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBSZWdpc3RlciYgZG9uZVJl
Z2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CisKKyAgICBp
ZiAoIWl0ZXJhdG9yUmV0dXJuLmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5v
dCBhbiBvYmplY3QuIl9zKSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdl
dEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJv
cGVydHlOYW1lcy0+ZG9uZSwgbWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBkb25lUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2RvbmVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0
X2dldF92YWx1ZSIpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4
dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7
CisgICAgLy8gV2UgdXNlIG1fdmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVl
IHRtcCBzaW5jZSBpdCdzIGVpdGhlciBub3QgbGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUgb3IgaXQn
cyBnb2luZyB0byBiZSBmaWxsZWQgbGF0ZXIuCisgICAgUmVnaXN0ZXImIHZhbHVlUmVnaXN0ZXIg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgSlNWYWx1ZSBp
dGVyYXRvclJldHVybiA9IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOworCisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
aXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVl
TW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICB2YWx1ZVJl
Z2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1
ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgTExJ
TlRfRU5EKCk7CiB9CiAKKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9p
ZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTU2Myw3ICsxNjM0LDcgQEAgaW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2kKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1pbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgT3AmJiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4ID0gMCkKIHsKICAgICAvLyBUaGlz
IG5lZWRzIHRvOgogICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KQEAgLTE1NzEsMTYgKzE2
NDIsMTYgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAvLyAtIElmIHBvc3NpYmxlLCBs
aW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgogICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2Yg
bWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgogICAg
IAotICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2NhbGxlZSk7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGNhbGxlZUZvcihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAgICAgCi0g
ICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAtIGJ5dGVjb2RlLm1fYXJndjsK
KyAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gc3RhY2tPZmZzZXRJblJl
Z2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCk7CiAgICAgCi0gICAgY2Fs
bGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGJ5dGVjb2RlLm1fYXJnYyk7
CisgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsKICAgICBj
YWxsZWVGcmFtZS0+dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZXJGcmFtZShj
YWxsRnJhbWUpOwogICAgIAogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKLSAgICByZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxs
ZWVBc1ZhbHVlLCAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENh
bGwoY2FsbGVlRnJhbWUsIGtpbmQsIGNhbGxlZUFzVmFsdWUsICZjYWxsTGlua0luZm9Gb3IobWV0
YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY2FsbCkKQEAgLTE2MDQsNiArMTY3NSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY29uc3RydWN0KQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBn
ZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wQ29uc3RydWN0PigpLCBD
b2RlRm9yQ29uc3RydWN0KSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9pdGVyYXRvcl9vcGVuX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgb3Bl
bl9jYWxsIik7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0Nh
bGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSwgQ29kZUZv
ckNhbGwsIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKTsKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKworLy8gICAgZGF0YUxvZ0xu
KCJDYWxsaW5nIHNsb3cgbmV4dF9jYWxsIik7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcEl0ZXJh
dG9yTmV4dD4oKSwgQ29kZUZvckNhbGwsIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCkpOwor
fQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJn
cykKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTk5MCw2ICsyMDgzLDQ0IEBAIHN0YXRpYyB2
b2lkIGhhbmRsZVZhcmFyZ3NDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTR2xvYmFsT2JqZWN0CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZHN0
KSA9IHJlc3VsdDsKIH0KIAorc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2lu
dChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBPcEl0ZXJhdG9yT3BlbiYgYnl0ZWNvZGUpCit7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgpOworICAgIGlmICgh
aXRlcmF0b3IuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3Qu
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEpTVmFsdWUgbmV4dCA9IGl0ZXJh
dG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGJ5dGVjb2RlLm1fbmV4dCkgPSBuZXh0OworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRv
ck5leHRDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wSXRlcmF0b3JOZXh0JiBieXRlY29kZSwgQ2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGUmIHNpZGVTdGF0ZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdW5zaWduZWQgY2hlY2twb2ludEluZGV4ID0gc2lk
ZVN0YXRlLmJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOworCisgICAgYXV0byYgdmFsdWVSZWdp
c3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBhdXRv
IGl0ZXJhdG9yUmVzdWx0T2JqZWN0ID0gc2lkZVN0YXRlLnRtcHNbT3BJdGVyYXRvck5leHQ6Om5l
eHRSZXN1bHRdOworICAgIGF1dG8gbmV4dCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29k
ZS5tX25leHQpLmpzVmFsdWUoKTsgICAgCisKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UobmV4dCwgIldlIHNob3VsZCBub3QgT1NSIGV4aXQgdG8gYSBjaGVja3BvaW50IGZvciBmYXN0
IGNhc2VzLiIpOworCisgICAgYXV0byYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CisgICAgaWYgKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJh
dG9yTmV4dDo6Z2V0RG9uZSkgeworICAgICAgICBkb25lUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3Vs
dE9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICBzY29w
ZS5yZWxlYXNlKCk7CisgICAgaWYgKGRvbmVSZWdpc3Rlci5qc1ZhbHVlKCkudG9Cb29sZWFuKGds
b2JhbE9iamVjdCkpCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBqc1VuZGVmaW5lZCgpOworICAg
IGVsc2UKKyAgICAgICAgdmFsdWVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlKTsKK30KKwogaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBkaXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIHBjKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFj
b2RlQmxvY2stPnZtKCkuZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKQEAgLTIwNjYsNiArMjE5
NywxNSBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfY2hlY2twb2lu
dF9vc3JfZXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZQogICAgICAgICBoYW5kbGVWYXJhcmdzQ2hl
Y2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcFRhaWxDYWxsVmFy
YXJncz4oKSwgKnNpZGVTdGF0ZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBv
cF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQo
dm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAg
ICAgIGhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LCBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCksICpzaWRlU3RhdGUuZ2V0KCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTIxMDMsNiArMjI0MywxMiBAQCBleHRl
cm4gIkMiIHZvaWQgbGxpbnRfd3JpdGVfYmFycmllcl9zbG93KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0NlbGwqIGNlbGwpCiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY2VsbCk7CiB9CiAKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQorewor
ICAgIGRhdGFMb2dMbihKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKK30KKwogZXh0ZXJuICJDIiBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgbGxpbnRfY3Jhc2goKQogewogICAgIENSQVNIKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KaW5kZXggYjU2OTljMzBkMmNkYWZhNGY5M2MzYTlmMDk4MDU3MWM4MTc2N2MxYS4uZjlh
MzRkYWIzNmQ5ZmE1Mjc1NmExOThiMmQ3NGY3NTJjNTM4YWMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTAzMiw3
ICsxMDMyLDcgQEAgbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNp
emUpCiAgICAgc2l6ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBt
YWNybyAoZikgZigpIGVuZCkKIGVuZAogCi1tYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQor
bWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBj
YWxsUHRyVGFnKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNsb29wQ2Fs
bEpTRnVuY3Rpb24gY2FsbGVlCiAgICAgZWxzZQpAQCAtMTA0NSwxMSArMTA0NSwxMSBAQCBtYWNy
byBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgY2FsbGVlLCBjYWxsUAogICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhl
Y3V0aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAogICAgICAgICAjIGNyYXNoZXMuCiAgICAg
ICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgICAgICBkaXNwYXRjaEFmdGVy
Q2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgICAgICBkaXNwYXRjaEFmdGVy
Q2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdp
c3RlciwgZGlzcGF0Y2gpCiAgICAgZW5kCiAgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9w
Y29kZU5hbWUsIHNpemUpCiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAg
ZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICBkaXNw
YXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiBlbmQKIAogbWFjcm8gcHJlcGFyZUZvclJlZ3VsYXJD
YWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKQEAgLTExMTcsNyAr
MTExNywxMSBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIs
IHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKIGVuZAogCi1t
YWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorbWFjcm8gc2xvd1BhdGhGb3JDb21tb25DYWxs
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVw
YXJlQ2FsbCkKKyAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQor
ZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQ
YXRoLCBwcmVwYXJlQ2FsbCkKICAgICBjYWxsQ2FsbFNsb3dQYXRoKAogICAgICAgICBzbG93UGF0
aCwKICAgICAgICAgIyBUaG9zZSBhcmUgcjAgYW5kIHIxCkBAIC0xMTI2LDcgKzExMzAsNyBAQCBt
YWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcgogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwg
c3AKICAgICAgICAgICAgIHByZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgU2xvd1BhdGhQ
dHJUYWcpCiAgICAgICAgIC5kb250VXBkYXRlU1A6Ci0gICAgICAgICAgICBjYWxsVGFyZ2V0RnVu
Y3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNh
bGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9w
Y29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKICAgICAg
ICAgZW5kKQogZW5kCiAKQEAgLTIwMTYsNyArMjAyMCw3IEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mo
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgZnJhbWVTbG93UGF0aCwg
c2xvCiAgICAgICAgICAgICBzdWJwIHIxLCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKICAgICAg
ICAgZW5kCiAgICAgZW5kCi0gICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBzbG93UGF0
aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwg
c2xvd1BhdGgsIHByZXBhcmVDYWxsKQogZW5kCiAKIApAQCAtMjA3OSw3ICsyMDgzLDcgQEAgZW5k
KQogIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgogCiBfbGxp
bnRfb3BfY2FsbF9ldmFsOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNv
bW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF9uYXJyb3csCiAgICAgICAgIG5hcnJvdywK
ICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwODgsNyArMjA5Miw3IEBAIF9sbGludF9vcF9jYWxs
X2V2YWw6CiAgICAgICAgIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50X29wX2NhbGxf
ZXZhbF93aWRlMTY6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9u
Q2FsbCgKICAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUxNiwKICAgICAgICAgd2lkZTE2LAogICAg
ICAgICBPcENhbGxFdmFsLApAQCAtMjA5Nyw3ICsyMTAxLDcgQEAgX2xsaW50X29wX2NhbGxfZXZh
bF93aWRlMTY6CiAgICAgICAgIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50X29wX2Nh
bGxfZXZhbF93aWRlMzI6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29t
bW9uQ2FsbCgKICAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUzMiwKICAgICAgICAgd2lkZTMyLAog
ICAgICAgICBPcENhbGxFdmFsLApAQCAtMjEwNyw3ICsyMTExLDcgQEAgX2xsaW50X29wX2NhbGxf
ZXZhbF93aWRlMzI6CiAKIAogY29tbW9uT3AobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQsIG1h
Y3JvICgpIGVuZCwgbWFjcm8gKHNpemUpCi0gICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BD
YWxsRXZhbCwgbWFjcm8gKCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxFdmFs
LCBtX3Byb2ZpbGUsIG1fZHN0LCBtYWNybyAoKQogICAgICAgICBkaXNwYXRjaE9wKHNpemUsIG9w
X2NhbGxfZXZhbCkKICAgICBlbmQpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGFlMmUzNzczZmZkY2M0
MDY3NGM3YWFjMGMxZDRmZTZjZDBmYjc4NTkuLjg2MTM2ZTg1N2M5Zjc4MjJiMjQ0NmM2MjZiZmRj
N2EzZGZiYjJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02OCwyNiArNjgsMjYgQEAgbWFjcm8gbWFrZVJl
dHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQog
ICAgIGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0
YWRhdGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MSwgdDMp
CisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQog
ICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQog
ICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0c1ttZXRhZGF0YV0KK21hY3JvIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCisg
ICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUu
bV9idWNrZXRzW21ldGFkYXRhXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRl
Y29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3Bh
dGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0Vmly
dHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2FkUEMoKQogICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVy
W1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2RzdCwgdDEpCisgICAgZ2V0
KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0MSkKICAgICBzdG9yZXEg
cjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQx
KQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMCkKKyAgICB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjApCiAgICAgZGlzcGF0Y2go
KQogZW5kCiAKQEAgLTEzNDAsNyArMTM0MCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAg
ICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9wR2V0QnlJ
ZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVj
dCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwg
dDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xMzQ4
LDUzICsxMzQ4LDU5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwg
T3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgZGlzcGF0Y2goKQog
ZW5kKQogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyMgVGhlIGJhc2Ugb2Jq
ZWN0IGlzIGV4cGVjdGVkIGluIHQzCittYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVT
dHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6
ZSwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9kZVt0Ml0sIHQxCi0gICAgZ2V0KG1f
YmFzZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAu
b3BHZXRCeUlkU2xvdykKKyAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKIAogLm9wR2V0QnlJZERlZmF1bHQ6CiAgICAgYmJu
ZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9h
ZAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURb
dDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0
W3QyXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRh
dGFOYW1lJS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQx
LCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1l
dGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJv
cGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CiAg
ICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlk
QXJyYXlMZW5ndGgKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAg
IGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUu
c3RydWN0dXJlSURbdDJdLCB0MwotICAgIGJpbmVxIHQzLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAg
ICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9k
ZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQotICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1f
bW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCisgICAgbG9hZGkg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9k
ZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCisgICAgYmluZXEgdDMsIHQxLCBzbG93TGFiZWwKKyAgICBs
b2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9M
b2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0s
IHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRC
eUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJy
YXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQwCi0gICAgYXJyYXlQcm9m
aWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5h
cnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCi0gICAgYnRpeiB0MCwgSXNBcnJheSwgLm9wR2V0QnlJ
ZFNsb3cKLSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QnlJZFNsb3cKKyAg
ICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFt
ZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBidGl6IHQw
LCBJc0FycmF5LCBzbG93TGFiZWwKKyAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xv
d0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0
MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKLSAgICBiaWx0IHQwLCAwLCAub3BHZXRC
eUlkU2xvdworICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAogICAgIG9ycSBudW1iZXJUYWcsIHQw
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAK
IC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0
MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9k
ZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwot
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICBsb2Fk
aSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUu
c3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZp
bmVkKQogICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAorZW5kCisKK2xsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgcGVyZm9y
bUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BH
ZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKwogLm9wR2V0QnlJZFNsb3c6CiAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgIGRpc3BhdGNo
KCkKQEAgLTE0MDIsNyArMTQwOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lk
LCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0
dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9p
ZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZCwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIw
KQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTQ5Nyw3ICsxNTAzLDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gp
CiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nm
ciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByZXN1
bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByZXN1
bHQpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU1OCw3ICsxNTY0LDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogLm9wR2V0QnlWYWxEb25lOgogICAgIHN0b3JlcSB0
MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MikKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCiAgICAgZGlzcGF0
Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU3MSw3ICsxNTc3LDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0
YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByMCkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCiAgICAgcmV0dXJuKHIwKQog
CiBlbmQpCkBAIC0xOTQ4LDYgKzE5NTQsMzAgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbChv
cGNvZGVTdHJ1Y3QsIGdldHUpCiAuZG9uZToKIGVuZAogCittYWNybyBjYWxsSGVscGVyKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YWxSZWdpc3RlciwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2Fs
bGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAg
ICBtZXRhZGF0YSh0NSwgdDApCisgICAgZ2V0Q2FsbGVlKHQwKQorCisgICAgbG9hZHAgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxs
ZWVXaXRoTGlua0JpdFt0NV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MCwgdDMpCisgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdworCisgICAgZ2V0QXJndW1lbnRT
dGFydCh0MykKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgbmVncCB0MworICAgIGFkZHAgY2ZyLCB0
MworICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQorICAgIGdldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKHQyKQorICAgIHN0b3JlUEMoKQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIHNwCisgICAgcHJl
cGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hp
bmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICBjYWxsVGFy
Z2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFn
KQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3Bh
dGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKwogbWFjcm8gY29tbW9uQ2FsbE9wKG9w
Y29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkK
ICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1ldGFkYXRh
KHQ1LCB0MCkKQEAgLTE5NTYsMjQgKzE5ODYsMTkgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAg
ICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICAg
ICAgZW5kLCBtZXRhZGF0YSkKIAotICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JM
YXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKLSAgICAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCB0MCwgdDMpCi0gICAgICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cK
LSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCi0gICAgICAgIGxz
aGlmdGkgMywgdDMKLSAgICAgICAgbmVncCB0MwotICAgICAgICBhZGRwIGNmciwgdDMKLSAgICAg
ICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCi0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBtX2FyZ2MsIHQyKQotICAgICAgICBzdG9yZVBDKCkKLSAgICAgICAgc3RvcmVpIHQyLCBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgICAgIG1vdmUg
dDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQ
dHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQotCi0gICAgLm9wQ2Fs
bFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgICAgIG1hY3JvIGdl
dENhbGxlZShkc3QpCisgICAgICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQorICAgICAgICBlbmQK
KworICAgICAgICBtYWNybyBnZXRBcmd1bWVudFN0YXJ0KGRzdCkKKyAgICAgICAgICAgIGdldHUo
c2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIGRzdCkKKyAgICAgICAgZW5kCisKKyAgICAgICAg
bWFjcm8gZ2V0QXJndW1lbnRDb3VudChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29k
ZVN0cnVjdCwgbV9hcmdjLCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIGNhbGxIZWxwZXIo
b3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgcHJl
cGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVu
dFN0YXJ0LCBnZXRBcmd1bWVudENvdW50KQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjc2LDcgKzIz
MDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21T
Y29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkK
ICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0
MQogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAg
ICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQyKQorICAgICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgICAgICByZXR1cm4o
dDIpCiAgICAgZW5kCiAKQEAgLTIyODQsMTQgKzIzMDksMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRb
dDVdLCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNz
YXJ5KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAg
ICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0Q2xvc3VyZVZhcigpCiAg
ICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEK
ICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0s
IHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQwKQorICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAgICAg
ICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAgLTI1NTEsNyArMjU3Niw2IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfcHJvZmlsZV9jb250cm9sX2Zsb3csIE9wUHJvZmlsZUNvbnRyb2xGbG93LCBt
YWNybyAoc2l6ZSwKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLQogbGxpbnRPcFdpdGhSZXR1cm4o
b3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MApAQCAtMjU2Nyw2ICsyNTkxLDE0
NyBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0
aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQogCiAKK2xsaW50T3BXaXRoTWV0YWRh
dGEob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNy
byBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9m
YXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2Fs
bFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBt
YWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYs
IGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6
IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJm
YXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
LCAuaXRlcmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yT3Blbkdl
bmVyaWM6CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5n
ZXRCeUlkU3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAg
IGdldChtX3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1
bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRv
ck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3Vt
ZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQK
KworCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9vcGVuLCBfbGxpbnRfc2xvd19wYXRoX2l0
ZXJhdG9yX29wZW5fY2FsbCwgT3BJdGVyYXRvck9wZW4sIG1faXRlcmF0b3JQcm9maWxlLCBtX2l0
ZXJhdG9yLCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9HZXRCeUlkQ2hlY2twb2lu
dCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdl
dEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0QnlJZFN0YXJ0OgorICAgIG1hY3Jv
IHN0b3JlTmV4dEFuZERpc3BhdGNoKHZhbHVlKQorICAgICAgICBtb3ZlIHZhbHVlLCB0MgorICAg
ICAgICBnZXQobV9uZXh0LCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAg
ICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9pdGVy
YXRvciwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRlcmF0b3JPcGVuR2VuZXJp
Y0dldE5leHRTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1f
bW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRT
bG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisKKy5pdGVyYXRvck9w
ZW5HZW5lcmljR2V0TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
aXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKKyAgICBkaXNwYXRjaCgpCisKK2VuZCkKKworbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBsb2FkVmFyaWFibGUo
Z2V0LCBtX25leHQsIHQwKQorICAgIGJ0cW56IHQwLCB0MCwgLml0ZXJhdG9yTmV4dEdlbmVyaWMK
KyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNh
bGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAg
bWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90
cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAg
IGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisg
ICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9w
KSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlu
bGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBj
b25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAg
ICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck5leHRHZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXRE
b25lQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0CisgICAgZW5kCisKKyAg
ICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9uZXh0LCBkc3QpCisgICAgZW5k
CisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAg
IGdldHUoc2l6ZSwgT3BJdGVyYXRvck5leHQsIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQK
KworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAg
bW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgICMgVXNlIG1fdmFsdWUgc2xvdCBhcyBhIHRtcCBz
aW5jZSB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisgICAgY2FsbEhlbHBlcihv
cF9pdGVyYXRvcl9uZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCwgT3BJ
dGVyYXRvck5leHQsIG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUsIHByZXBhcmVGb3JSZWd1
bGFyQ2FsbCwgc2l6ZSwgZ290b0dldERvbmVDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVl
LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlz
Q291bnQpCisKKy5nZXREb25lU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVEb25lQW5kSm1wVG9HZXRW
YWx1ZShkb25lVmFsdWUpCisgICAgICAgICMgdXNlIHQwIGJlY2F1c2UgcGVyZm9ybUdldEJ5SURI
ZWxwZXIgdXN1YWxseSBwdXRzIHRoZSBkb25lVmFsdWUgdGhlcmUgYW5kIG9mZmxpbmVhc20gd2ls
bCBlbGlkZSB0aGUgc2VsZiBtb3ZlLgorICAgICAgICBtb3ZlIGRvbmVWYWx1ZSwgdDAKKyAgICAg
ICAgZ2V0KG1fZG9uZSwgdDEpCisgICAgICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAg
ICAgIGptcCAuZ2V0VmFsdWVTdGFydAorICAgIGVuZAorCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0
LCBtX3ZhbHVlLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5nZXREb25lU2xvdwor
ICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRh
dGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9u
ZUFuZEptcFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQorICAgIGJyYW5jaElmRXhjZXB0
aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQorICAgIGxvYWRWYXJp
YWJsZShnZXQsIG1fZG9uZSwgdDApCisKKyAgICAjIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUg
cHV0cyB0aGUgZG9uZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0OgorICAgICMgQnJhbmNo
IHRvIHNsb3cgaWYgbm90IG1pc2MgcHJpbWl0aXZlLgorICAgIGJ0cW56IHQwLCB+MHhmLCAuZ2V0
VmFsdWVTbG93CisgICAgYnRpeiB0MCwgMHgxLCAubm90RG9uZQorICAgIGRpc3BhdGNoKCkKKwor
Lm5vdERvbmU6CisgICAgbWFjcm8gc3RvcmVWYWx1ZUFuZERpc3BhdGNoKHYpCisgICAgICAgIG1v
dmUgdiwgdDIKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgICAgICBzdG9yZXEgdDIsIFtj
ZnIsIHQxLCA4XQorICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MCwgMHhiYWRk
YjAxZSkKKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgIyBSZWxvYWQgdGhlIG5l
eHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJl
ZCB0My4KKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICAjIFdlIGRvbid0
IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5j
ZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KKyAgICBwZXJmb3JtR2V0QnlJ
REhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2Zp
bGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gp
CisKKy5nZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRl
cmF0b3JfbmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCisKIGxsaW50T3BX
aXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBt
X2Jhc2UsIHQxKQogICAgIGdldHUoc2l6ZSwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0
MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgppbmRl
eCA4ZDc2NzExNmMwNTRlNWVhNjY0ZWY0MDYyYzU2ZjI2MDVlMGQ4YjQ1Li41ODlhZTBlMGYzZWQz
NGI2NjFlODU2MmJjYTI5ODAyZWMxMGU1YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCkBAIC02MjksNyArNjI5LDcgQEAgZW5kCiAKIGNsYXNz
IE5vZGUKICAgICBkZWYgdmFsaWRhdGUKLSAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgI3tkdW1w
fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICByYWlzZSAiVW5yZXNvbHZlZCAnI3tk
dW1wfScgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICBlbmQKICAgICAKICAgICBkZWYgdmFs
aWRhdGVDaGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKaW5kZXggYjhkZTk2NTU4MmY3ZDkxMjcxMzM3ZDU0MzE5MDNlODMxOGMy
NmY0Ny4uMzQ5OWJlMmViZmIxN2MzYzkyZTEyZjY1ZDBiYjA4Y2NkMTMyYWYyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE1Myw4ICsxNTQsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFJFVFVSTl9QUk9GSUxFRCh2YWx1ZV9fKSBcCiAgICAgUkVU
VVJOX1dJVEhfUFJPRklMSU5HKHZhbHVlX18sIFBST0ZJTEVfVkFMVUUocmV0dXJuVmFsdWVfXykp
CiAKLSNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8geyBcCi0gICAgICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSk7IFwKKyNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZV9fKSBcCisgICAgUFJP
RklMRV9WQUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUpCisKKyNkZWZpbmUgUFJPRklMRV9WQUxV
RV9JTih2YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dBcml0eUNo
ZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93
U2NvcGUmIHNjb3BlKQpAQCAtOTY1LDYgKzk2OSwxMjcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2luX2J5X2lkKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+
aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkpKSk7CiB9CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7Cisg
ICAgLy8gRG9uJ3Qgc2V0IFBDOyB3ZSBjYW4ndCB0aHJvdyBhbmQgaXQncyByZWxhdGl2ZWx5IHNs
b3cuCisgICAgQkVHSU5fTk9fU0VUX1BDKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
S25vd25XaWR0aDxPcEl0ZXJhdG9yT3Blbiwgd2lkdGg+KCk7CisgICAgYXV0byYgbWV0YWRhdGEg
PSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yT3Blbjo6TWV0YWRhdGEqPihtZXRhZGF0YVB0
cik7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IEdFVF9DKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpz
VmFsdWUoKTsKKyAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhYmxlLCBtX2l0ZXJhYmxlUHJvZmls
ZSk7CisgICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9s
SXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBhdXRvJiBpdGVyYXRvciA9IEdFVChieXRlY29kZS5t
X2l0ZXJhdG9yKTsKKworICAgIGF1dG8gcHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsm
XSB7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
TW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBq
dXN0IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgdmFsaWQuCisgICAgICAgIEpTRnVu
Y3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24q
Pih2bSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rp
b24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsgCisKKyAgICAg
ICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9u
KCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25Nb2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFdlIHNob3VsZCBiZSBnb29kIHRvIGdvLgor
ICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRh
Lm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5
OworICAgICAgICBHRVQoYnl0ZWNvZGUubV9uZXh0KSA9IEpTVmFsdWUoKTsKKyAgICAgICAgYXV0
byogaXRlcmF0ZWRPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihpdGVyYWJsZSk7CisgICAgICAg
IHsKKyAgICAgICAgICAgIGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBpdGVyYXRlZE9iamVjdCwgSXRl
cmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgfQorICAgICAgICBQUk9GSUxFX1ZBTFVFX0lO
KGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2ZpbGUpOworICAgICAgICByZXR1cm4g
SXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgIH07CisKKyAgICBpZiAoaXRlcmFibGUuaW5o
ZXJpdHM8SlNBcnJheT4odm0pKSB7CisgICAgICAgIGlmIChwcmVwYXJlRm9yRmFzdEFycmF5SXRl
cmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KQorICAgICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6
RmFzdEFycmF5KSk7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0
cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vl
bk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRp
b25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1
cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sK
KyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMs
IG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMihD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0
YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMzI+KGNhbGxG
cmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4K
K1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0
cikKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lk
dGg8T3BJdGVyYXRvck5leHQsIHdpZHRoPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck5leHQ6Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworCisg
ICAgQVNTRVJUKCFHRVQoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCkpOworICAgIEpTT2JqZWN0
KiBpdGVyYXRvciA9IGpzQ2FzdDxKU09iamVjdCo+KEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKS5q
c1ZhbHVlKCkpOzsKKyAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVjb2RlLm1faXRlcmFi
bGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKKyAgICBpZiAoYXV0byBhcnJheUl0ZXJhdG9yID0ganNE
eW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7CisgICAgICAgIGlm
IChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0ZXJhYmxlKSkgewor
ICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlE
KGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRp
b25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5N
b2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAgICAgICAgIGF1dG8mIGluZGV4
U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVs
ZDo6SW5kZXgpOworICAgICAgICAgICAgaW50NjRfdCBpbmRleCA9IGluZGV4U2xvdC5nZXQoKS5h
c0FueUludCgpOworICAgICAgICAgICAgQVNTRVJUKDAgPD0gaW5kZXggJiYgaW5kZXggPD0gbWF4
U2FmZUludGVnZXIoKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgICAg
ICBib29sIGRvbmUgPSBpbmRleCA+PSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBHRVQo
Ynl0ZWNvZGUubV9kb25lKSA9IGpzQm9vbGVhbihkb25lKTsKKyAgICAgICAgICAgIGlmICghZG9u
ZSkgeworICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1
c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xv
dC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAg
ICAgICAgIHZhbHVlID0gYXJyYXktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgpOworICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAg
ICAgICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBtX3ZhbHVlUHJvZmlsZSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmll
ciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAgICAg
ICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKG1heFNhZmVJbnRl
Z2VyKCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFs
dWUpID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gUmV0dXJu
IHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1f
aXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0
YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMp
KTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2
b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxO
YXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5U
eXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAg
ICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1l
dGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90
cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVl
MmI3ODRhYjY4ZGI1ZjU1OGZhNzg1MDRjYWIwOTY0M2M2MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTky
Mzc3OTM3NWRjZDhiMmVlMGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0Niw2ICsyNDYsOCBAQCBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2lzX29iamVjdF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9pbl9ieV9pZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7
CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBT
TE9XX1BBVEhfSElEREVOX0RFQ0woaXRlcmF0b3JfbmV4dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9zdHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19w
cmltaXRpdmUpOwpAQCAtMjgzLDYgKzI4NSwxOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25ld19hcnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9zcHJlYWQpOwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhS
ZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxG
cmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lk
ZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOwor
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0
YWRhdGEpOworCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1
cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFt
ZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2
KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zh
c3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRh
dGEpOworCiB1c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1df
UEFUSCAqKShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4
IDM1MzU5MDkwNDkxY2UwYWZkY2Q4YmJiNGY4NzViYjM4MThjMjJkM2UuLjY4NzRlYzc5MDM3NThj
ZjlkZjQ0MzlhNjIzOTA2MWNmMjcwNTg5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMzMwLDYgKzMzMCwyNCBAQCBjb25zdCBjaGFyKiBpbnRy
aW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
K09wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJp
bnNpYyBpbnRyaW5zaWMpCit7CisgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFy
cmF5VmFsdWVzSW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoK
KyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5
c0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgorICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uS2luZDo6S2V5czsKKyAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNp
YzoKKyAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4g
SXRlcmF0aW9uS2luZDo6RW50cmllczsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNl
IFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZi
ZmZmOTAwNjNjZTJkN2Q4YWMyMDU0MmU4YThkN2UxOGM0MmJhZTkuLjcxYmEzYWFkMzU5Njk1NmFm
YzJkMGFiZmM2ZmQxZGUxN2FmMWVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCkBAIC0xODcsNiArMTg3LDggQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90
IHsKICAgICBEYXRhVmlld1NldEZsb2F0NjQsCiB9OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5k
PiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBp
bnRyaW5zaWNOYW1lKEludHJpbnNpYyk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCA1OTllNzc0
YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThhOTY4N2VjNjA5Li40ZmQwYTExNjUyNWNkYzUzMmE1M2Qw
YjhiNWFjYjUzMzg3YThkYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIEpTT2Jq
ZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGlu
dGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRp
YyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVy
YXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKTsKKyAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2Jq
ZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZt
LCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oa2luZCkpKTsKKyAgICB9CiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0
aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVm
Y2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFlZC4uZDMwMmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5
OWMwZjk0ZjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4K
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25z
dDsKKyAgICBib29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUo
Vk0mLCBDYWxsVHlwZSYsIENhbGxEYXRhJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9y
KFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYs
IENvbnN0cnVjdERhdGEmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNm
ZGJlYmVhYmFkODBhZjcuLjYyZjlkMjRmMTVkMDcyNDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaApAQCAtODI3LDYgKzgyNywxMyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9u
KFZNJiB2bSkgY29uc3QKICAgICByZXR1cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQog
CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBD
YWxsVHlwZSB1bnVzZWRUeXBlOworICAgIENhbGxEYXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJu
IGlzQ2FsbGFibGUodm0sIHVudXNlZFR5cGUsIHVudXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0
YSYgY2FsbERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggZThiMjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4
ZjVkNmQ5NzExYi4uYjI1MDM1NjljODQyMjU2MDExNDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBp
bmxpbmUgVG8ganNDYXN0KEpTVmFsdWUgZnJvbSkKIC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRz
LgogI2RlZmluZSBGT1JfRUFDSF9KU19EWU5BTUlDX0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNy
bykgXAogICAgIG1hY3JvKEpTSW1tdXRhYmxlQnV0dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxl
QnV0dGVyZmx5VHlwZSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBt
YWNybyhKU0FycmF5SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBl
OjpKU0FycmF5SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNU
eXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkg
XAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBc
CiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlw
ZTo6RmluYWxPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1
bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFs
RnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxG
dW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNU
eXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBcCisgICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5
cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAog
ICAgIG1hY3JvKEpTQXJyYXlCdWZmZXIsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6
OkFycmF5QnVmZmVyVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5
cGVkQXJyYXlUeXBlLCBMYXN0VHlwZWRBcnJheVR5cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2Us
IEpTVHlwZTo6SlNQcm9taXNlVHlwZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMjZh
YTBkN2M2ZWRmYTYzZTNjOGZmNjIwOGY2MjVmNTcwMzY4NzNmMC4uMTE3M2FhMDg4ZGNiNzZjMDRm
ZTRiNWZjMGIxYTQ5MzkzMzkxZTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTU5LDEwICs1NTksNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
RnVuY3Rpb24+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Zy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKICAgICAg
ICAgfSk7Ci0gICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAotICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0
LnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMs
IEFycmF5VmFsdWVzSW50cmluc2ljKSk7Ci0gICAgICAgIH0pOworICAgIG1fYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVz
LCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwogCiAgICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rp
b24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4m
IGluaXQpIHsKQEAgLTE3NDksNyArMTc0Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2Jq
ZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9wYXJzZUZsb2F0RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9h
cnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0
LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdGhp
c09iamVjdC0+bV9ldmFsRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMmMyOGU4YmY2Y2E0
ZTczYjU2Y2RhMzc3NGIyMTc2NDcxYTlmMDUxMy4uMGFjZGZhZWQ5ZTlhZGZjMjM4YWI3YzIzNDJl
MzU0OTMwYWE2OTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0yOTksNyArMjk5LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247CiAKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1Rv
U3RyaW5nRnVuY3Rpb247Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0
aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9u
KiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7
IH0KICAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAg
SlNGdW5jdGlvbiogYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24q
IGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQorICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1
ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNG
dW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVu
Y3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VS
ZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CkBAIC02MTksNiArNjE5LDcgQEAgcHVibGljOgog
ICAgIEpTRnVuY3Rpb24qIG51bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldEluaXRpYWxpemVkT25NYWluVGhy
ZWFkKHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5
bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogcmVnRXhwUHJvdG9FeGVjRnVu
Y3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKTsg
fQogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLmdldCgpOyB9CiAgICAgR2V0dGVy
U2V0dGVyKiByZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRl
ciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA5OTY5NGQwMTI3YmFlMWNlYTVjZjYzZmE5
Y2RkOTc3MDAwY2I3YWE0Li5mYjQwZmM5NTA3NmFjNTBhMGEzOTRmNThjNTNlYjFjYmRiMDZmYzdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTEx
OSw2ICsxMTksOCBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0Fw
aSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNoYWRvd0NoaWNrZW5Mb2dTaXplLCAxMDAwLCBO
b3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTWF4VGFpbERl
bGV0ZWRGcmFtZXNTaXplLCAxMjgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKKyAgICB2KEJv
b2wsIHVzZUl0ZXJhdGlvbkludHJpbnNpY3MsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAg
IFwKICAgICB2KEJvb2wsIHVzZU9TTG9nLCBmYWxzZSwgTm9ybWFsLCAiTG9nIGRhdGFMb2coKXMg
dG8gb3NfbG9nIGluc3RlYWQgb2Ygc3RkZXJyIikgXAogICAgIC8qIGR1bXBEaXNhc3NlbWJseSBp
bXBsaWVzIGR1bXBERkdEaXNhc3NlbWJseS4gKi8gXAogICAgIHYoQm9vbCwgZHVtcERpc2Fzc2Vt
Ymx5LCBmYWxzZSwgTm9ybWFsLCAiZHVtcHMgZGlzYXNzZW1ibHkgb2YgYWxsIEpJVCBjb21waWxl
ZCBjb2RlIHVwb24gY29tcGlsYXRpb24iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCA3NjRhZDA2NWFjMDExZTMzYzMyMzhjZDlkYTk1MzljMTU4
MzkyM2U1Li45YzJjZTdhZmFlNmUzOGU3YTYwODAyNmY1MTc3MTEwZTNjODU1NjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNjgsNiArMTI2
OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1
bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBCcmllZihQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpIGNvbnN0CiB7CiAgICAgb3V0LnBy
aW50KCIlIiwgc3RyaW5nLCAiOiIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIGlmIChp
bmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKQorICAgICAgICBvdXQucHJpbnQoIiwi
LCBJbmRleGluZ1R5cGVEdW1wKGluZGV4aW5nVHlwZSgpKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJl
OjpkdW1wQ29udGV4dEhlYWRlcihQcmludFN0cmVhbSYgb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaCBiL1NvdXJjZS9XVEYvd3RmL0Vu
dW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKaW5kZXggMzU3YmEyZmEyZjc5MjlhNmE5OThhOWE0
ZWYxNGQyYmU1NzU0NjM3MS4uNTZhYmM0YjUzZWM5ZmFiNjA3NWJmNmQyZWJiYmVkMWYzM2NkZjll
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCkBAIC01
OSwzICs1OSw5IEBACiAKICNkZWZpbmUgT1ZFUkxPQURfUkVMQVRJT05BTF9PUEVSQVRPUlNfRk9S
X0VOVU1fQ0xBU1NfV0lUSF9JTlRFR1JBTFMoZW51bU5hbWUpIE9WRVJMT0FEX1JFTEFUSU9OQUxf
T1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHN0ZDo6aXNfaW50ZWdyYWxf
djxUPikKIAorI2RlZmluZSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFT
U19XSEVOKGVudW1OYW1lLCBlbmFibGVFeHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFU
T1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgfCwgZW5hYmxlRXhwcmVzc2lvbikgXAor
ICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsICYsIGVu
YWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19X
SEVOKGVudW1OYW1lLCBeLCBlbmFibGVFeHByZXNzaW9uKSBcCisKKyNkZWZpbmUgT1ZFUkxPQURf
QklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFUkdSQUxTKGVudW1OYW1l
KSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1l
LCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkYzk4OWM1NWI0MzRlZmY2ZmQzZWY0ZGEzYTUyM2M3
ZmQ1NzNhYjIuLmUxYzJkMmQyN2I0YjVmZDQ2NmU4ZjAwMDM2OGU1M2E3NTNmNWI0ZDYgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTcgQEAKKzIwMjAtMDQtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24gdHlw
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanM6CisgICAgICAgIChm
b28pOgorICAgICAgICAqIHN0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzOgorICAgICAgICAoY2F0
Y2gpOgorICAgICAgICAoaXRlci5yZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VF
cnJvclRlc3QpOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4pOgor
ICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4pOgorICAgICAgICAqIHN0
cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzOgorICAgICAgICAoZmlu
ZCk6CisgICAgICAgIChpLmxldC52Lm9mLmZpbmQpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0
b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzOgorICAgICAgICAoZmluZCk6CisgICAgICAg
IChzZXQgYWRkKToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVy
LmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IGRvbmUpOgorICAg
ICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1i
b2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAg
KiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qczoKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJs
ZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mb3It
b2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICog
c3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczoKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuZ2V0IGRv
bmUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAg
KGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBz
dHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanM6CisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRv
cik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6
CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFk
ZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0
ZXJhYmxlLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0
b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gp
OgorCiAyMDIwLTA0LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNraXAgYWxsIGxvdyBleGVjdXRhYmxlIG1lbW9yeSB3YXNtIHRlc3RzIG9uIGFybTY0CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1l
bnRyaWVzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXkt
ZW50cmllcy5qcwppbmRleCA1NWVjYzBiZmNmOTE5Y2FjYWU3ZmQxNWRkYjQwYjE0ZmRjYTk0ZWRh
Li4yMDEyYjkxMjg1MGY1ODExNjdmYmQzMTA1MDU5Yjc2ZDc2NjNiNmQ4IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMu
anMKQEAgLTMsMTAgKzMsMTIgQEAgZnVuY3Rpb24gZm9vKCkgewogICAgIHZhciBhcnJheSA9IFtd
OwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjUwMDA7IGkrKykKICAgICAgICAgYXJyYXkucHVz
aChpKTsKLSAgICAKKwogICAgIHZhciByZXN1bHQgPSAwOwotICAgIGZvciAodmFyIFtrZXksIHZh
bHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpCisgICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGFy
cmF5LmVudHJpZXMoKSkgeworICAgICAgICBwcmludChrZXkgKyAiICIgKyAkdm0uaW5kZXhpbmdN
b2RlKGFycmF5KSk7CiAgICAgICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1ZSArIGFycmF5W2tleV07
CisgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJh
dG9ycy5qcwppbmRleCBmZDY0MTNmZTNiNWU5MDNhZmZlMzgwM2ZkMDA0YzBjYjFmMWM2NGYzLi5k
M2QxYmQ3ZTg1OGU4NzRmYmQxMTNkODJmOTIxMWVhNGJkNWVmN2I1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2N1c3Rv
bS1pdGVyYXRvcnMuanMKQEAgLTIyLDcgKzIyLDcgQEAgZm9yICh2YXIgdmFsdWUgb2YgaXRlcikg
ewogICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwogfQogaWYgKHJl
dHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICB0
aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC01Myw3ICs1Myw3
IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJF
cnJvcjogVGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBl
cnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxs
ZWQpCiAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMTA4LDEw
ICsxMDgsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhl
KSAhPT0gIkVycm9yOiBsb29raW5nIHVwIG5leHQuIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmIChyZXR1cm5D
YWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgdGhyb3cg
bmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtMTM2LDcgKzEzNiw3IEBA
IHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJv
cjogbG9va2luZyB1cCByZXR1cm4uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3Ig
dGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIAogCkBAIC0xNjUsMTAgKzE2NSwx
MCBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAi
RXJyb3I6IG5leHQgaXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9y
IHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQot
ICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJv
cigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAgLTE4Myw3ICsxODMsNyBAQCB2YXIgaXRl
ciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5D
YWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07
CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBp
ZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsK
IH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBj
YWxsZWQuIjsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJl
dHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAg
ICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiB0cnkgewpAQCAtMjE4LDggKzIx
OCw4IEBAIHRyeSB7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0gY2F0Y2ggKGUpIHsKLSAgICBp
ZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIikKLSAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICBpZiAoU3RyaW5nKGUpICE9
PSAiRXJyb3I6IHJldHVybiB3YXMgY2FsbGVkIikKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICgh
cmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsK
QEAgLTI1NSwxMCArMjU1LDEwIEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0
KG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7CiAgICAg
ICAgIGlmIChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZh
Y2UgaXMgbm90IGFuIG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJy
b3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmIChy
ZXR1cm5DYWxsZWQpCi0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOwor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiB9CiAKIGZ1bmN0
aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7
CkBAIC0yODIsNyArMjgyLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RS
ZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsK
ICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIp
Ci0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAg
ICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgICAg
IHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTMxMyw3ICszMTMsNyBA
QCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybihub3RJdGVyYXRvclJl
c3VsdCkgewogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5n
KGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiAr
IGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAoIXJldHVybkNhbGxlZCkK
ICAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qcyBi
L0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTM4YjdlZTgxNDI0YTJkMmY1MzhjZTdiMjA1OWQ4ZDZlNDU4ZTRiYQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1v
bi1tYXAuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gKmZpbmQobm9kZXMsIHApCit7Cisg
ICAgZm9yIChsZXQgW2FycmF5XSBvZiBub2RlcykgeworICAgICAgICBpZiAoIWFycmF5LmZpbmQo
KHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHlpZWxkIGFy
cmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOworCitsZXQgbWFwID0gbmV3IE1hcCgpOwor
bm9JbmxpbmUobWFwW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KTsKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMWUyOyArK2kpCisgICAgbWFwLnNldChbMSwyLDQsNSw1XSwge30pOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChsZXQgdiBvZiBmaW5kKG1hcCwgaSAlIDIp
KSB7IH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5n
LWZvci1vZi1vbi1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1m
b3Itb2Ytb24tc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZjMyNzM5MGQ3Mzc1YTIyMDJhZTU5YTExMjQ2
NTY5OGNiNmVhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
Y29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uICpm
aW5kKG5vZGVzLCBwKQoreworICAgIGZvciAobGV0IGFycmF5IG9mIG5vZGVzKSB7CisgICAgICAg
IGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUoZmluZCk7CisKK2xldCBz
ZXQgPSBuZXcgU2V0KCk7Citub0lubGluZShzZXRbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQpOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBzZXQuYWRkKFsxLDIsNCw1LDVdLCB7
fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmb3IgKGxldCB2IG9m
IGZpbmQoc2V0LCBpICUgMikpIHsKKyAgICAgICAgaWYgKGkgJSAyICE9PSAxKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJubyByZXN1bHQgc2hvdWxkIGhhdmUgYmVlbiBwcm9kdWNlZCBo
ZXJlIik7CisgICAgICAgIGlmICghKHYgaW5zdGFuY2VvZiBBcnJheSkpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoInJlc3VsdCB3YXMgbm90IGFuIGFycmF5Iik7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzIGIv
SlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFiNGM0OWM5M2IyOWZjYjBmNzEwYzZjODJkMWZkODgwMDFhMjJlMjUKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIuanMKQEAgLTAs
MCArMSwyMyBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxldCByZXR1
cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7
CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIGdldCBkb25lKCkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNGaW5hbFRpZXIoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEZvcmNlT1NSKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBbU3ltYm9s
Lml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0dXJu
Q2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBp
dGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL29zci1m
cm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcwOTZlZTAzZTE1MjU3M2Fl
ZGM2NGQwNDM5ZmIyYmYyMmM2NDE1YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKQEAgLTAsMCArMSwyMSBAQAorZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsK
KyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIGRvbmU6IDAsCisgICAgICAgIG5leHQoKSB7
CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIGRvbmU6IHRoaXMuZG9uZSsr
LAorICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsgaWYgKGlzRmluYWxUaWVyKCkpIEZvcmNl
T1NSKCk7ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgW1N5bWJvbC5p
dGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNh
bGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRl
cmFibGUpIHsgfQorICAgIH0gY2F0Y2ggeworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmJk
MzJhZGQ3Y2MzYmEzNDMyNTRkYTcxMDhlNTE5ZmY3NWIzMjUxCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzCkBA
IC0wLDAgKzEsMTYgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBsZXQg
cmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0
KCkgeyByZXR1cm4gMTsgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0
aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7IH0sCisgICAg
fTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQorICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT0gIlR5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0IGlu
dGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCisgICAgICAgICAgICB0aHJvdyBlOworICAgIH0K
KyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9m
LWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9y
LW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGExNDJjOGE2YzU0ZjQ3NmVjMDM5YTE0ZTllMmQz
ZTdiOTZkZjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1k
b25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2ZvciAobGV0
IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1cm5D
YWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4gdGhp
czsgfSwKKyAgICAgICAgZ2V0IGRvbmUoKSB7CisgICAgICAgICAgICB0aHJvdyBlcnJvciA9IG5l
dyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0
dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgIHJldHVybkNhbGxl
ZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoYSBv
ZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAg
ICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2Yt
aGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFk
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2IxOTRmZDdjYTVhYzU5YWQ2OTYxOTQyZjg2MjdiNjBhNWFhMzAx
OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1m
b3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFl
NTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1cm5DYWxsZWQ7CisgICAgbGV0
IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3Ig
PSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7
IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5D
YWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAgICBub0lubGluZShpdGVyYWJsZS5u
ZXh0KTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJvcnIoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9
PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQorCisgICAgaWYgKHJldHVybkNh
bGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MDg3ODgzNThlNGVkMzA2MTJhY2M2ZjJlZjNhMzBkOGQ1NjY2NzlkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4t
Zm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI3IEBACitmb3IgKGxldCBpID0gMDsgaSA8PSAx
ZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7
CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4gdGhpczsgfSwK
KyAgICAgICAgZG9uZTogZmFsc2UsCisgICAgICAgIGdldCB2YWx1ZSgpIHsKKyAgICAgICAgICAg
IHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wu
aXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAg
ICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJ5IHsK
KyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKwor
ICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396509</attachid>
            <date>2020-04-15 00:30:38 -0700</date>
            <delta_ts>2020-04-15 00:34:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-175454-20200415003037.patch</filename>
            <type>text/plain</type>
            <size>270772</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi5hNjZmZmQyMTFiZDViMmNi
ODRiMzBiYTVmYjZiYWNkZmQ1MmExZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MjEgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24g
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBidWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJh
eUl0ZXJhdG9yTmV4dEhlbHBlcik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZUlEKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2
YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRp
b25Gb3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25XaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmguCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
IChKU0M6OmlzU3VidHlwZVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25D
b250YWlucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgIChK
U0M6OlN1cGVyU2FtcGxlclNjb3BlOjpyZWxlYXNlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
T3Blbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y05leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6Zm9yQWxsVmFsdWVzKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6Om51bWJlck9mVG1wcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6dG1wKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpqc0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6d2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNG
R1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5o
OgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om51bWJl
ck9mVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpvcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnZhcmlhYmxlQXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6Okxh
enlKU1ZhbHVlOjpzcGVjdWxhdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
bGlkYXRlLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Y2xvb3BTdGFjayk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjaGVja2VkUmV0dXJu
KToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q2FsbFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrcG9pbnRSZWFj
aGVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZv
cm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNs
b3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X2R1bXBfdmFsdWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpvcjgpOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JOZXh0SGVscGVyKToKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2Vy
dmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
Ojp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
UHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6
CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFycmF5
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAgICAg
ICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVG
b3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNhbGxl
ZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAg
ICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAoSlND
OjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2Fs
bFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRC
eVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCYXNl
SW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
OjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6
YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWRl
MTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6
CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAgICAg
KiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVh
c2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9z
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAg
ICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXRU
YWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWls
QWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpB
dFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxB
YnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3
ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1hdGNo
aW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxv
Y2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFy
aWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2VlcE9w
ZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6
amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yQWxs
S2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxp
emUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Js
b2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgor
ICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlKU1Zh
bHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNv
bnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdlbmVy
YXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAq
IGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjbG9vcFN0YWNrKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpjYWxsZWVGcmFt
ZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRl
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgIChKU0M6
OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6
OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNp
Yy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKIDIwMjAtMDQtMTQgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlYnVnZ2Vy
OiBhZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBleHByZXNzaW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwMzk0Yjdi
ZTViNWJiMDE4YjRlZmJjYzk4NWY1Yjc4ZGEyMjY4NmQuLmFhYTAwMWRhODUyNjliNjQyNjExYTZj
NDNkZDY5NGNlMDVhZjQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDQtMTUgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93
IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24gdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRz
Lmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRpb1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2Ny
aXB0Q29yZS54Y2NvbmZpZwppbmRleCA1MmI0NmVjYzllMjg5Y2FkODVhYTE3ZTJkMDk3YWJiZTUz
NjViMzlmLi41YTlhMGI0NDQxMTA3MjNkNzM5YTMyNTAyODVlZTlhNjgyMzVmYmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUu
eGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFT
Y3JpcHRDb3JlLnhjY29uZmlnCkBAIC00MCw4ICs0MCw4IEBAIFNFQ1RPUkRFUl9GTEFHU19Qcm9k
dWN0aW9uW3Nkaz1tYWNvc3gqXSA9IC1XbCwtb3JkZXJfZmlsZSxKYXZhU2NyaXB0Q29yZS5vcmRl
cjsKIAogR0NDX1BSRUZJWF9IRUFERVIgPSBKYXZhU2NyaXB0Q29yZVByZWZpeC5oOwogR0NDX1NZ
TUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7Ci1PVEhFUl9DRkxBR1MgPSAkKGluaGVyaXRlZCkg
LS1zeXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKLU9USEVSX0NQTFVTUExVU0ZMQUdTID0g
JChpbmhlcml0ZWQpIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87CitPVEhFUl9DRkxB
R1MgPSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXplIC0tc3lzdGVtLWhlYWRlci1wcmVm
aXg9dW5pY29kZS87CitPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZm5vLXNs
cC12ZWN0b3JpemUgLS1zeXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKIEhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlIiAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBs
aXN0OwogSU5TVEFMTF9QQVRIID0gJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUz
NzI0YjhlMTgxY2MyOGUuLmRmNDI3ZGY1YTAyNzU5MzNiNDk3NzRkYzdlMTAyNjc1YjcwZDA4MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTAzLDYgKzExMDMsOCBAQAogCQk1
M0M0RjY2QjIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJG
RDAwOSAvKiBKU0FQSUdsb2JhbE9iamVjdC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBC
MTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNDNkZFRUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVP
cmlnaW4uaCAqLzsgfTsKIAkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMw
ODFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLzsgfTsKKwkJNTNEMzU0OTkyNDBE
ODhCRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5
dGVjb2RlUHJvZmlsZUZvci5oICovOyB9OworCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyog
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTNENDQ0REMxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDQ0REIxREFGMDhB
QjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oICovOyB9OwogCQk1M0UxRjhGODIxNTQ3
MTVBMDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTFGOEY3MjE1NDcxNDkwMDAxRERCQyAvKiBKU1ZhbHVl
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUzRTc3N0U0MUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5
MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKQEAgLTM4MTQs
NiArMzgxNiw5IEBACiAJCTUzQzZGRUYwMUU4QUZFMEMwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3Jp
Z2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21PcGNvZGVP
cmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NBNzMwNzFFQTUzM0Q4
MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2FzbUJCUVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbUJCUVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVByb2ZpbGVGb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5
dGVjb2RlVXNlRGVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5
dGVjb2RlVXNlRGVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNENDFFQzgy
M0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REIxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJl
c3NWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21BZGRyZXNz
VmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUFkZHJlc3NWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1M0Q0NDRERDFEQUYwOUEwMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1Zh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUFkZHJl
c3NWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMjAsOCArODIyNSwxMCBAQAogCQkJ
CUMyRkNBRTBFMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
ICovLAogCQkJCUMyRkNBRTBGMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCAqLywKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lcy5oICovLAorCQkJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAv
KiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLywKIAkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8sCiAJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLywKKwkJCQk1M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQg
LyogQnl0ZWNvZGVVc2VEZWYuY3BwICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAv
KiBCeXRlY29kZVVzZURlZi5oICovLAogCQkJCUUzNUJBMkMwMjQxQTBFOEMwMEI2NzA4NiAvKiBC
eVZhbEluZm8uY3BwICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbElu
Zm8uaCAqLywKQEAgLTgzMTUsNiArODMyMiw3IEBACiAJCQkJMTRDQzNCQTEyMTM4QTIzODAwMkQ1
OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLywKIAkJCQkxNENDM0JBMjIxMzhBMjM4MDAy
RDU4QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKIAkJCQk1M0Y2QkY2QzFDM0YwNjBBMDBG
NDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8sCisJCQkJNTNE
NDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovLAogCQkJ
CUJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLAogCQkJCUJDRkQ4
QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkwRkI1NDY3ODE0RjVD
NDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLApAQCAtOTEyNyw2
ICs5MTM1LDcgQEAKIAkJCQkwRjJERDgwQjFBQjNEODU4MDBCQkI4RTggLyogQnl0ZWNvZGVLaWxs
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTMxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZFQzAxODM1NjZG
OTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29k
ZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIg
LyogQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUz
RkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcg
QEAKIAkJCQkwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3Bh
Y2VQZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8q
IEl0ZXJhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFF
OTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1
NUI4MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUw
NzA4MzNjYmY1YmE1ZWJlZjBlYzguLjE1Mzk3ZThiN2Y0OGE4NGZiMjdmMTFkMmYxMzcxZTBlMmEz
MDFjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCkBAIC02ODYsNiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9y
OChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0
ZTMyKGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRh
VGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAg
IHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7
CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7Cisg
ICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG9yNjQoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTE2MDMs
NyArMTYxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJl
c3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChS
ZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklE
IHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzKSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCAw
KTsKQEAgLTE2MTgsNyArMTYzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
YihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2
b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3Rv
cmU4KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBUcnVzdGVkSW1tMzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAg
ICAgICAgIGlmICghaW1tOC5tX3ZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggOGM2OTc5YmI5YjJm
ZGViMDRjYTAyNmU3NjZkMjA4YjczYTA2M2YyZS4uMmExZGRlZGVlMzZkYmUzY2RlNTcyZjQ4NjA1
YTQ2NGM4MGI2ZTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpvcjE2OworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjg7
CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bG9hZDMyOwpAQCAtOTYsNiArOTcsMTIgQEAgcHVibGljOgogICAgICAgICBvcjE2
KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3I4
KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7
CisgICAgICAgIG9yOChpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3Jh
dGNoUmVnaXN0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDk5YThjMTkyM2YyNWU0NDExZDZi
NGZmN2U3YTU5YjA1OTIzOGQ4M2UuLjk0YjM3ZmRhMWQxY2U2ZDcwYTc5MWU3YmE2MWVmMjYzZDU5
YTUzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUl0
ZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCkBAIC00NiwyMSArNDYsMTkgQEAgZnVuY3Rpb24gYXJy
YXlJdGVyYXRvck5leHRIZWxwZXIoYXJyYXksIGtpbmQpCiAgICAgdmFyIHZhbHVlOwogCiAgICAg
dmFyIGluZGV4ID0gQGdldEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBhcnJheUl0
ZXJhdG9yRmllbGRJbmRleCk7Ci0gICAgaWYgKGluZGV4ICE9PSAtMSkgewotICAgICAgICB2YXIg
bGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOwotICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGgp
IHsKLSAgICAgICAgICAgIEBwdXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAYXJy
YXlJdGVyYXRvckZpZWxkSW5kZXgsIGluZGV4ICsgMSk7Ci0gICAgICAgICAgICBkb25lID0gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlvbktpbmRLZXkpCi0gICAgICAg
ICAgICAgICAgdmFsdWUgPSBpbmRleDsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIHZhbHVlID0gYXJyYXlbaW5kZXhdOwotICAgICAgICAgICAgICAgIGlmIChraW5kID09PSBA
aXRlcmF0aW9uS2luZEVudHJpZXMpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gW2luZGV4
LCB2YWx1ZV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgQHB1
dEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRl
eCwgLTEpOwotICAgIH0KKyAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOworICAg
IGlmIChpbmRleCA8IGxlbmd0aCkgeworICAgICAgICBAcHV0QXJyYXlJdGVyYXRvckludGVybmFs
RmllbGQodGhpcywgQGFycmF5SXRlcmF0b3JGaWVsZEluZGV4LCBpbmRleCArIDEpOworICAgICAg
ICBkb25lID0gZmFsc2U7CisgICAgICAgIGlmIChraW5kID09PSBAaXRlcmF0aW9uS2luZEtleSkK
KyAgICAgICAgICAgIHZhbHVlID0gaW5kZXg7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dmFsdWUgPSBhcnJheVtpbmRleF07CisgICAgICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlv
bktpbmRFbnRyaWVzKQorICAgICAgICAgICAgICAgIHZhbHVlID0gW2luZGV4LCB2YWx1ZV07Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgQHB1dEFycmF5SXRlcmF0b3JJbnRlcm5hbEZp
ZWxkKHRoaXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCwgQE1BWF9TQUZFX0lOVEVHRVIpOwog
CiAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmUgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCBmYjM0OGI5MmRkMjYyM2MwNjUxZWZkMmU0
YThjMGU4ZGUyMzdiMjAxLi45NDI2NTdjNjJmMDc0OWNhMDVjNGVlZTRkNjdiOTVmZTY0NTVkOWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0yMDcsMTAgKzIwNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dE9mQm91bmRzKCkgeyBt
X291dE9mQm91bmRzID0gdHJ1ZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkg
eyByZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1
cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBtX2xhc3RTZWVuU3RydWN0
dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgfQorICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVy
ZUlEKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0
cnVjdHVyZUlEOyB9CisgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0
dXJlKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCiAgICAg
dm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q29kZUJsb2NrKik7CiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpp
bmRleCAxZjU2Njk0Y2U3MDBmZGViZTFmZGNiZDA0NGYyYTg3ZDA4OGY3ZWEyLi41ODVjYzU4YzM3
ZTg4Mzg2OWE0ZThjYWJjNjBmYmQ3ZTRiNTYyYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTM0LDYgKzM0LDcgQEAgdHlwZXMgWwog
ICAgIDpHZXRCeVZhbEhpc3RvcnksCiAgICAgOkdldFB1dEluZm8sCiAgICAgOkluZGV4aW5nVHlw
ZSwKKyAgICA6SXRlcmF0aW9uTW9kZU1ldGFkYXRhLAogICAgIDpKU0NlbGwsCiAgICAgOkpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LAogICAgIDpKU0dsb2JhbE9iamVjdCwKQEAgLTExNjIsNiAr
MTE2Myw2NCBAQCBvcCA6Z2V0X3Jlc3RfbGVuZ3RoLAogICAgICAgICBudW1QYXJhbWV0ZXJzVG9T
a2lwOiB1bnNpZ25lZCwKICAgICB9CiAKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIGl0ZXJhdG9y
ID0gc3ltYm9sSXRlcmF0b3IoaXRlcmFibGUpOyBuZXh0T3JJbmRleCA9IGl0ZXJhdG9yLm5leHQ7
CisjIEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93ZXZlciwgdGhpcyBoYXMgc3BlY2lhbCBiZWhh
dmlvciB3aGVyZSBpdGVyYXRvciBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZQorIyBhbmQgbmV4dE9y
SW5kZXggaXMgdGhlICJpbmRleCIgb2YgdGhlIGl0ZXJhdG9yIChpbnQgZm9yIGFycmF5cy9zdHJp
bmdzIGFuZCBidWNrZXQgZm9yIG1hcC9zZXQpLgorb3AgOml0ZXJhdG9yX29wZW4sCisgICAgYXJn
czogeworICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0OiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0YWNrT2Zmc2V0
OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhdGlvbk1l
dGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxlUHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAor
ICAgICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbW9kZU1ldGFk
YXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAgICBpdGVyYXRvck9iamVjdDogSlNWYWx1
ZSwKKyAgICB9LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIHN5bWJvbENhbGw6IG5pbCwK
KyAgICAgICAgZ2V0TmV4dDogbmlsLAorICAgIH0KKworIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMg
dG1wID0gbmV4dE9ySW5kZXguY2FsbChpdGVyYXRvcik7IGRvbmUgPSB0bXAuZG9uZTsgdmFsdWUg
PSBkb25lID8gdW5kZWZpbmVkIDogdG1wLnZhbHVlOworb3AgOml0ZXJhdG9yX25leHQsCisgICAg
YXJnczogeworICAgICAgICBkb25lOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdp
c3RlciwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRh
dGE6IHsKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwK
KyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5r
SW5mbzogTExJbnRDYWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1
ZVByb2ZpbGUsCisgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
CisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlTW9kZU1l
dGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKKyAgICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1
ZSwKKyAgICAgICAgaXNEb25lOiBKU1ZhbHVlLAorICAgICAgICB2YWx1ZTogSlNWYWx1ZSwKKyAg
ICB9LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBuaWwsCisgICAg
ICAgIGdldERvbmU6IG5pbCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9CisKIG9wIDp5
aWVsZCwKICAgICBhcmdzOiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLApA
QCAtMTI5MCw2ICsxMzQ5LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9jYXRpb24KIG9w
IDpvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9pZF9yZXR1cm5f
bG9jYXRpb24KIG9wIDpvcF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJh
dG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9j
YXRpb24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9s
b2d1ZV9ub190bHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBkOGZmNmM3OTg5
NmFmZDAwZTIwY2M0Mjc3OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhkNDQyMDQwOGNh
YzUwYTM4ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIzMSwxMyBAQCBC
aXRtYXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChjb25z
dCBDb2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChPcENhbGxWYXJh
cmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJlc3VsdC5zZXQo
T3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mjc2MDRiNWYwOWI3YTZjNDdiM2ExMjczMTFhMGJmODcyZWYyN2Y4OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaApA
QCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCisjaW5jbHVk
ZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQgaGFz
TWVtYmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWdu
ZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgp
OworICAgIHJldHVybiAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGU7CisK
KyAgICAvLyBJbnNlcnQgcGVyIG1ldGFkYXRhIG92ZXJyaWRlcyBoZXJlIHdoZW4gd2UgbmVlZCB0
aGVtLgorICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29k
ZU1ldGFkYXRhPgorYm9vbCBoYXNBcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0
YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQcm9m
aWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9yKEJ5
dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7Cisg
ICAgQVNTRVJUKGhhc0FycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7
CisgICAgcmV0dXJuICphcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5k
ZXgpOworfQorCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQgaGFzTWVt
YmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSog
dmFsdWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQg
Y2hlY2twb2ludEluZGV4KQoreworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6
b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9p
bnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1
cm4gJm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JP
cGVuOjpnZXROZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGRl
ZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgIH0g
ZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJh
dG9yX25leHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAg
Y2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0
UmVzdWx0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0
dXJuICZtZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0
OjpnZXRWYWx1ZTogcmV0dXJuICZtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSAKKyAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX3Byb2ZpbGU7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc1ZhbHVlUHJvZmlsZUZvcihCeXRlY29k
ZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIHJl
dHVybiB2YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlJiB2YWx1
ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9p
bnRJbmRleCkKK3sKKyAgICBBU1NFUlQoaGFzVmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVj
a3BvaW50SW5kZXgpKTsKKyAgICByZXR1cm4gKnZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEs
IGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorT3Bl
cmFuZCBkZXN0aW5hdGlvbkZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNo
ZWNrcG9pbnRJbmRleCwgSklUVHlwZSB0eXBlID0gSklUVHlwZTo6Tm9uZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpv
cGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2lu
dEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVy
biBieXRlY29kZS5tX2l0ZXJhdG9yOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXRO
ZXh0OiByZXR1cm4gYnl0ZWNvZGUubV9uZXh0OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25l
eHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBP
cEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEpJ
VFR5cGU6OkRGR0pJVCB8fCB0eXBlID09IEpJVFR5cGU6OkRGR0pJVCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAg
ICAgICAgIHJldHVybiBieXRlY29kZS5tX3ZhbHVlOyAvLyBXZSByZXVzZSB2YWx1ZSBhcyBhIHRl
bXAgYmVjYXVzZSBpdHMgZWl0aGVyIG5vdCB1c2VkIG9yIHdyaXR0ZW4gYXMgdGhlIHRlbXAgb2Jq
ZWN0IGRpZXMuCisgICAgICAgIH0KKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9u
ZTogcmV0dXJuIGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6
Z2V0VmFsdWU6IHJldHVybiBieXRlY29kZS5tX3ZhbHVlOworICAgICAgICBkZWZhdWx0OiBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2RzdDsKK30KKworLy8gQ2Fs
bC1saWtlIG9wY29kZSBsb2NhdGlvbnMKKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitW
aXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWdu
ZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgp
OworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29w
ZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6
c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yOwor
ICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRv
cl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5l
eHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fY2FsbGVlOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCeXRlY29kZT4KK3Vuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9y
KGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQorewor
ICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0
ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNo
ZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJl
dHVybiAxOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBv
cF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJ
dGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNl
CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2FyZ2M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEJ5dGVjb2RlPgorcHRyZGlmZl90IHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGNvbnN0
IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVO
VVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6
Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9p
bnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIGJ5dGVjb2RlLm1faXRlcmFibGUub2Zm
c2V0KCk7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9w
X2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0
ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFk
ZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhdG9yLm9mZnNldCgpOworICAgIH0g
ZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9hcmd2OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBCeXRlY29kZU1ldGFkYXRhPgorTExJbnRDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mb0Zv
cihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQor
eworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIHJldHVybiBtZXRhZGF0
YS5tX2NhbGxMaW5rSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2Vj
MGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1NjI2YzEzLi5hNWE1MDdlZDJlOTJkY2VlM2ZjMTUx
YmRlYjJhNjI3MjczYzIyNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTI1OSw2ICsyNTksOSBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNv
bnN0IEluc3RydQogCiAgICAgVVNFUyhPcFlpZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQogCisg
ICAgVVNFUyhPcEl0ZXJhdG9yT3Blbiwgc3ltYm9sSXRlcmF0b3IsIGl0ZXJhYmxlKQorICAgIFVT
RVMoT3BJdGVyYXRvck5leHQsIGl0ZXJhdG9yLCBuZXh0LCBpdGVyYWJsZSkKKwogICAgIGNhc2Ug
b3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkOgogICAgICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5z
dHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU3ByZWFkPigpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNDg2LDYgKzQ4OSw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1
bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAKICAgICBERUZTKE9w
Q2F0Y2gsIGV4Y2VwdGlvbiwgdGhyb3duVmFsdWUpCiAKKyAgICBERUZTKE9wSXRlcmF0b3JPcGVu
LCBpdGVyYXRvciwgbmV4dCkKKyAgICBERUZTKE9wSXRlcmF0b3JOZXh0LCBkb25lLCB2YWx1ZSkK
KwogICAgIGNhc2Ugb3BfZW50ZXI6IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFy
czsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApp
bmRleCBkMjlmNjBlOTQyODIyNTkxOTQ3NzY4NTU3ZWE4N2E2NTdmMjNhNjBiLi45MTVjYzYzMWRi
ZDI4NDVlZTkxMzhlMTM5ZWI2OWU5NjM0MTc1MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtNDAsMTggKzQwLDM0IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBDYWxsTGlua0luZm86OkNhbGxUeXBlIENhbGxMaW5rSW5mbzo6Y2FsbFR5
cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwg
fHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKQorICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAg
ICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzOgorICAgICAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOyAgICAgICAgCisK
KyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2FzZSBvcF9jYWxsX2V2YWw6CisgICAgY2FzZSBvcF9p
dGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKICAgICAgICAgcmV0dXJu
IENhbGw7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJncykKKworICAgIGNhc2Ug
b3BfY2FsbF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ2FsbFZhcmFyZ3M7Ci0gICAgaWYgKG9w
Y29kZUlEID09IG9wX2NvbnN0cnVjdCkKKworICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgICAg
ICByZXR1cm4gQ29uc3RydWN0OwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFy
YXJncykKKworICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBD
b25zdHJ1Y3RWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpCisKKyAg
ICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgcmV0dXJuIFRhaWxDYWxsOwotICAgIEFTU0VS
VChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwotICAgIHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2FsbDsKIH0KIAogQ2FsbExpbmtJbmZvOjpDYWxs
TGlua0luZm8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAKaW5kZXggZjEzZDE3MzRhMDJjNThhMzIxNzU5MjVkMjg4NTVhMmEyNjAwMTgx
OC4uYjkwZjgyNDZmYzYxMTEzNzhhZWJlZjkwMjU2ZjExNWVmMTdlM2IxMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC04MSw2
ICs4MSwxMyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQgogICAgIGNhc2Ugb3BfdGFpbF9jYWxs
OgogICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGw+KCku
bWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2Nh
bGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0Ogor
ICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0Pigp
Lm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOworICAgICAgICBicmVhazsK
KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDUz
YjFiNDQ5MjBiNmE4NzgxNTdlNjE2MGI2NTNlN2E0ZTczMDRiMi4uYTRhN2M1YWFiZjA1NmIzODMx
NDQ4NDE4ZjkxZGE4ODU0ZjdiYTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUR1
bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIK
ICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtOTcsNiArOTgsNyBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CiAKKwogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNlbmRpZgpAQCAtNTgzLDYgKzU4NSwyMCBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJ
TksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVu
OiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisg
ICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4
dDogeworICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKwor
ICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2Nv
cGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAK
QEAgLTEyMjQsNiArMTI0MCwzMyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGlu
ZUNhY2hlcygpCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY2NDE4CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRkIG9wdGltaXphdGlv
bnMgZm9yIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsIHRv
IGRvIGxpbmsgdGltZSBzY29wZSByZXNvbHV0aW9uLgogCisgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAg
IGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0
cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJl
SUQ7CisgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQo
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkK
KyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgaXRlcmF0b3Igb3BlbiBMTEludCBw
cm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YSk7CisgICAgICAgIH0pOworCisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9y
RWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAg
YXV0byBjbGVhcklmTmVlZGVkID0gWyZdIChHZXRCeUlkTW9kZU1ldGFkYXRhJiBtb2RlTWV0YWRh
dGEpIHsKKyAgICAgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1v
ZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5z
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhl
YXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlE
KSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBpdGVyYXRvciBuZXh0IExMSW50
IHByb3BlcnR5IGFjY2Vzcy5cbiIpOworICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtb2Rl
TWV0YWRhdGEpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZCht
ZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZCht
ZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAg
ICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpE
ZWZhdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMzEsNyArMTI3NCw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGlm
ICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBM
TEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRh
dGEpOworICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJl
Y3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM2OSwyNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIg
PSBbJl0gKCkgewogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMo
KS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9w
X2dldF9ieV9pZCkgeworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAg
ICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1l
dGFkYXRhKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW46IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3Nl
T1NSKCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsK
KyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JP
cGVuPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDog
eworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNs
ZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hl
cyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRo
aXMgaXMgcmVmZXJyaW5nIHRvLi4uCisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAg
ICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpj
bGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAg
ICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMTAyLDExIEBAIFZhbHVlUHJvZmls
ZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46
CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJh
dG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOwor
ICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVG
b3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tJbmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRjZTRh
YS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwx
MiArMzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVu
Y3RvciYgZnVuYykKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3Ap
IFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsg
ZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJv
ZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9Q
Uk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKworICAg
ICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZh
bHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOwor
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAg
ICB9KTsKKyAgICB9ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6
OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJU0lU
MQogI3VuZGVmIFZJU0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRv
ck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEu
bV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBhY2E2
NTJiZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4YzIuLjI4MmNmOGY0MjdjMWZiZWFiMjk2YTM1ODNi
MDc5OTQxZGExMGVmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5U3RhdHVzLmNwcApAQCAtODYsNiArODYsMzUgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUK
ICAgICBjYXNlIG9wX2dldF9ieV92YWw6CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAg
ICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVuOjpn
ZXROZXh0KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2Fk
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4
MDM5CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRN
b2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRp
b24sIGZhbHNlKTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9w
ZXJ0eU5hbWVzLT5uZXh0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0
ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8
T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlmIChi
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgewor
ICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5
SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
ZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlk
ZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJ
ZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5m
b3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV92
YWx1ZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlk
ZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDogewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggMDg1
YWU4ZDE5OTc2Yjg4NmYwMDE5Zjg1ZmE2N2IwMmJlMTRjZGE1ZS4uM2Q3MGNkNTQzZWNmYWU5MDIy
NTAyOTYwMWEwZDQwNWVjNjcxYjJkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmgKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0
cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSA6OkpTQzo6T3Bjb2Rl
SUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhD
aGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lU
SF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5
dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfQllU
RUNPREVfV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSBvcF93aWRlMTY7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSBvcF93aWRlMzI7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3RocyA9IDo6SlNDOjpvcGNvZGVMZW5ndGhz
OwpAQCAtNDEsNyArNDMsOSBAQCBzdHJ1Y3QgSlNPcGNvZGVUcmFpdHMgewogCiBzdHJ1Y3QgV2Fz
bU9wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSBXYXNtT3Bjb2RlSUQ7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50
cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfV0FTTV9XSVRIX0NIRUNLUE9JTlRT
KTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1l
dGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhfTUVUQURB
VEEpOworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMg
PD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
T3Bjb2RlSUQgd2lkZTE2ID0gd2FzbV93aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNv
ZGVJRCB3aWRlMzIgPSB3YXNtX3dpZGUzMjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVu
c2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gd2FzbU9wY29kZUxlbmd0aHM7CkBAIC05OCwxMiArMTAy
LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJ
RDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRzPigpKQorICAgICAgICAgICAg
cmV0dXJuIE9wY29kZVNpemU6OldpZGUzMjsKKyAgICAgICAgcmV0dXJuIGlzV2lkZTE2PFRyYWl0
cz4oKSA/IE9wY29kZVNpemU6OldpZGUxNiA6IE9wY29kZVNpemU6Ok5hcnJvdzsKKyAgICB9CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBib29s
IGhhc01ldGFkYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFp
dHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhOwogICAgIH0KIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIGJvb2wg
aGFzQ2hlY2twb2ludHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRy
YWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CisgICAg
fQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAg
aW50IHNpemVTaGlmdEFtb3VudCgpIGNvbnN0CiAgICAgewpAQCAtMTM3LDYgKzE1NSwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBUOjpkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4odGhpcykpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFQsIE9wY29kZVNp
emUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIFQgYXNLbm93
bldpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCgoaXM8VCwgVHJhaXRzPigpKSk7
CisgICAgICAgIHJldHVybiBUKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdHlwZW5hbWUgVHlwZUJ5
U2l6ZTx3aWR0aD46OnVuc2lnbmVkVHlwZSo+KHRoaXMgKyAod2lkdGggPT0gT3Bjb2RlU2l6ZTo6
TmFycm93ID8gMSA6IDIpKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5h
bWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgVCogY2FzdCgpCiAgICAgewpAQCAtMTYx
LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTE2PFRy
YWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bj
b2RlU2l6ZTo6V2lkZTE2Pio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7Cisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lk
ZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KQEAgLTE2OSwxNCArMTk0LDE2IEBAIHB1YmxpYzoKICAgICB7CiAK
ICAgICAgICAgQVNTRVJUKGlzV2lkZTMyPFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9Owog
CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7
CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoSW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVy
IG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIHN0cnVjdCBXYXNtSW5zdGFuY2Ug
OiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVJRD4gewogfTsKK3N0YXRpY19hc3Nl
cnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2Ft
ZSBhcyBieXRlIG1hdGgiKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTJkNjkxOTMxYzZjNzk0OGU1NTdlNGY1NjkyM2FlMzQ5MGZlYjllOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0
YWRhdGEuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNs
YXNzIEl0ZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKKyAgICBHZW5lcmljID0gMSA8PCAwLAorICAg
IEZhc3RBcnJheSA9IDEgPDwgMSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IG51bWJlck9mSXRl
cmF0aW9uTW9kZXMgPSAyOworCitPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9D
TEFTU19XSVRIX0lOVEVSR1JBTFMoSXRlcmF0aW9uTW9kZSk7CisKK3N0cnVjdCBJdGVyYXRpb25N
b2RlTWV0YWRhdGEgeworICAgIHVpbnQ4X3Qgc2Vlbk1vZGVzIHsgMCB9OworICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHNlZW5Nb2RlcykpID09IHNpemVvZihJdGVyYXRpb25Nb2Rl
KSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggMmQxNDNiOWNmNjc0MzA1
ZDQwYzkxZWIwYWUzNTEzMzEyNTY5NDQxZi4uYmJlMWY2N2ZmYmVmZThlOGJiMTM2N2ViNmM3ZWQ2
N2NiYWE4YWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTYwLDE0ICs2MCwzMSBAQCB2b2lkIExMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwg
Y29uc3QgRgogICAgIH0KIAogICAgIGF1dG8mIGluc3RydWN0aW9uID0gbV9vd25lci0+aW5zdHJ1
Y3Rpb25zKCkuYXQobV9ieXRlY29kZU9mZnNldC5nZXQoKSk7Ci0gICAgY2xlYXJMTEludEdldEJ5
SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0
KCkpKTsKKyAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CisgICAgY2FzZSBv
cF9nZXRfYnlfaWQ6CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAgICBj
bGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5t
ZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkp
OworICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRh
ZGF0YSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV92YWx1ZU1v
ZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
IH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEpCit2
b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJM
TEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICAv
LyBLZWVwIGhpdENvdW50Rm9yTExJbnRDYWNoaW5nIHZhbHVlLgotICAgIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOworICAgIG1ldGFkYXRh
LmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5oCmluZGV4IDIyMGZmZjNlM2JmNTQzNDFlOTYxYzgyZGY4YzRlOGM5MDAwNzM0YmUuLjFk
NTk1N2VmZjgxMDkyYTFkYWJkZWU1MDI1Y2FjNWU2ZjM4Njc4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnN0YWxsKFZNJik7CiAKLSAgICBzdGF0aWMgdm9p
ZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6TWV0YWRhdGEmKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmKTsKIAog
ICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVybiBt
X2tleTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggMTg1
MWI2M2M3Y2E2YWVmMmZiMzZiZjJmODdlOTJhMTllMGQ0MGMxOC4uYWE4ODU5YWRkNjI4NjBmZmRh
ZGI0ZDIyMjg3YzM0YjA3Y2U1YjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaApAQCAtMTQ4LDYgKzE0OCw5IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0
V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6OmdldE1TQlNldENvbnN0ZXhwcihtCiAgICAg
bWFjcm8oT3BUYWlsQ2FsbCkgXAogICAgIG1hY3JvKE9wQ2FsbEV2YWwpIFwKICAgICBtYWNybyhP
cENvbnN0cnVjdCkgXAorICAgIG1hY3JvKE9wSXRlcmF0b3JPcGVuKSBcCisgICAgbWFjcm8oT3BJ
dGVyYXRvck5leHQpIFwKKwogCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApp
bmRleCA1ZGIxOGM2NDgyZDc2ZDRmYTdiNDZlOThiOWY5NzAwZGMzODYzMGY0Li45NDY1OGIwOTZi
ZjE5M2M4N2NmZDcxYTlmNWJkZTE1ZjYxMzMyYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTIwLDYgKzEyMCwxNiBAQCBpbmxp
bmUgYm9vbCBpc0FueVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlKQogICAgIHJldHVybiB0cnVl
OwogfQogCitpbmxpbmUgYm9vbCBpc1N1YnR5cGVTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7CisgICAgcmV0dXJuICEodmFsdWUgJiB+
Y2F0ZWdvcnkpICYmIHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBzcGVjdWxhdGlvbkNvbnRhaW5z
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICBy
ZXR1cm4gISEodmFsdWUgJiBjYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKIGlubGluZSBib29sIGlz
Q2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiAhISh2
YWx1ZSAmIFNwZWNDZWxsKSAmJiAhKHZhbHVlICYgflNwZWNDZWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAppbmRleCA5NjEwZGNlNWNkYmMzZWMw
OWNlMzNiMWQ2YmNjNGIzZmY4YTZjM2M4Li5lOWJmOTUzMWY3YmE1OTU3MzExMGUzMWE3YTQ0Y2Qy
MjhiNzU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Vw
ZXJTYW1wbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2Ft
cGxlci5oCkBAIC00OCw2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnX3N1cGVyU2Ft
cGxlckNvdW50LS07CiAgICAgfQogCisgICAgdm9pZCByZWxlYXNlKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2RvU2FtcGxlKTsKKyAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOworICAg
ICAgICBtX2RvU2FtcGxlID0gZmFsc2U7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgbV9k
b1NhbXBsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYzZDM2MmNhYzE5ZDQ5Mzk4OTQ3Nzdi
ZWRhN2MwYWMyZDYzNjA2M2YuLjhmZWRlNjJiNTMwZWJkMTAxZmVkYTYxYWJhYjk0OWEzZjNiMzU5
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MDE2LDE0ICs0MDE2LDE1IEBAIGJvb2wgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2Rl
LCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBF
eHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9v
cE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKIHsKICAgICBib29sIGlzRm9y
QXdhaXQgPSBmb3JMb29wTm9kZSA/IGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkgOiBmYWxzZTsK
LSAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgKGlzRm9yQXdhaXQgJiYgaXNBc3luY0Z1bmN0aW9u
UGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkpOworICAgIGF1dG8gc2hvdWxkRW1pdEF3YWl0ID0gaXNG
b3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObzsKKyAgICBBU1NFUlQoIWlz
Rm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSk7CiAKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXRO
b2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
aXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQo
KSwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSk7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gaXNGb3JBd2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJh
dG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihzdWJqZWN0
LmdldCgpLCBub2RlKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5l
eHQpOwogCiAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00MTMwLDcg
KzQxMzEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAgICB9CiAKICAgICAgICAg
ewotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5n
ZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6
IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFs
dWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRF
bWl0QXdhaXQpOwogCiAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdU
ZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUu
Z2V0KCkpOwogICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDE0Myw3ICs0MTQ0LDE0NSBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUsIEV4cHJlc3NpbwogICAgICAgICBwb3BGaW5hbGx5Q29udHJvbEZsb3dTY29wZSgpOwog
ICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpIHsKICAgICAgICAgICAgIC8vIEl0ZXJhdG9y
Q2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4KLSAgICAgICAgICAgIGVt
aXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3
YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVy
aWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hvdWxkRW1pdEF3YWl0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOworfQorCisKK3ZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9p
ZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUq
IGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCit7CisgICAgaWYg
KCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwgaXMzMkJpdCgpIHx8IChmb3JM
b29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpKSkgeworICAgICAgICBlbWl0R2Vu
ZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1YmplY3ROb2RlLCBjYWxsQmFjaywgZm9yTG9vcE5vZGUs
IGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaXRlcmFibGUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0Tm9kZShp
dGVyYWJsZS5nZXQoKSwgc3ViamVjdE5vZGUpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0
ZXJhdG9yU3ltYm9sID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhYmxlLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBuZXh0T3JJbmRleCA9IG5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
dGVyYXRvciA9IG5ld1RlbXBvcmFyeSgpOworICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywg
bnVsbHB0ciwgMCk7CisgICAgbW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBpdGVyYWJsZS5nZXQo
KSk7CisgICAgZW1pdEl0ZXJhdG9yT3BlbihpdGVyYXRvci5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0
KCksIGl0ZXJhdG9yU3ltYm9sLmdldCgpLCBhcmdzLCBub2RlKTsKKworICAgIFJlZjxMYWJlbD4g
bG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gdHJ5U3RhcnRMYWJlbCA9IG5l
d0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5VmlhVGhyb3dMYWJlbCA9IG5ld0xhYmVs
KCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxM
YWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBlbmRDYXRjaExh
YmVsID0gbmV3TGFiZWwoKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1Rl
bXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKwor
ICAgIC8vIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvcidzIGxpZmV0aW1lIG11c3QgYmUgbG9u
Z2VyIHRoYW4gSXRlcmF0b3JDbG9zZUNvbnRleHQuCisgICAgRmluYWxseUNvbnRleHQgZmluYWxs
eUNvbnRleHQoKnRoaXMsIGZpbmFsbHlMYWJlbC5nZXQoKSk7CisgICAgcHVzaEZpbmFsbHlDb250
cm9sRmxvd1Njb3BlKGZpbmFsbHlDb250ZXh0KTsKKworICAgIHsKKyAgICAgICAgUmVmPExhYmVs
U2NvcGU+IHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKKworICAgICAg
ICBSZWY8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRMYWJlbChs
b29wU3RhcnQuZ2V0KCkpOworICAgICAgICBlbWl0TGFiZWwoKnNjb3BlLT5jb250aW51ZVRhcmdl
dCgpKTsKKyAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgaWYgKGZvckxvb3BOb2Rl
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmb3JMb29wTm9kZS0+aXNGb3JPZk5vZGUo
KSk7CisgICAgICAgICAgICBwcmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRp
b24oZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAgICAgICAgICBlbWl0RGVi
dWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkb25lID0gbmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICAg
ICAgICAgIG1vdmUobmV4dEFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKwor
ICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgaXRl
cmFibGUuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBuZXh0QXJncywgbm9kZSk7CisgICAgICAg
ICAgICBlbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBsb29wRG9uZS5nZXQoKSk7CisgICAgICAg
IH0KKworICAgICAgICBlbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQoKSk7CisgICAgICAgIFRy
eURhdGEqIHRyeURhdGEgPSBwdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIGZpbmFsbHlWaWFU
aHJvd0xhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRGaW5hbGx5KTsKKyAgICAg
ICAgY2FsbEJhY2soKnRoaXMsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgZW1pdEp1bXAobG9vcFN0
YXJ0LmdldCgpKTsKKworICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBhYnJ1
cHQgY29tcGxldGlvbnMuCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZpbmFsbHkgYmxvY2sg
Zm9yIHRoZSBlbnVtZXJhdGlvbi4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5VmlhVGhy
b3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBwb3BUcnkodHJ5RGF0YSwgZmluYWxseVZpYVRo
cm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlCb2R5TGFi
ZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZpbmFsbHlF
eGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworCisgICAgICAgICAgICBlbWl0T3V0
T2ZMaW5lRmluYWxseUhhbmRsZXIoZmluYWxseUNvbnRleHQuY29tcGxldGlvblZhbHVlUmVnaXN0
ZXIoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCB0cnlEYXRhKTsK
KyAgICAgICAgICAgIG1vdmUoZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5
Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGVtaXRKdW1w
KGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxs
eUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIG1vdmVFbXB0eVZhbHVlKGZpbmFsbHlFeGNlcHRp
b25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHkgZmFsbCB0aHJvdWdo
IGNhc2UuCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7Cisg
ICAgICAgICAgICByZXN0b3JlU2NvcGVSZWdpc3RlcigpOworCisgICAgICAgICAgICBSZWY8TGFi
ZWw+IGZpbmFsbHlEb25lID0gbmV3TGFiZWwoKTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRv
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2Qu
Z2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0
dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1
cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgVHJ5RGF0YSogcmV0dXJuQ2FsbFRy
eURhdGEgPSBwdXNoVHJ5KHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSwgY2F0Y2hMYWJlbC5nZXQo
KSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkQ2F0Y2gpOworCisgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBtb3Zl
KHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAg
ICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3Rh
cnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQo
KSksIGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisKKyAgICAg
ICAgICAgIGVtaXRMYWJlbChmaW5hbGx5RG9uZS5nZXQoKSk7CisgICAgICAgICAgICBlbWl0Rmlu
YWxseUNvbXBsZXRpb24oZmluYWxseUNvbnRleHQsIGVuZENhdGNoTGFiZWwuZ2V0KCkpOworCisg
ICAgICAgICAgICBwb3BUcnkocmV0dXJuQ2FsbFRyeURhdGEsIGZpbmFsbHlEb25lLmdldCgpKTsK
KworICAgICAgICAgICAgLy8gQ2F0Y2ggYmxvY2sgZm9yIGV4Y2VwdGlvbnMgdGhhdCBtYXkgYmUg
dGhyb3duIHdoaWxlIGNhbGxpbmcgdGhlIHJldHVybgorICAgICAgICAgICAgLy8gaGFuZGxlciBp
biB0aGUgZW51bWVyYXRpb24gZmluYWxseSBibG9jay4gVGhlIG9ubHkgcmVhc29uIHdlIG5lZWQg
dGhpcworICAgICAgICAgICAgLy8gY2F0Y2ggYmxvY2sgaXMgYmVjYXVzZSBpZiBlbnRlcmVkIHRo
ZSBhYm92ZSBmaW5hbGx5IGJsb2NrIGR1ZSB0byBhIHRocm93bgorICAgICAgICAgICAgLy8gZXhj
ZXB0aW9uLCB0aGVuIHdlIHdhbnQgdG8gcmUtdGhyb3cgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBv
biBleGl0aW5nCisgICAgICAgICAgICAvLyB0aGUgZmluYWxseSBibG9jay4gT3RoZXJ3aXNlLCB3
ZSdsbCBsZXQgYW55IG5ldyBleGNlcHRpb24gcGFzcyB0aHJvdWdoLgorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChjYXRjaExhYmVsLmdldCgpKTsKKworICAgICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFy
eSgpOworICAgICAgICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihleGNlcHRp
b25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3Rlcigp
LCByZXR1cm5DYWxsVHJ5RGF0YSk7CisgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBh
IHN5bnRoZXNpemVkIGNhdGNoIGJsb2NrIGFuZCB3ZSdyZSBndWFyYW50ZWVkIHRvIG5ldmVyIG5l
ZWQKKyAgICAgICAgICAgICAgICAvLyB0byByZXNvbHZlIGFueSBzeW1ib2xzIGZyb20gdGhlIHNj
b3BlLCB3ZSBjYW4gc2tpcCByZXN0b3JpbmcgdGhlIHNjb3BlCisgICAgICAgICAgICAgICAgLy8g
cmVnaXN0ZXIgaGVyZS4KKworICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzRW1wdHko
bmV3VGVtcG9yYXJ5KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSksIHRocm93TGFi
ZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1vdmUoZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCks
IGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBlbWl0
TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdFRocm93KGV4Y2Vw
dGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChlbmRDYXRj
aExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
YnJlYWtMYWJlbElzQm91bmQgPSBzY29wZS0+YnJlYWtUYXJnZXRNYXlCZUJvdW5kKCk7CisgICAg
ICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkKKyAgICAgICAgICAgIGVtaXRMYWJlbChzY29wZS0+
YnJlYWtUYXJnZXQoKSk7CisgICAgICAgIHBvcEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKCk7Cisg
ICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgeworICAgICAgICAgICAgLy8gSXRlcmF0b3JD
bG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93LgorICAgICAgICAgICAgZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBFbWl0QXdhaXQ6Ok5v
KTsKICAgICAgICAgfQogICAgIH0KICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwpAQCAt
NDI2NSw1NiArNDQwNCw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNF
bXB0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICBPcElzRW1wdHk6OmVt
aXQodGhpcywgZHN0LCBzcmMpOwogICAgIHJldHVybiBkc3Q7CiB9Ci0gICAgCi1SZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIHsK
LSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKLSAg
ICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAg
ICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJn
dW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVt
aXRBd2FpdDo6WWVzKQotICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7Ci0gICAgfQotICAgIHsK
LSAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOwotICAgICAgICBl
bWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09i
amVjdC5nZXQoKSk7Ci0gICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Ci0gICAgICAgIGVtaXRMYWJlbCh0eXBl
SXNPYmplY3QuZ2V0KCkpOwotICAgIH0KLSAgICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCi17Ci0g
ICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIs
IDEpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9y
KTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVl
KTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+
ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZHN0
OwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3Rl
cklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRB
d2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKLSAgICBl
bWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhv
ZC5nZXQoKSksIGRvbmUuZ2V0KCkpOwotCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
bmV3VGVtcG9yYXJ5KCk7Ci0gICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMs
IG51bGxwdHIpOwotICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVy
YXRvcik7Ci0gICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRp
dm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAg
IGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKLSAgICAgICAgZW1pdEF3YWl0KHZh
bHVlLmdldCgpKTsKLQotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3Jh
cnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKLSAgICBlbWl0VGhyb3dUeXBlRXJyb3Io
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwotICAgIGVt
aXRMYWJlbChkb25lLmdldCgpKTsKLX0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaElu
ZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGlu
ZGV4UmVnaXN0ZXIpCiB7CkBAIC00NTU1LDcgKzQ2NDQsMzUgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVySUQqIHZhbHVlKQogICAgIG1vdmUodmFsdWUsIGdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yT3BlbihS
ZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQq
IHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBm
cmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNp
emVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyArK2kpCisg
ICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOworCisgICAgaWYgKHNob3Vs
ZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHBy
ZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKG5v
ZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAg
T3BJdGVyYXRvck9wZW46OmVtaXQodGhpcywgaXRlcmF0b3IsIG5leHRPckluZGV4LCBzeW1ib2xJ
dGVyYXRvciwgaXRlcmFibGUudGhpc1JlZ2lzdGVyKCksIGl0ZXJhYmxlLnN0YWNrT2Zmc2V0KCkp
OworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVy
SUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0
ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxs
IGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7ICsraSkK
KyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CisKKyAgICBpZiAoc2hv
dWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZUV4
cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBlbWl0RXhwcmVzc2lvbkluZm8o
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAg
ICBPcEl0ZXJhdG9yTmV4dDo6ZW1pdCh0aGlzLCBkb25lLCB2YWx1ZSwgaXRlcmFibGUsIG5leHRP
ckluZGV4LCBpdGVyYXRvci50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iuc3RhY2tPZmZzZXQoKSk7
Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJh
dG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkK
IHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAg
ZW1pdENhbGxJdGVyYXRvcihpdGVyYXRvci5nZXQoKSwgYXJndW1lbnQsIG5vZGUpOwpAQCAtNDU2
Myw2ICs0NjgwLDU3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRl
cmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4CiAgICAgcmV0dXJuIGl0ZXJh
dG9yLmdldCgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJh
dG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBS
ZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUs
IEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMg
bmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRN
ZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwg
bm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8p
OworCisgICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAg
ICAgIGVtaXRBd2FpdChkc3QpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZjxMYWJlbD4gdHlw
ZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2Jq
ZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBl
bWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iX3MpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9
CisgICAgcmV0dXJuIGRzdDsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBj
b25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIENh
bGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIG1v
dmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBtb3Zl
KG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0
Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBkc3Q7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBpdGVy
YXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0Vt
aXRBd2FpdCkKK3sKKyAgICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwg
aXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSks
IGRvbmUuZ2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIp
OworICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Cisg
ICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQo
KSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgIGlmIChkb0Vt
aXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgp
KTsKKworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFs
dWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKKyAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgIGVtaXRMYWJlbChk
b25lLmdldCgpKTsKK30KKworCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLmFzeW5jSXRlcmF0
b3JTeW1ib2wpOwpAQCAtNDU3NSw3ICs0NzQzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EK
ICAgICBlbWl0SnVtcChhc3luY0l0ZXJhdG9yRm91bmQuZ2V0KCkpOwogICAgIGVtaXRMYWJlbChh
c3luY0l0ZXJhdG9yTm90Rm91bmQuZ2V0KCkpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNv
bW1vbkl0ZXJhdG9yID0gZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFy
Z3VtZW50LCBub2RlKTsKICAgICBtb3ZlKGl0ZXJhdG9yLmdldCgpLCBjb21tb25JdGVyYXRvci5n
ZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwpA
QCAtNDYwNCw3ICs0NzcyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIHsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKICAgICB7Ci0gICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50
LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBu
b2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgICAgIFJlZjxM
YWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAtNDY0Miw3ICs0ODEwLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGVt
aXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01l
dGhvZEZvdW5kLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBFbWl0QXdhaXQgZW1pdEF3
YWl0SW5JdGVyYXRvckNsb3NlID0gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0dlbmVyYXRvckJvZHlNb2RlID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOwotICAg
ICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwg
ZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJh
dG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9y
Q2xvc2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiRGVsZWdh
dGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIl9zKTsKIApAQCAt
NDcwMyw3ICs0ODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZW1pdExhYmVsKG5leHRFbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAg
IGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCks
IGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICBlbWl0SXRl
cmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwg
aXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKIAogICAgICAgICAgICAgZW1pdExh
YmVsKGJyYW5jaE9uUmVzdWx0LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ1MzRjZDgyOGFh
YzNkMTQwYjRmNDZjODY4NzY4MDkxNGUwZGUzMjUuLjZiNzA4ZTk2YWIxNDYwZGE2YTBhZTBjYjk1
MzY4YTc5ZGNmOGVmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgyOCw2ICs4MjgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQq
IG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0ZXIsCiAgICAgICAgICAgICBS
ZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVn
aXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJik7CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0
Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxv
b3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogICAgICAgICB2b2lkIGVtaXRFbnVtZXJhdGlvbihU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSog
c3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklE
KiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRyKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0R2V0VGVtcGxhdGVPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBUYWdnZWRUZW1wbGF0ZU5vZGUq
KTsKQEAgLTg5OCw5ICs4OTksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc0Rlcml2ZWRBcnJheShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykg
eyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBEZXJpdmVkQXJyYXlUeXBlKTsg
fQogICAgICAgICB2b2lkIGVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZh
bHVlLCBjb25zdCBTdHJpbmcmIGVycm9yKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRl
cmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0
ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6
OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0
TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKLSAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JD
bG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICB2b2lkIGVtaXRJdGVy
YXRvck9wZW4oUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBS
ZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRvciwgQ2FsbEFyZ3VtZW50cyYgaXRlcmFibGUsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yTmV4
dChSZWdpc3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFi
bGUsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBDYWxsQXJndW1lbnRzJiBpdGVyYXRvciwgY29u
c3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSop
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRl
cmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2Qs
IFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVtaXRBd2FpdDo6Tm8pOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2
YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICB2b2lk
IGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3Vs
dCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CiAKQEAgLTk1MCw5ICs5NTcsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHVzaENhdGNoU2NvcGUoVmFyaWFibGVF
bnZpcm9ubWVudCYpOwogICAgICAgICB2b2lkIGVtaXRQb3BDYXRjaFNjb3BlKFZhcmlhYmxlRW52
aXJvbm1lbnQmKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SXRlcmF0b3IoUmVnaXN0
ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSop
OwotCiAgICAgICAgIHZvaWQgZW1pdEF3YWl0KFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBl
bWl0R2V0U2NvcGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1c2hXaXRoU2NvcGUoUmVn
aXN0ZXJJRCogb2JqZWN0U2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQ0ZmRiNGRkNTRkNDkyZjkwZDJkNzIx
ZmQ3ZGFjMTJmZjdkMmY4NTAuLjJiMTVjYWE0NzEzYTg4NTY1YzRjZDA5NTI2ZjkwYzI0NWY2M2Ew
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTQ1NzIsNyArNDU3Miw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6
YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgaWYgKG1fdGFyZ2V0UGF0dGVybnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwg
dGhpcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0
b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTg4LDcgKzQ1
ODgsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwogCiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQo
KSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9k
LmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQo
KSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LnZhbHVlKTsKQEAgLTQ2MjQsNyArNDYyNCw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKIAogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5l
eHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQo
KSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRv
bmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0
ZXJhdGlvbkRvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZh
bHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7
CkBAIC00NjQyLDcgKzQ2NDIsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAKICAgICBSZWY8
TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAg
IGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMp
OwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0b3JDbG9zZWQuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKaW5kZXggMGE0YTExZjliNDBlNmIxM2M1OTY0MjI4ZTQxMTI4OWYxZDll
ZTg2Ni4uMThkYWUwMDRjNzIyY2Q2ZmRjZjg5MTJiYzVjNDIxM2E0MzFiMjQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaApAQCAtNDM5OCwxMCArNDM5OCw4IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcygKICAgICAgICAgICAgICAgICBmdW5j
dG9yKGZvck5vZGUobm9kZSkpOwogICAgICAgICB9CiAgICAgfQotICAgIGZvciAoc2l6ZV90IGkg
PSBtX3N0YXRlLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0gICAgICAgIGZ1bmN0b3IobV9z
dGF0ZS5hcmd1bWVudChpKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZM
b2NhbHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3RvcihtX3N0YXRlLmxvY2FsKGkpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gbV9zdGF0ZS5zaXplKCk7IGktLTspCisgICAgICAgIGZ1bmN0b3IobV9z
dGF0ZS5hdEluZGV4KGkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5
cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3Ry
YWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RT
dGF0ZS5oCmluZGV4IDg5N2M3MGRmZmJhMDY2YjY0OWNhZmRjYzFlZjA5MzM3NjgxMDRkMTMuLjQz
OGUxNmRlODU5NTkyNTRkOTU1NzIxYjZmMDhkYjk1ODE0ZmQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCkBAIC0xMzcsMTEg
KzEzNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1ha2VIZWFwVG9wRm9yTm9kZShlZGdlLm5vZGUo
KSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Js
b2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVu
dHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1i
ZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZU
bXBzKCk7IH0KKyAgICBBYnN0cmFjdFZhbHVlJiBhdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1
cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUm
IG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwu
b3BlcmFuZChvcGVyYW5kKTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRl
eCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGluZGV4KTsgfQogICAgIEFi
c3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFs
dWVzQXRUYWlsLmFyZ3VtZW50KGluZGV4KTsgfQorICAgIEFic3RyYWN0VmFsdWUmIHRtcChzaXpl
X3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC50bXAoaW5kZXgpOyB9CiAg
ICAgCiAgICAgdm9pZCBjbG9iYmVyU3RydWN0dXJlcygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwOTk3YmFiMDUyNTI2
NGU2ZjE2NDg1NDI0MmQ5NGNlM2I1N2UzNmRjLi5kMDEwZWUxMjdkZjRlYWYzY2U3ZDIzMDJlMzI1
NmFjOTcwMTYxMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgi
CisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VE
ZWYuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rU3RhdHVzLmgiCkBAIC0xNTcsNyArMTU4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IEhlbHBlciBmb3IgbWluIGFuZCBtYXguCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KLSAgICBib29sIGhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVN
aW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKTsKICAgICAKICAgICB2b2lkIHJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMm
LCBOb2RlKiBjYWxsVGFyZ2V0KTsKICAgICAvLyBCbG9ja3MgY2FuIGVpdGhlciBiZSB0YXJnZXRh
YmxlIChpLmUuIGluIHRoZSBtX2Jsb2NrTGlua2luZ1RhcmdldHMgb2Ygb25lIElubGluZVN0YWNr
RW50cnkpIHdpdGggYSB3ZWxsLWRlZmluZWQgYnl0ZWNvZGVCZWdpbiwKQEAgLTE3NCw3ICsxNzUs
NyBAQCBwcml2YXRlOgogICAgIC8vIEhhbmRsZSBjYWxscy4gVGhpcyByZXNvbHZlcyBpc3N1ZXMg
c3Vycm91bmRpbmcgaW5saW5pbmcgYW5kIGludHJpbnNpY3MuCiAgICAgZW51bSBUZXJtaW5hbGl0
eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5hbCB9OwogICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwo
Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICAgICAgT3BlcmFuZCBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSwKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzLAogICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxs
T3A+CkBAIC0xODgsMjcgKzE4OSwyNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlUmVjdXJz
aXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCk7CiAgICAgdW5zaWduZWQgaW5saW5pbmdD
b3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNh
bGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmlu
ZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4K
ICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFs
c2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5s
aW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhp
c0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFy
Z3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwor
ICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVy
YW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZp
cnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1
bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNh
bGxGcmFtZTo6S2luZCk7CiAgICAgdW5zaWduZWQgZ2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENh
bGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgZW51bSBjbGFzcyBD
YWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0aW1pemVkVG9KdW1wLCBJbmxpbmVkLCBEaWROb3Ro
aW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGlu
dCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5p
bmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hl
Y2tDYWxsZWUpOwotICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5r
U3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4
LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbik7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFu
dChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxG
cmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5n
QmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNr
Q2FsbGVlKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIE5vZGVUeXBl
IGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIHZvaWQgaW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZh
cmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIHZvaWQgaW5saW5lQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4g
UmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEg
Y2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIElu
dHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3Bl
cmFuZCByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KLSAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxl
RE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQs
IE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAg
IGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9k
ZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlD
b25zdHJ1Y3RvcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJy
YXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFu
ZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9u
KiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5
cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUs
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5
T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBO
b2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUs
IE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBO
b2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2Rl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsK
KyAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJ
ZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9vbCBoYW5kbGVNb2R1bGVOYW1lc3BhY2VM
b2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBH
ZXRCeVN0YXR1cyk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KQEAgLTMxOCwx
NSArMzE5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBnZXRMb2NhbE9yVG1wKG9wZXJh
bmQpOwogICAgIH0KIAotICAgIE5vZGUqIGdldChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAg
ICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgaWYgKG9wZXJhbmQu
aXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3Bl
cmFuZC50b0NvbnN0YW50SW5kZXgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5k
ZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAg
ICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKICAgICAgICAgICAg
IGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUgfHwgIW1fY29uc3RhbnRzW2NvbnN0YW50SW5k
ZXhdKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9p
bmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5kKTsKLSAgICAgICAgICAgICAgICBTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJlcHJlc2VudGF0aW9uID0gY29kZUJsb2Nr
LmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQpOworICAgICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC52aXJ0dWFs
UmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgICAgICBp
ZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fY29u
c3RhbnRzLmdyb3coY29uc3RhbnRJbmRleCArIDEpOwogICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwgbV9jb25zdGFudHMuc2l6ZSgpOyArK2kpCkBAIC0z
NDcsMTAgKzM0OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkp
IHsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKCktPmlzQ2xvc3VyZUNhbGwpIHsK
ICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBpbmxpbmVDYWxsRnJhbWUoKS0+
Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9
PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQgPT0g
VmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB3ZWFrSlNDb25zdGFudChjYWxsZWUpOwogICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSB7
CisgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZCA9PSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBkbyBzb21lIGNvbnN0
YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRoaXMgZW5hYmxlcyBDcmVhdGVUaGlzIGZvbGRpbmcu
IE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQgd2UgZG9uJ3QgaGF2ZSBzdWNoIHdhdGNocG9pbnQt
YmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1c2VzIG9mIENhbGxlZSwgc2luY2UgaW4gdGhhdAog
ICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUgZnVuY3Rpb24gaXMgYSBzaW5nbGV0b24gdGhlbiB3
ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00MTAsNyArNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9zZXRMb2NhbFF1ZXVlLnNocmluaygwKTsKICAgICB9CiAKLSAgICBOb2RlKiBzZXQoVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxT
ZXQpCisgICAgTm9kZSogc2V0KE9wZXJhbmQgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUg
c2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBzZXREaXJlY3QobV9p
bmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1ZSwgc2V0TW9kZSk7CiAg
ICAgfQpAQCAtNjkxLDE1ICs2OTIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgZmx1c2hGb3JUZXJt
aW5hbCgpOwogICAgIH0KIAorICAgIE5vZGUqIGpzQ29uc3RhbnQoRnJvemVuVmFsdWUqIGNvbnN0
YW50VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBP
cEluZm8oY29uc3RhbnRWYWx1ZSkpOworICAgIH0KKwogICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUg
Y29uc3RhbnQgc2hvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4KICAgICBOb2RlKiBqc0NvbnN0YW50
KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRUb0dyYXBo
KEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSkp
OworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFu
dFZhbHVlKSk7CiAgICAgfQogCiAgICAgTm9kZSogd2Vha0pTQ29uc3RhbnQoSlNWYWx1ZSBjb25z
dGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKSk7CisgICAgICAgIHJldHVybiBq
c0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKTsKICAgICB9CiAKICAgICAv
LyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldC9zZXQgdGhlIHRoaXMgdmFsdWUuCkBAIC04NTAsNyAr
ODU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5v
ZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIE9w
ZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBp
bnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcCA9PSBUYWlsQ2FsbCkgewpAQCAtOTU5
LDcgKzk2NSwzMyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rp
b24obV9jdXJyZW50SW5kZXgpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGlz
bid0IHF1aXRlIGEgdHJ1ZSBib3R0b20gdmFsdWUgZm9yIGV4YW1wbGUgYW55IG9iamVjdCBzcGVj
dWxhdGlvbiB3aWxsIG5vdyBiZSBPYmplY3R8T3RoZXIgYXMgdGhpcyByZXR1cm5zIG51bGwuCisg
ICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzIHdoZW4gd2UgY2FuIGFsbG9jYXRlIG9uIHRoZSBDb21w
aWxlciB0aHJlYWQuCisgICAgRnJvemVuVmFsdWUqIGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSBzcGVjKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VidHlwZVNw
ZWN1bGF0aW9uKHNwZWMsIFNwZWNPdGhlcikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5m
cmVlemUoanNOdWxsKCkpOworCisgICAgICAgIGlmIChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVj
LCBTcGVjQm9vbGVhbikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNCb29s
ZWFuKHRydWUpKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3Bl
Y0Z1bGxOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVtYmVy
KDApKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY0JpZ0lu
dCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUobV92bS0+YmlnSW50Q29uc3Rh
bnRPbmUuZ2V0KCkpOworCisgICAgICAgIGlmIChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBT
cGVjU3RyaW5nIHwgU3BlY1N5bWJvbCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVl
emUobV92bS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworCisgICAgICAgIGlmIChpc1N1
YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjQ2VsbE90aGVyIHwgU3BlY09iamVjdCkpCisgICAg
ICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisgICAgICAgIEFTU0VS
VChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjRW1wdHkpIHx8IHNwZWMgPT0gU3BlY05v
bmUpOworICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoSlNWYWx1ZSgpKTsKKyAgICB9CisK
ICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5OjpBY3Rpb24gYWN0aW9uKQogICAgIHsK
ICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2s7CkBAIC0xMTc0LDcgKzEyMDYsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBPcHRp
b25hbDogYSBjb250aW51YXRpb24gYmxvY2sgZm9yIHJldHVybnMgdG8ganVtcCB0by4gSXQgaXMg
c2V0IGJ5IGVhcmx5IHJldHVybnMgaWYgaXQgZG9lcyBub3QgZXhpc3QuCiAgICAgICAgIEJhc2lj
QmxvY2sqIG1fY29udGludWF0aW9uQmxvY2s7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1f
cmV0dXJuVmFsdWU7CisgICAgICAgIE9wZXJhbmQgbV9yZXR1cm5WYWx1ZTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFNwZWN1bGF0aW9ucyBhYm91dCB2YXJpYWJsZSB0eXBlcyBjb2xsZWN0ZWQgZnJv
bSB0aGUgcHJvZmlsZWQgY29kZSBibG9jaywKICAgICAgICAgLy8gd2hpY2ggYXJlIGJhc2VkIG9u
IE9TUiBleGl0IHByb2ZpbGVzIHRoYXQgcGFzdCBERkcgY29tcGlsYXRpb25zIG9mIHRoaXMKQEAg
LTExOTQsNyArMTIyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBDb2RlQmxvY2sqLAogICAg
ICAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAgICAgICAgICAgSlNGdW5jdGlv
biogY2FsbGVlLCAvLyBOdWxsIGlmIHRoaXMgaXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICAgICAgICAgIE9wZXJhbmQgcmV0
dXJuVmFsdWUsCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3Rh
cnQsCiAgICAgICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAg
ICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQsCkBAIC0xMjY5LDYgKzEzMDEsNyBAQCBCYXNpY0Js
b2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpCiAgICAgUmVm
PEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKEJ5dGVjb2RlSW5k
ZXgoKSwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBtX251bVRtcHMsIDEpKTsKICAgICBC
YXNpY0Jsb2NrKiBibG9ja1B0ciA9IGJsb2NrLnB0cigpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxv
Y2soV1RGTW92ZShibG9jaykpOworICAgIFZFUkJPU0VfTE9HKCJBZGRpbmcgbmV3IHVudGFyZ2V0
YWJsZSBibG9jazogIiwgYmxvY2tQdHItPmluZGV4LCAiXG4iKTsKICAgICByZXR1cm4gYmxvY2tQ
dHI7CiB9CiAKQEAgLTEzMDEsOCArMTMzNCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4K
IEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPENhbGxPcD4oKTsKLSAgICBOb2RlKiBjYWxsVGFy
Z2V0ID0gZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKTsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAt
c3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOworICAgIE5vZGUqIGNhbGxUYXJnZXQg
PSBnZXQoY2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsK
KyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihzdGFja09mZnNldElu
UmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7
CiAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIGN1
cnJlbnRDb2RlT3JpZ2luKCksCkBAIC0xMzEwLDggKzEzNDMsOCBAQCBCeXRlQ29kZVBhcnNlcjo6
VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCBObwogCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJh
bWU6OmtpbmRGb3IoY2FsbE1vZGUpOwogCi0gICAgcmV0dXJuIGhhbmRsZUNhbGwoYnl0ZWNvZGUu
bV9kc3QsIG9wLCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAotICAgICAgICBieXRlY29k
ZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigp
KTsKKyAgICByZXR1cm4gaGFuZGxlQ2FsbChkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9jdXJy
ZW50SW5kZXguY2hlY2twb2ludCgpLCBKSVRUeXBlOjpERkdKSVQpLCBvcCwga2luZCwgcGMtPnNp
emUoKSwgY2FsbFRhcmdldCwKKyAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3Io
Ynl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSksIHJlZ2lzdGVyT2Zmc2V0LCBj
YWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cmVmaW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUq
IGNhbGxUYXJnZXQpCkBAIC0xMzIxLDcgKzEzNTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpy
ZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2Fs
bAogfQogCiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwoCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNh
bGxGcmFtZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgT3BlcmFu
ZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIENhbGxMaW5rU3RhdHVz
IGNhbGxMaW5rU3RhdHVzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewpAQCAtMTYzNyw3
ICsxNjcwLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFy
aWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxl
ZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJp
YW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRp
b25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGNvbnN0
IEluc3RydWN0aW9uKiBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY3VycmVudEluc3RydWN0
aW9uOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5s
aW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CkBAIC0xNjcxLDcgKzE3
MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIHNpemVfdCBhcmd1bWVudFBvc2l0
aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgaWYg
KHJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChyZXN1bHQpLnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICByZXN1bHQgPSBt
X2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0KTsKIAogICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPSBudWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpKSB7CkBAIC0xODIzLDcgKzE4NTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpp
bmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBD
YQogICAgIG1fY3VycmVudEluc3RydWN0aW9uID0gc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb247CiB9
CiAKLUJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxS
ZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0
ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2Nr
KiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpCitCeXRlQ29kZVBh
cnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZh
cmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBj
YWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVu
c2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBi
b29sIG5lZWRzVG9DaGVja0NhbGxlZSkKIHsKICAgICBWRVJCT1NFX0xPRygiICAgIENvbnNpZGVy
aW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwogCkBAIC0xOTAwLDcgKzE5MzMsNyBAQCBCeXRl
Q29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
Q2FsbFZhcmlhbnQoTm9kZSogYwogICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJ
bmxpbmVkOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmco
Tm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCitib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9w
ZXJhbmQgcmVzdWx0LAogICAgIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywg
aW50IGZpcnN0RnJlZVJlZywgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwK
ICAgICBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQpAQCAtMjA0
NCw3ICsyMDc3LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmdldElubGluaW5nQmFsYW5j
ZShjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMKIH0KIAogQnl0ZUNvZGVQYXJz
ZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KAotICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25z
dCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsCisgICAgTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMs
CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAog
ICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICBCeXRlY29kZUluZGV4IG5l
eHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbikKQEAgLTIyMjAsNyArMjI1Myw3IEBAIEJ5dGVDb2RlUGFy
c2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
ZygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCiB7CiAgICAgQVNTRVJUKG9wID09IEFyaXRoTWluIHx8IG9wID09IEFyaXRoTWF4
KTsKIApAQCAtMjI1MCw3ICsyMjgzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWlu
TWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXMKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
Q2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQog
ewogICAgIFZFUkJPU0VfTE9HKCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMs
ICJcbiIpOwogCkBAIC0yMzg5LDI3ICsyNDIyLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJ
CiAgICAgICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIGluc2Vy
dENoZWNrcygpOwogCi0gICAgICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQ7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKGludHJpbnNpYykgewotICAgICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJp
bnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAg
ICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6VmFsdWVzOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBcnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAg
ICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJ
dGVyYXRpb25LaW5kOjpLZXlzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlF
bnRyaWVzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpF
bnRyaWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgT3B0aW9uYWw8SXRlcmF0aW9u
S2luZD4ga2luZCA9IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKGludHJpbnNpYyk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghIWtpbmQpOwogCiAgICAgICAgICAgICAvLyBBZGQgdGhl
IGNvbnN0YW50IGJlZm9yZSBleGl0IGJlY29tZXMgaW52YWxpZCBiZWNhdXNlIHdlIG1heSB3YW50
IHRvIGluc2VydCAocmVkdW5kYW50KSBjaGVja3Mgb24gaXQgaW4gRml4dXAuCi0gICAgICAgICAg
ICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGtpbmQpKSk7CisgICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpraW5kKSkpOwogCiAgICAgICAgICAgICAvLyBX
ZSBkb24ndCBoYXZlIGFuIGV4aXN0aW5nIGVycm9yIHN0cmluZy4KICAgICAgICAgICAgIHVuc2ln
bmVkIGVycm9yU3RyaW5nSW5kZXggPSBVSU5UMzJfTUFYOwpAQCAtMzY0Nyw3ICszNjY0LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRh
cmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2Fs
bFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1
cmUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0
PGludD4oMSArIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTM2NjYsNyArMzY4Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJ
VENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKIAogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQu
aW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7
CkBAIC0zNzgwLDcgKzM3OTcsNyBAQCBzdGF0aWMgdm9pZCBibGVzc0NhbGxET01HZXR0ZXIoTm9k
ZSogbm9kZSkKICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKIH0K
IAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK2Jv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29u
c3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewogICAgIGlmICghdmFy
aWFudC5kb21BdHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzg1OSw3ICsz
ODc2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1
Y3RvcigKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5j
dGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1
bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUgdHlwZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGlmICghaXNUeXBlZFZpZXcodHlwZSkpCkBAIC0zOTE2
LDcgKzM5MzMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3Ry
dWN0b3IoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCi0gICAgTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJh
bmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICBIYW5kbGluZyBjb25zdGFu
dCBpbnRlcm5hbCBmdW5jdGlvbiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIlxuIik7CkBAIC02NjA0
LDIwICs2NjIxLDQwOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAor
CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6IHsKICAgICAgICAgICAgIGhhbmRs
ZVZhcmFyZ3NDYWxsPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDb25z
dHJ1Y3RWYXJhcmdzLCBDYWxsTW9kZTo6Q29uc3RydWN0KTsKICAgICAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAi
aGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJh
c2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Y29uc3RydWN0X3ZhcmFyZ3MpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBj
YXNlIG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7CiAgICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1f
ZHN0LCBDYWxsRXZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUu
bV9jYWxsZWUpLCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9u
KCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQot
ICAgICAgICAgICAgCisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Bl
bj4oKTsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRl
cmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlJlbWFpbmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAg
QVNTRVJUKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7
CisgICAgICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogY29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAg
ICAgICBCeXRlY29kZUluZGV4IHN0YXJ0SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAg
ICAgICAgTm9kZSogc3ltYm9sSXRlcmF0b3IgPSBnZXREaXJlY3QoYnl0ZWNvZGUubV9zeW1ib2xJ
dGVyYXRvcik7CisgICAgICAgICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
KCk7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJy
YXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkg
eworICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRp
b25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0
Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7
CisKKyAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5j
dGlvbiA9IG1fZ3JhcGguZnJlZXplKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uKCkpOworICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlJlbWFpbmlu
Z01vZGVzID09IDEpCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBP
cEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9yKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZmFz
dEFycmF5QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBrbm93bkl0ZXJGdW5jdGlvbiA9IGFkZFRvR3JhcGgoQ29t
cGFyZUVxUHRyLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0
ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgo
SXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhBcnJheVR5cGUpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJs
ZSkpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dy
YXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+
dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2spOworICAgICAgICAgICAgICAgICAg
ICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChnZW5lcmljQmxvY2spOworCisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGFuZFJlc3VsdCA9IGFkZFRvR3JhcGgoQXJpdGhCaXRB
bmQsIGlzQXJyYXksIGtub3duSXRlckZ1bmN0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAv
LyBXZSBrbm93IHRoZSBiaXQgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMgc28gaXQncyBvayB0byBl
eGl0IGhlcmUuCisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFuZFJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKworICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGZhc3RBcnJheUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVh
ckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRoZSBi
cmFuY2ggYWJvdmUgbWF5IGhhdmUgbWFkZSBleGl0IGludmFsaWQgYnV0IGl0J3MgYWN0dWFsbHkg
b2suCisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29u
c3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbktpbmQ6OlZhbHVl
cykpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGFkZFRvR3JhcGgoTmV3QXJy
YXlJdGVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJ
dGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBnZXQoYnl0ZWNvZGUu
bV9pdGVyYWJsZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVs
ZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpL
aW5kKSksIGl0ZXJhdG9yLCBraW5kTm9kZSk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1faXRlcmF0b3IsIGl0ZXJhdG9yKTsKKworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5t
X25leHQsIGpzQ29uc3RhbnQoSlNWYWx1ZSgpKSk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBv
dXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldEJ5VmFsIGFnYWluIHNv
IHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgbV9jdXJyZW50
SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudElu
c3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgcHJvY2Vz
c1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJ
bmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5k
ZXg7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
KSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykgeworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygp
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWdl
bmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkg
PSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JPcGVuPihjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENh
bGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFs
aXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAgICAgICAgICAgICAgcHJvZ3Jl
c3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9
IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBu
b3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9j
aygpOworICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1f
YnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJy
YW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5u
b3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgYWRkVG9HcmFwaChJc09iamVj
dCwgaXRlcmF0b3IpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBub3RPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUg
YSB0eXBlIGVycm9yLi4uCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3csIGpz
Q29uc3RhbnQoanNOdWxsKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5h
bCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2NrOworICAgICAgICAgICAgICAg
ICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8qIG5leHRJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKCkuZW5zdXJlKG5leHRJbXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBl
IHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAg
ICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRl
Rm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNl
bGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRDb2RlT3JpZ2luKCkpOworCisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChi
eXRlY29kZS5tX25leHQsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIobmV4dEltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBn
ZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKworICAgICAgICAgICAgICAgICAgICAv
LyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBh
Z2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkg
KyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIWdlbmVyYXRlZENhc2UpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQg
PSBqc0NvbnN0YW50KEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3Jj
ZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2l0ZXJhdG9yLCByZXN1
bHQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX25leHQsIHJlc3VsdCk7CisKKyAg
ICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4g
b3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAg
ICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRl
eC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwor
ICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAg
ICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3Vy
cmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29u
dGludWF0aW9uOworICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfaXRlcmF0b3Jfb3Blbik7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAgdWludDMyX3Qg
c2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXM7CisKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9kZXMgPSBXVEY6OmJpdENvdW50
KHNlZW5Nb2Rlcyk7CisgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA8
PSBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ2Fz
ZSA9IGZhbHNlOworCisgICAgICAgICAgICBCeXRlY29kZUluZGV4IHN0YXJ0SW5kZXggPSBtX2N1
cnJlbnRJbmRleDsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2Rl
T3JpZ2luKCkpOworICAgICAgICAgICAgYXV0byYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpOworICAgICAgICAgICAgQmFzaWNCbG9jayogZ2VuZXJpY0Jsb2NrID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IGFsbG9jYXRlVW50YXJnZXRhYmxl
QmxvY2soKTsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkZh
c3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxp
ZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3Qgc2V0IHVwIHRoZSB3YXRjaHBvaW50IGNv
bmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5lc3MuCisgICAgICAgICAgICAgICAgbV9ncmFw
aC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0KTsKKworICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlJlbWFpbmluZ01vZGVzICE9IDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaGFzTmV4dCA9IGFkZFRvR3JhcGgoSXNFbXB0
eSwgZ2V0KGJ5dGVjb2RlLm1fbmV4dCkpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmljQmxv
Y2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGZhc3RBcnJheUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOwor
CisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1f
YnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4g
PSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFu
Y2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChnZW5lcmljQmxvY2spOworICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBoYXNOZXh0
KTsKKworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZhc3RBcnJheUJsb2Nr
OworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0
b3IpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyht
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1
cmUoKSkpLCBpdGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVC
bG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAg
ICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEu
bV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBy
ZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CisKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFw
aChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJ
dGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50NTJBbnkpLCBnZXQoYnl0ZWNv
ZGUubV9pdGVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYWJsZSA9IGdl
dChieXRlY29kZS5tX2l0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYnV0dGVy
Zmx5ID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGl0ZXJhYmxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbGVuZ3RoID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKGFy
cmF5TW9kZS5hc1dvcmQoKSksIGl0ZXJhYmxlLCBidXR0ZXJmbHkpOworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIGluZGV4LCBs
ZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IC8vIFRoZSBhYm92
ZSBjb21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBlZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5kZXggYW5k
IGxlbmd0aCBhcmUgdWludDMycy4KKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0
T0spOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dy
YXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+
dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNEb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBi
cmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChkb0xvYWRCbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGlzRG9u
ZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gZG9Mb2FkQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5h
bEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6Rmll
bGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0
b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogb25lID0ganNDb25zdGFudChqc051bWJl
cigxKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbWFrZVNhZmUoYWRk
VG9HcmFwaChBcml0aEFkZCwgaW5kZXgsIG9uZSkpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBmYWxzZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbihmYWxzZSkpOworCisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGNvbnNpZGVyIG1ha2luZyB0aGlzIG5vdCB2
YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNlcyB0aHJlZSBjaGlsZAorICAgICAgICAgICAgICAgICAg
ICAvLyBzbG90cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MgorICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdD
aGlsZChnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRW
YXJBcmdDaGlsZChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDAp
OyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgorICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAg
ICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBnZXRCeVZhbCk7CisgICAgICAgICAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIGZhbHNlTm9kZSk7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVy
YXRvciksIG5ld0luZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxv
Y2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUg
dG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4
ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVj
dGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNo
Rm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBS
b2xsIGJhY2sgdGhlIGNoZWNrcG9pbnQuCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBzdGFydEluZGV4OworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGlzRG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNh
Y2hlcygpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiB0cnVlTm9kZSA9IGpzQ29uc3RhbnQo
anNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4ID0g
anNDb25zdGFudChqc051bWJlcihtYXhTYWZlSW50ZWdlcigpKSk7CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGJvdHRvbU5vZGUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fdmFsdWUsIGJvdHRvbU5vZGUpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kb25lLCB0cnVlTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50
ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6
OkZpZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIGRvbmVJbmRleCk7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuCisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZz
ZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7
CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAg
ICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAg
ICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGdlbmVyaWNCbG9jaykgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJh
dGVkQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Js
b2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisg
ICAgICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRl
cmF0b3JOZXh0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9
PSBOb25UZXJtaW5hbCk7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50
KCk7CisKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09i
amVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIG5vdERvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsK
KworICAgICAgICAgICAgICAgIE9wZXJhbmQgbmV4dFJlc3VsdCA9IE9wZXJhbmQ6OnRtcChPcEl0
ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBpdGVyYXRvclJlc3VsdCA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRh
LmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRh
cmdldChpc09iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90
VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2Jq
ZWN0LCBpdGVyYXRvclJlc3VsdCkpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1p
bmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOworICAgICAgICAgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBl
cnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAgICAgICAgICAg
ICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0
cmluZykpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dy
YXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1l
c3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zm
c2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYm90dG9tVmFs
dWUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbih2YWx1ZVByZWRp
Y2l0aW9uKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVz
dWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogZG9uZUltcGwgPSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoZG9uZUltcGwpOworCisg
ICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5
U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX2RvbmUsIHByZWRpY3Rpb24sIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoZG9u
ZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGEgdmFsdWUgZm9yIG1fdmFsdWUgc28gd2Ug
ZG9uJ3QgdGhpbmsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJv
dHRvbVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3Jh
cGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50
YWtlbiA9IEJyYW5jaFRhcmdldChjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgICAgICBi
cmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBnZXQo
Ynl0ZWNvZGUubV9kb25lKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAg
ICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQo
bmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0t
PnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodmFsdWVJ
bXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBl
OjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0
YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRl
eHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOwor
CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFs
dWVQcmVkaWNpdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcih2YWx1ZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywg
dHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRD
aGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcElu
Zm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7
CisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kb25lLCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBs
b2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92
ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9
IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rp
b24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9j
YWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29u
dGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFy
Q2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX25leHQpOwor
ICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyht
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVj
aWFsUG9pbnRlcikpOwpAQCAtNzEwNyw3ICs3NTEzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhl
IHNjb3BlIHJlZ2lzdGVyIGxhdGVyLCBhcyB0aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9t
IHRyYWNraW5nIHRoZQogICAgICAgICAgICAgLy8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2Yg
dGhlIHNjb3BlIHJlZ2lzdGVyLgogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4oKTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9
IGdldChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAg
IE5vZGUqIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNh
bGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4oKm1fdm0pKQogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHdlYWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc0
ODYsNyArNzg5Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVT
dGFja0VudHJ5KAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLAogICAgIENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBh
IGNsb3N1cmUgY2FsbC4KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBP
cGVyYW5kIHJldHVyblZhbHVlLAogICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVT
dGFydCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kIGtpbmQsCkBAIC03NDk1LDcgKzc5MDEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6
SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAsIG1fY29kZUJsb2NrKGNv
ZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQogICAgICwgbV9j
b250aW51YXRpb25CbG9jayhjb250aW51YXRpb25CbG9jaykKLSAgICAsIG1fcmV0dXJuVmFsdWUo
cmV0dXJuVmFsdWVWUikKKyAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBt
X2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCkKIHsKICAgICB7CkBAIC03
NTYxLDcgKzc5NjcsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5l
U3RhY2tFbnRyeSgKICAgICAgICAgLy8gTWFjaGluZSBjb2RlIGJsb2NrIGNhc2UuCiAgICAgICAg
IEFTU0VSVChjb2RlQmxvY2sgPT0gYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKICAgICAg
ICAgQVNTRVJUKCFjYWxsZWUpOwotICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlVlIuaXNWYWxp
ZCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXR1cm5WYWx1ZS5pc1ZhbGlkKCkpOwogICAgICAgICBB
U1NFUlQoIWlubGluZUNhbGxGcmFtZVN0YXJ0LmlzVmFsaWQoKSk7CiAKICAgICAgICAgbV9pbmxp
bmVDYWxsRnJhbWUgPSAwOwpAQCAtNzk3Niw3ICs4MzgyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2UoKQogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsK
IAogICAgICAgICAgICAgICAgIGF1dG8gbm9kZUFuZEluZGV4ID0gYmxvY2stPmZpbmRUZXJtaW5h
bCgpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGVBbmRJbmRleC5ub2RlLT5v
cCgpID09IFVucmVhY2hhYmxlKTsKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG5vZGVBbmRJbmRleC5ub2RlLCBub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJs
ZSk7CiAgICAgICAgICAgICAgICAgYmxvY2stPnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAx
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCmlu
ZGV4IGU3ZjZlNzYyNDY2OWIzMDFmNWEwMjA0OGMyNWQ0ODE1YzNhMTMzOWQuLjYxMGQ3ZDIwZWY2
NTM1ZjdhOGU5NWJjZWExMjFlZjNiOGFiNDAyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcApAQCAtMjgwLDcg
KzI4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBrZWVw
T3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxv
Y2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAg
dm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0
aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3BlcmFuZCBvcGVyYW5kKQogICAg
IHsKICAgICAgICAgTm9kZSogbGl2ZW5lc3NOb2RlID0gamV0dGlzb25lZEJsb2NrLT52YXJpYWJs
ZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgaWYgKCFsaXZlbmVzc05vZGUpCkBA
IC0zMDIsMTEgKzMwMiw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBqZXR0aXNvbkJsb2Nr
KEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmln
aW4gYm91bmRhcnlOb2RlT3JpZ2luKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygp
OyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxv
Y2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKGkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBr
ZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdp
biwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwotICAgICAgICAKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9j
aywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5v
cGVyYW5kRm9ySW5kZXgoaSkpOworCiAgICAgICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMo
YmxvY2ssIGpldHRpc29uZWRCbG9jayk7CiAgICAgfQogICAgIApAQCAtMzUyLDExICszNTAsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLy8gVGltZSB0byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRo
aW5ncyB0aGF0IG5lZWQgdG8gYmUga2VwdCBhbGl2ZSBpbiBjYXNlIHdlIE9TUgogICAgICAgICAg
ICAgLy8gZXhpdCBwcmlvciB0byBoaXR0aW5nIHRoZSBmaXJzdEJsb2NrJ3MgdGVybWluYWwsIGFu
ZCBlbmQgdXAgZ29pbmcgZG93biBhCiAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgcGF0aCB0aGFu
IHNlY29uZEJsb2NrLgotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRz
KCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpl
dHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kp
Ci0gICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVk
QmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZl
KGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNv
bmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlY29uZEJsb2NrLT5w
aGlzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCmluZGV4IDc1OWI3NzgwYTZjYzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYu
LjYwMDMzMmYxOTBmZjhiNDA0MmNkNTQyYWI5NWI1MDUzNmFkN2E3OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI3NCw2ICsyNzQsOCBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBv
cF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgogICAgIGNhc2Ugb3Bf
bG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlj
a2VuX3RhaWw6CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6CkBAIC0zMTEsNiArMzEzLDggQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJv
bV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRf
dHJhbXBvbGluZToKICAgICBjYXNlIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uOgorICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9u
ZXh0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgog
ICAgIGNhc2Ugb3BfY29uc3RydWN0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxf
dmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFhNGRlY2RhMGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIw
ZWM2NDdjNGYuLmRiYzgzMWMyZWJlMDg2Zjg3MzY2YTdlNTRhMzVlNTkzYTliMDc4ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjQxMSw3ICsy
NDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSWRlbnRpdHlXaXRo
UHJvZmlsZTogewotICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtp
bGxzLmgKaW5kZXggYmY0MzUwYzRjZDE3ZTNkNTAwNjYzOGY1NWFhYzM1YTU2NTI5OTRhMS4uZDlj
OTc0MjhmZDZhZTVlYTUwNmQwNTcyNjczMDIwZGQxYWZmMTE0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIGZvckFs
bEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9k
ZUFmdGVyLCBjb25zdAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKGJlZm9yZUlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIGlmIChhZnRl
ci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmVm
b3JlLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkgIT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgp
LmNoZWNrcG9pbnQoKSk7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5i
eXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgp
LCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9y
RXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQo
KSA9PSBhZnRlci5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgfHwgbm9kZUFmdGVyLT5vcCgpID09
IEV4aXRPSyB8fCBub2RlQWZ0ZXItPm9wKCkgPT0gSW52YWxpZGF0aW9uUG9pbnQsICJXaGVuIHRo
ZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBpdCBzaG91bGQgY2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdp
biB0byBtYXRjaCB0aGUgc3Vycm91bmRpbmcgYnl0ZWNvZGVzLiIpOwogCiAgICAgICAgICAgICBh
dXRvIGxpdmVCZWZvcmUgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYmVm
b3JlLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgICAgICBhdXRvIGxpdmVBZnRlciA9IHRtcExp
dmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBhZnRlci5ieXRlY29kZUluZGV4KCkpOwpA
QCAtMTAyLDggKzEwMiw2IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhZnRlci5ieXRlY29kZUluZGV4
KCkuY2hlY2twb2ludCgpLCAiVHJhbnNpdGlvbmluZyBhY3Jvc3MgYSBjaGVja3BvaW50IGJ1dCBi
ZWZvcmUgYW5kIGFmdGVyIGRvbid0IHNoYXJlIGFuIGlubGluZUNhbGxGcmFtZS4iKTsKLQogICAg
IC8vIERldGVjdCBraWxscyB0aGUgc3VwZXIgY29uc2VydmF0aXZlIHdheTogaXQgaXMga2lsbGVk
IGlmIGl0IHdhcyBsaXZlIGJlZm9yZSBhbmQgZGVhZCBhZnRlci4KICAgICBCaXRWZWN0b3IgbGl2
ZUFmdGVyID0gZ3JhcGgubG9jYWxzQW5kVG1wc0xpdmVJbkJ5dGVjb2RlKGFmdGVyKTsKICAgICB1
bnNpZ25lZCBudW1Mb2NhbHMgPSBncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuY3BwCmluZGV4IDIwMmQyMjUwNTNmYTlkZmJlNWMyM2M2NGJjZjhi
ZTM4NGUzZTc2NTQuLjdjYzM0YWUyZDBkNGU1Zjg0OGU2OTU3MzAyNDkyYzEyMWQ3MWZlZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuY3BwCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmJl
Z2luQmFzaWNCbG9jayhCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrKQogICAgIEFTU0VSVChiYXNpY0Js
b2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1
ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlh
Ymxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5u
dW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9m
TG9jYWxzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKKyAg
ICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IGJh
c2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2lj
QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkpOwogCiAgICAgbV9hYnN0cmFjdFZhbHVlcy5yZXNp
emUoKTsKIApAQCAtMTYxLDYgKzE2NCwxMCBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpp
bml0aWFsaXplKCkKICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChp
KS5jbGVhcigpOwogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkp
LmNsZWFyKCk7CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLnRtcChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFsdWVzQXRUYWlsLnRtcChpKS5jbGVhcigpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3Jk
ZXIoKSkgewpAQCAtMTc1LDEzICsxODIsOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpp
bml0aWFsaXplKCkKICAgICAgICAgYmxvY2stPmNmYVRoaW5rc1Nob3VsZFRyeUNvbnN0YW50Rm9s
ZGluZyA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRI
ZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7
ICsraSkgewotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5jbGVh
cigpOwotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigp
OwotICAgICAgICB9Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRh
aWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9j
ay0+dmFsdWVzQXRIZWFkLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRIZWFkW2ldLmNsZWFyKCk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldLmNs
ZWFyKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzOSw3ICsyNDIsNyBAQCBib29sIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bUxvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAgICAgIC8vIFRo
ZSBibG9jayB0cmFuc2ZlcnMgdGhlIHZhbHVlIGZyb20gaGVhZCB0byB0YWlsLgotICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uID0gdmFyaWFibGVBdChpbmRleCk7CisgICAgICAgICAgICAgICAg
ZGVzdGluYXRpb24gPSBhdEluZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTMwNCw3ICszMDcsNyBAQCBib29sIElu
UGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2stPnZh
bHVlc0F0VGFpbFtpXSA9IHZhcmlhYmxlQXQoaSk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRUYWlsW2ldID0gYXRJbmRleChpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoTm9kZUFi
c3RyYWN0VmFsdWVQYWlyJiB2YWx1ZUF0VGFpbCA6IGJsb2NrLT5zc2EtPnZhbHVlc0F0VGFpbCkK
QEAgLTM0Myw2ICszNDYsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNp
Y0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAgICAgZGF0YUxvZygiICAgTWVyZ2lu
ZyBmcm9tICIsIHBvaW50ZXJEdW1wKGZyb20pLCAiIHRvICIsIHBvaW50ZXJEdW1wKHRvKSwgIlxu
Iik7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygp
ID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgQVNTRVJU
KGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IHRvLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFp
bC5udW1iZXJPZlRtcHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsK
ICAgICAKICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAKQEAgLTM1MiwxNCArMzU2LDkg
QEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFz
aWNCbG9jayogdG8pCiAgICAgCiAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkgewogICAgIGNh
c2UgVGhyZWFkZWRDUFM6IHsKLSAgICAgICAgZm9yIChzaXplX3QgYXJndW1lbnQgPSAwOyBhcmd1
bWVudCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2FyZ3Vt
ZW50KSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmFy
Z3VtZW50KGFyZ3VtZW50KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCks
IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgZnJvbS0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKLSAgICAgICAgICAgIEFi
c3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5sb2NhbChsb2NhbCk7
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3Rp
bmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVzQXRI
ZWFkLmxvY2FsKGxvY2FsKSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmcm9tLT52YXJpYWJsZXNBdFRh
aWwuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5h
dGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXQoaW5kZXgpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRU
YWlsLmF0KGluZGV4KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5hdChpbmRleCksIGZyb20tPnZhcmlh
Ymxlc0F0VGFpbC5hdChpbmRleCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuaAppbmRleCAxODY1ZTZhMWVmZmMzZGFhZWZlNTg0Y2E4NjJjNDliYzM2ODU4NTAwLi5jNWQw
MjY4NzNlMDEwZDA3ZjM4MTFjNmM0ZmVmNTY2ZTFjYTcwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0xNTgsMTAg
KzE1OCwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4mIHZh
cmlhYmxlc0ZvckRlYnVnZ2luZygpOwogCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFyaWFibGVzLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRz
KCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAg
IHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVt
YmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0
dXJuIG1fdmFyaWFibGVzLm51bWJlck9mVG1wcygpOyB9CiAgICAgCi0gICAgQWJzdHJhY3RWYWx1
ZSYgdmFyaWFibGVBdChzaXplX3QgaW5kZXgpCisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRleChz
aXplX3QgaW5kZXgpCiAgICAgewogICAgICAgICBhY3RpdmF0ZVZhcmlhYmxlSWZOZWNlc3Nhcnko
aW5kZXgpOwogICAgICAgICByZXR1cm4gZmFzdEZvcndhcmQobV92YXJpYWJsZXNbaW5kZXhdKTsK
QEAgLTE2OSwxNyArMTcxLDE3IEBAIHB1YmxpYzoKIAogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJh
bmQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92
YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgo
bV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKICAgICB9CiAgICAgCiAgICAgQWJz
dHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZh
cmlhYmxlQXQobV92YXJpYWJsZXMubG9jYWxJbmRleChpbmRleCkpOworICAgICAgICByZXR1cm4g
YXRJbmRleChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAogICAg
IEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKKyAgICAg
ICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRleCkpOwogICAg
IH0KICAgICAKICAgICAvLyBDYWxsIHRoaXMgYmVmb3JlIGJlZ2lubmluZyBDRkEgdG8gaW5pdGlh
bGl6ZSB0aGUgYWJzdHJhY3QgdmFsdWVzIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xhenlKU1ZhbHVlLmgKaW5kZXggZjVlZWYyZjNkZjcyMTI5YTgzOGM3Njg2ZTI2Yjk2MGI1MGY1
ODFlZS4uN2EzMzY2NmFhNzFhMWY2NjZjOTRiMjhiNjQ0NzQ4NGQ2N2JiYjdkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaApAQCAtNzcsNiArNzcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIExhenlKU1ZhbHVlIG5ld1N0cmluZyhHcmFwaCYsIGNvbnN0IFN0
cmluZyYpOwogCiAgICAgTGF6aW5lc3NLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KKyAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLbm93blZhbHVlID8gU3BlY0J5dGVjb2RlVG9wIDogU3BlY1N0cmluZzsgfQogICAg
IAogICAgIEZyb3plblZhbHVlKiB0cnlHZXRWYWx1ZShHcmFwaCYpIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggYTg1MmRiZGQ5YjkzNzBk
NmRlNjUzYzVhNDg4NzExNzAwZThiODc5Yi4uNTIyMzRiNGE1ZDNmNjk3NmMyZmE5OTgxNmRjZTEx
MDY4MTA1NGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBA
IC00OCwxMSArNDgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1P
U1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJj
ZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZl
SklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQor
T1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3Vy
Y2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2
ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCwg
dW5zaWduZWQgZGZnSVJJbmRleCkKICAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmln
aW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lz
dGVkKQogICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVl
UHJvZmlsZSh2YWx1ZVByb2ZpbGUpCiAgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRl
eCkKKyAgICAsIG1fZGZnSVJJbmRleChkZmdJUkluZGV4KQogICAgICwgbV9zdHJlYW1JbmRleChz
dHJlYW1JbmRleCkKIHsKICAgICBib29sIGNhbkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMxZDY4
Nzc5NzJmMjU5ZDYyYzFhMjMwMGIyYjE2MS4uOGNlOGI5MjA3OWFmNzUyOTk3MDNmMTdmZGRhZTJm
ZWMzYjljMjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTE0
Niw3ICsxNDYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1
bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2b2lkKiwgdm9pZAogLy8gVGhpcyBzdHJ1Y3R1cmUg
ZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2luZyBp
bnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7
Ci0gICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWdu
ZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1Zh
bHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCos
IHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgs
IHVuc2lnbmVkIGRmZ0lSSW5kZXggPSBVSU5UX01BWCk7CiAKICAgICBmcmllbmQgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopOwogCkBAIC0xNTks
NiArMTU5LDcgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCiAgICAgdW5z
aWduZWQgbV9yZWNvdmVyeUluZGV4OworICAgIHVuc2lnbmVkIG1fZGZnSVJJbmRleDsKIAogICAg
IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gY29kZUxvY2F0aW9uRm9yUmVwYXRj
aCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggMWRmMzk0MzI0MWQ1YWY3OTMxOThlZjljNzEy
NzNlNzU4YTBhMjI2YS4uMDg1ZGM1MzBiM2JjMzc5ZmI0ZjNlNjA5MWNiNWM2NTIwMjc1ODdhZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcApAQCAtMTU5LDkgKzE1OSwxNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
awogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlvbi5p
c1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMj
X3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTEludDo6
Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6
IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24p
KSkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewotICAgICAgICBjYXNl
IElubGluZUNhbGxGcmFtZTo6Q2FsbDoKLSAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9S
RVRVUk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpD
YWxsOiB7CisgICAgICAgICAgICBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3Bf
Y2FsbCkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX2NhbGwpOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlE
KCkgPT0gb3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJ
TlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICAgICAgZWxzZSBp
ZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAgICAg
ICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9y
X25leHQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxp
bmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9S
RVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5
LDYgKzI0NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJS
ZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBBU1NFUlQoanVtcFRhcmdldCk7CiAgICAgcmV0dXJuIGp1bXBUYXJnZXQ7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEwMDNlZDVmZDNmYmMzODE2MmM4OTJiMzRjODQ3Yjky
NzY4M2ZhZS4uNmUwOTBhMzhiZmMwOTQ3NWE3ZDdiZDU5MWUyNTFhM2U5MzQ2ODU3YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKQEAgLTExMDEsNiArMTEwMSwxMiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9jdXJyZW50Tm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNl
c0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDogeworICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5sYXp5SlNWYWx1ZSgpLnNwZWN1bGF0ZWRUeXBl
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmlu
Z0NoYXJBdDoKICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgICAgIGNh
c2UgVG9TdHJpbmc6CkBAIC0xMzA1LDcgKzEzMTEsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RM
YXN0SW5kZXg6CiAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgotICAgICAg
ICBjYXNlIExhenlKU0NvbnN0YW50OgogICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAg
ICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9m
IGNvbXBpbGF0aW9uLgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fY3VycmVudE5v
ZGUsICJVbmV4cGVjdGVkIG5vZGUgZHVyaW5nIHByZWRpY3Rpb24gcHJvcGFnYXRpb24iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggMGQ2NWQ4Zjg5YWVj
M2Q1OTQyZDJjZjgzZDZjZWQ4YTFiZmYzOThjYi4uOWFlOTgwNGM3NWI5NWVjNTYxZWQyZjFhNTJi
OWRlYzk4Yzg0NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgICAgICAgICAgZGF0YUxvZ0YoIikgPT0g
KCVzID0gIiwgI3JpZ2h0KTsgXAogICAgICAgICAgICAgZGF0YUxvZyhyaWdodCk7IFwKICAgICAg
ICAgICAgIGRhdGFMb2dGKCIpICglczolZCkuXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisg
ICAgICAgICAgICBkYXRhTG9nKCJcblxuXG4iKTsgXAorICAgICAgICAgICAgbV9ncmFwaC5iYXNl
bGluZUNvZGVCbG9ja0ZvcihudWxscHRyKS0+ZHVtcEJ5dGVjb2RlKCk7IFwKICAgICAgICAgICAg
IGR1bXBHcmFwaElmQXBwcm9wcmlhdGUoKTsgXAogICAgICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNsZWZ0
ICIgPT0gIiAjcmlnaHQpOyBcCiAgICAgICAgICAgICBDUkFTSCgpOyBcCkBAIC01NjgsNiArNTcw
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IGdldExvY2FsUG9z
aXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAg
ICBPcGVyYW5kczxzaXplX3Q+IHNldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAo
aSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fZm9ybSA9PSBUaHJlYWRlZENQUykKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9w
ZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSkgfHwg
YmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwor
CisgICAgICAgICAgICAgICAgZ2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0OworICAg
ICAgICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSgodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLCBibG9jayks
ICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNB
dEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKQEAgLTcxNiw2ICs3MjYsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5kKAorICAgICAgICAgICAgICAg
ICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5k
Ojp0bXAoaSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7
CiAgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICBibG9j
aywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwpAQCAtOTQ0LDcgKzk1OSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNoZWNrT3BlcmFuZCgKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2ssIE9w
ZXJhbmRzPHNpemVfdD4mIGdldExvY2FsUG9zaXRpb25zLAotICAgICAgICBPcGVyYW5kczxzaXpl
X3Q+JiBzZXRMb2NhbFBvc2l0aW9ucywgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgICAg
IE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kIG9wZXJhbmQpCiAg
ICAgewogICAgICAgICBpZiAoZ2V0TG9jYWxQb3NpdGlvbnMub3BlcmFuZChvcGVyYW5kKSA9PSBu
b3RTZXQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQuLjk0
ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIxMGM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzcsNiArMTM3LDcgQEAgbW9kdWxlIERTTAogI2lu
Y2x1ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkdldEJ5VmFsSGlzdG9yeS5oIgog
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRh
LmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
TWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1ZDYzOTBhYmEyNjM1ZTk2MzU5Zjg5MGUyZWI3MWE5
NS4uYzA3NzVkOGUxYjEwNTAyZGYwMWE3NGFmMGM2ZGViNGE4NzVjYzYzOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCkBAIC02Nyw2ICs2Nyw3IEBAIGNs
YXNzIE1ldGFkYXRhCiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhKTsKIAog
ICAgIHB1YmxpYzoKKyAgICAgICAgI3tvcC5vcGNvZGVJRH0KICAgICAgICAgTWV0YWRhdGEoY29u
c3QgI3tvcC5jYXBpdGFsaXplZF9uYW1lfSYjeyIgX19vcCIgaWYgaW5pdHN9KSN7aW5pdHN9IHsg
fQogCiAje2ZpZWxkc30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvU2VjdGlvbi5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5y
YgppbmRleCA5YjVlZTkwOTZlZTcxYjFiMGQzZWQ3ZjdjZDE4ZGIwNmZjYjM1ZmNmLi42YjVhOTQy
ZjA4MjM5YTUyZTA2OWU4MDlkYTI3N2E0ZWY4ZTY2OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCkBAIC01Myw3ICs1MywxNyBAQCBjbGFzcyBTZWN0aW9u
CiAgIGVuZAogCiAgIGRlZiBzb3J0IQotICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsg
fGEsIGJ8IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0x
IH0KKyAgICAgIEBvcGNvZGVzID0gQG9wY29kZXMuc29ydCB7IHxhLCBifAorICAgICAgICAgIHJl
c3VsdCA9IG5pbAorICAgICAgICAgIGlmIGEuY2hlY2twb2ludHMgb3IgYi5jaGVja3BvaW50cwor
ICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxkIGhh
dmUgbWV0YWRhdGE6ICN7YS5uYW1lfSIgaWYgYS5jaGVja3BvaW50cyBhbmQgYS5tZXRhZGF0YS5l
bXB0eT8KKyAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRoIGNoZWNrcG9pbnRzIHNo
b3VsZCBoYXZlIG1ldGFkYXRhOiAje2IubmFtZX0iIGlmIGIuY2hlY2twb2ludHMgYW5kIGIubWV0
YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAgIHJlc3VsdCA9IGEuY2hlY2twb2ludHMgPyBiLmNo
ZWNrcG9pbnRzID8gMCA6IC0xIDogMQorICAgICAgICAgIGVsc2lmCisgICAgICAgICAgICAgIHJl
c3VsdCA9IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0x
IAorICAgICAgICAgIGVuZAorICAgICAgICAgIHJlc3VsdAorICAgICAgfQogICAgICAgQG9wY29k
ZXMuZWFjaCgmOmNyZWF0ZV9pZCEpCiAgIGVuZAogCkBAIC03Myw2ICs4MywxOCBAQCBjbGFzcyBT
ZWN0aW9uCiAgICAgICBlbmQKIAogICAgICAgaWYgY29uZmlnWzplbWl0X2luX3N0cnVjdHNfZmls
ZV0KKyAgICAgICAgICBpID0gMAorICAgICAgICAgIHdoaWxlIHRydWUKKyAgICAgICAgICAgICAg
aWYgIW9wY29kZXNbaV0uY2hlY2twb2ludHMKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAiXG4i
CisgICAgICAgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgTlVNQkVSX09GXyN7Y29uZmlnWzpt
YWNyb19uYW1lX2NvbXBvbmVudF19X1dJVEhfQ0hFQ0tQT0lOVFMgI3tpfVxuIgorICAgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgaSArPSAx
CisgICAgICAgICAgZW5kCisgICAgICAgICAgb3V0IDw8ICJcbiIKKwogICAgICAgICAgIG91dC53
cml0ZSgiI2RlZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9N
RVRBREFUQV9TSVpFKG1hY3JvKSBcXFxuIikKICAgICAgICAgICBpID0gMAogICAgICAgICAgIHdo
aWxlIHRydWUKQEAgLTg3LDYgKzEwOSw4IEBAIGNsYXNzIFNlY3Rpb24KICAgICAgICAgICBlbmQK
ICAgICAgICAgICBvdXQgPDwgIlxuIgogCisKKwogICAgICAgICAgIG91dC53cml0ZSgiI2RlZmlu
ZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9NRVRBREFUQV9BTElH
Tk1FTlQobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAgICAgICAgICAgd2hpbGUgdHJ1
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApp
bmRleCA2NDUzOTEyN2I4Yzc0YzgyMDI5YjJiYjYxODBlNjk2OTcxYTY0YmM4Li4zZmY5MmI0NTNh
NzI5MjZkYzc0ZWNiZGNmNmUzMTRiY2ZiMzY4ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNDMsMTM5ICs0MywxMzkgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBDb2RlQmxvY2s7Ci0gICAgY2xhc3MgRXZhbEV4
ZWN1dGFibGU7Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotICAgIGNsYXNzIFZNOwot
ICAgIGNsYXNzIEpTRnVuY3Rpb247Ci0gICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xh
c3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKLSAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKLSAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7
Ci0gICAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgUmVnaXN0ZXI7
Ci0gICAgY2xhc3MgSlNTY29wZTsKLSAgICBjbGFzcyBTb3VyY2VDb2RlOwotICAgIGNsYXNzIFN0
YWNrRnJhbWU7Ci0gICAgc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7Ci0gICAgc3RydWN0IEhhbmRs
ZXJJbmZvOwotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLSAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJh
bWU7Ci0KLSAgICBlbnVtIERlYnVnSG9va1R5cGUgewotICAgICAgICBXaWxsRXhlY3V0ZVByb2dy
YW0sCi0gICAgICAgIERpZEV4ZWN1dGVQcm9ncmFtLAotICAgICAgICBEaWRFbnRlckNhbGxGcmFt
ZSwKLSAgICAgICAgRGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudCwKLSAgICAgICAgV2lsbExlYXZl
Q2FsbEZyYW1lLAotICAgICAgICBXaWxsRXhlY3V0ZVN0YXRlbWVudCwKLSAgICAgICAgV2lsbEV4
ZWN1dGVFeHByZXNzaW9uLAotICAgIH07Ci0KLSAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7
Ci0gICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAotICAgICAgICBTdGFja0ZyYW1lRXZhbENv
ZGUsCi0gICAgICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAotICAgICAgICBTdGFja0ZyYW1lRnVu
Y3Rpb25Db2RlLAotICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQotICAgIH07Ci0KLSAgICBj
bGFzcyBJbnRlcnByZXRlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAg
ICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIFZNOwotCi0gICAgcHVibGljOgotICAgICAgICBJbnRlcnByZXRlcihWTSAmKTsK
LSAgICAgICAgfkludGVycHJldGVyKCk7Ci0gICAgICAgIAorY2xhc3MgQ29kZUJsb2NrOworY2xh
c3MgRXZhbEV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsK
K2NsYXNzIEpTRnVuY3Rpb247CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIEpTTW9kdWxl
RW52aXJvbm1lbnQ7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKK2NsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU7CitjbGFzcyBSZWdpc3RlcjsKK2NsYXNzIEpTU2NvcGU7CitjbGFzcyBTb3VyY2VD
b2RlOworY2xhc3MgU3RhY2tGcmFtZTsKK3N0cnVjdCBDYWxsRnJhbWVDbG9zdXJlOworc3RydWN0
IEhhbmRsZXJJbmZvOworc3RydWN0IEluc3RydWN0aW9uOworc3RydWN0IFByb3RvQ2FsbEZyYW1l
OworCitlbnVtIERlYnVnSG9va1R5cGUgeworICAgIFdpbGxFeGVjdXRlUHJvZ3JhbSwKKyAgICBE
aWRFeGVjdXRlUHJvZ3JhbSwKKyAgICBEaWRFbnRlckNhbGxGcmFtZSwKKyAgICBEaWRSZWFjaERl
YnVnZ2VyU3RhdGVtZW50LAorICAgIFdpbGxMZWF2ZUNhbGxGcmFtZSwKKyAgICBXaWxsRXhlY3V0
ZVN0YXRlbWVudCwKKyAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24sCit9OworCitlbnVtIFN0YWNr
RnJhbWVDb2RlVHlwZSB7CisgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCisgICAgU3RhY2tGcmFt
ZUV2YWxDb2RlLAorICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAorICAgIFN0YWNrRnJhbWVGdW5j
dGlvbkNvZGUsCisgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKK307CisKK2NsYXNzIEludGVycHJl
dGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3MgQ2Fj
aGVkQ2FsbDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIFZNOworCitwdWJsaWM6CisgICAgSW50
ZXJwcmV0ZXIoVk0gJik7CisgICAgfkludGVycHJldGVyKCk7CisgICAgCiAjaWYgRU5BQkxFKENf
TE9PUCkKLSAgICAgICAgQ0xvb3BTdGFjayYgY2xvb3BTdGFjaygpIHsgcmV0dXJuIG1fY2xvb3BT
dGFjazsgfQorICAgIENMb29wU3RhY2smIGNsb29wU3RhY2soKSB7IHJldHVybiBtX2Nsb29wU3Rh
Y2s7IH0KICNlbmRpZgotICAgICAgICAKLSAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGUgZ2V0
T3Bjb2RlKE9wY29kZUlEKTsKKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIE9wY29kZSBnZXRPcGNv
ZGUoT3Bjb2RlSUQpOwogCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoT3Bjb2RlKTsKKyAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29k
ZSk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBzdGF0aWMgYm9vbCBpc09wY29kZShP
cGNvZGUpOworICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAjZW5kaWYKIAotICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlTW9kdWxl
UHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1
bGVFbnZpcm9ubWVudCopOwotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwotICAgICAgICBKU09iamVjdCogZXhlY3V0
ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29uc3RydWN0
VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1Rh
cmdldCk7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKLQotICAgICAgICB2b2lkIGdl
dEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0
UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKLQotICAgICAgICBO
RVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNlcHRp
b24qKTsKLSAgICAgICAgdm9pZCBub3RpZnlEZWJ1Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRXhjZXB0aW9uKik7Ci0gICAgICAgIE5F
VkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va1R5cGUpOwotICAgICAg
ICBzdGF0aWMgU3RyaW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3RvcjxTdGFj
a0ZyYW1lPiYpOwotCi0gICAgICAgIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0NlbGwqIG93bmVyLCBW
ZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFtZXNUb1NraXAgPSAwLCBzaXpl
X3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRp
YWxpemVBbmRSZXR1cm4gfTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNoZWNr
ZWRSZXR1cm4oSlNWYWx1ZSByZXR1cm5WYWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKHJldHVyblZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIEpTT2JqZWN0KiBjaGVja2VkUmV0dXJuKEpT
T2JqZWN0KiByZXR1cm5WYWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJldHVy
blZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVj
dXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiwgY29uc3QgQXJnTGlzdCYpOwotCi0g
ICAgICAgIEpTVmFsdWUgZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJik7Ci0KLSAgICAgICAgVk0m
IG1fdm07CisgICAgSlNWYWx1ZSBleGVjdXRlUHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiwgSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iaik7CisgICAgSlNWYWx1ZSBleGVjdXRlTW9k
dWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNN
b2R1bGVFbnZpcm9ubWVudCopOworICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25z
dHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUs
IGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQp
OworICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKworICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0
YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRl
eCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOworCisgICAgTkVWRVJfSU5MSU5FIEhhbmRs
ZXJJbmZvKiB1bndpbmQoVk0mLCBDYWxsRnJhbWUqJiwgRXhjZXB0aW9uKik7CisgICAgdm9pZCBu
b3RpZnlEZWJ1Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiwgRXhjZXB0aW9uKik7CisgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2Fs
bEZyYW1lKiwgRGVidWdIb29rVHlwZSk7CisgICAgc3RhdGljIFN0cmluZyBzdGFja1RyYWNlQXNT
dHJpbmcoVk0mLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mKTsKKworICAgIHZvaWQgZ2V0U3Rh
Y2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVf
dCBmcmFtZXNUb1NraXAgPSAwLCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CisKK3ByaXZhdGU6CisgICAgZW51bSBFeGVjdXRpb25GbGFn
IHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJuIH07CisgICAgCisgICAgc3RhdGljIEpTVmFs
dWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVyblZhbHVlKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHJldHVyblZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlNPYmplY3QqIHJldHVyblZh
bHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJldHVyblZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHJldHVyblZhbHVlOworICAgIH0KKworICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFyZUZvclJl
cGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxsRnJhbWUq
LCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiwg
Y29uc3QgQXJnTGlzdCYpOworCisgICAgSlNWYWx1ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUm
KTsKKworICAgIFZNJiBtX3ZtOwogI2lmIEVOQUJMRShDX0xPT1ApCi0gICAgICAgIENMb29wU3Rh
Y2sgbV9jbG9vcFN0YWNrOworICAgIENMb29wU3RhY2sgbV9jbG9vcFN0YWNrOwogI2VuZGlmCi0g
ICAgICAgIAorICAgIAogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAjaWYgIUVO
QUJMRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEFTU0VSVF9FTkFCTEVECi0gICAgICAg
IHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNvZGVJRFRhYmxlKCk7IC8vIE1h
cHMgT3Bjb2RlID0+IE9wY29kZUlELgorICAgIHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2Rl
SUQ+JiBvcGNvZGVJRFRhYmxlKCk7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlELgogI2VuZGlm
IC8vICFFTkFCTEUoTExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCBBU1NFUlRfRU5BQkxFRAog
I2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCi0gICAgfTsKLQotICAgIEpT
VmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKTsKLQotICAg
IGlubGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKQotICAgIHsKLSAgICAgICAgLy8gV2Ugd2FudCB0aGUgbmV3IGZyYW1lIHRv
IGJlIGFsbG9jYXRlZCBvbiBhIHN0YWNrIGFsaWduZWQgb2Zmc2V0IHdpdGggYSBzdGFjawotICAg
ICAgICAvLyBhbGlnbmVkIHNpemUuIEFsaWduIHRoZSBzaXplIGhlcmUuCi0gICAgICAgIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAotICAgICAg
ICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpIC0gQ2Fs
bEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7Ci0KLSAgICAgICAgLy8gQWxpZ24gdGhlIGZy
YW1lIG9mZnNldCBoZXJlLgotICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNl
dCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKLSAgICAgICAgICAgIHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOwotICAg
ICAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBzaXplT2ZWYXJh
cmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0KTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEFyZ3VtZW50cyA9
IDB4MTAwMDA7Ci0gICAgdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSosIFZNJiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRT
dGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7Ci0gICAgdW5zaWduZWQgc2l6
ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIFZN
JiwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpOwotICAgIHZvaWQgbG9hZFZhcmFyZ3MoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBmaXJzdEVsZW1lbnREZXN0LCBKU1ZhbHVlIHNvdXJjZSwg
dWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBWYXJhcmdz
RnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSog
ZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0
LCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWND
YWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cEZvcndhcmRB
cmd1bWVudHNGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2Fs
bEZyYW1lKiBleGVjQ2FsbGVlLCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBGb3J3
YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBl
eGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1aW50
MzJfdCBsZW5ndGgpOworfTsKKworSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiwgRUNNQU1vZGUpOworCitpbmxpbmUgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZUZvclZhcmFy
Z3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1bnNp
Z25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKK3sKKyAgICAvLyBXZSB3YW50IHRoZSBu
ZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3RhY2sgYWxpZ25lZCBvZmZzZXQgd2l0aCBh
IHN0YWNrCisgICAgLy8gYWxpZ25lZCBzaXplLiBBbGlnbiB0aGUgc2l6ZSBoZXJlLgorICAgIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAorICAg
ICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAtIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworCisgICAgLy8gQWxpZ24gdGhlIGZyYW1lIG9mZnNl
dCBoZXJlLgorICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKAorICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAg
ICAgICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2Fs
bEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAgIHJldHVybiBDYWxsRnJhbWU6OmNy
ZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwor
fQorCit1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBhcmd1
bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKK3N0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWF4QXJndW1lbnRzID0gMHgxMDAwMDsKK3Vuc2lnbmVkIHNpemVGcmFtZUZvclZhcmFy
Z3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTSYsIEpTVmFsdWUgYXJndW1lbnRzLCB1
bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwor
dW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSosIFZNJiwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpOwordm9pZCBsb2FkVmFy
YXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUqIGZpcnN0RWxlbWVudERlc3QsIEpTVmFsdWUg
c291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lkIHNldHVwVmFy
YXJnc0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJh
bWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWND
YWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lkIHNldHVwRm9yd2FyZEFyZ3Vt
ZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJh
bWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lkIHNldHVwRm9yd2FyZEFyZ3Vt
ZW50c0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxl
ciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdWludDMyX3QgbGVu
Z3RoKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKaW5kZXggYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZi4uOGIzYTIz
OGE0ZGFmMWZjNjc5MTQwZDhiYmVjNzcwOWI4NTY4YmI5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgbV9sYWJlbHNbbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpXSA9IGxhYmVs
KCk7CiAKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAgZGF0
YUxvZ0xuKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBh
dCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4o
IkJhc2VsaW5lIEpJVCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQg
b2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCkBAIC00MzgsNiArNDM4LDkg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2ludGVybmFsX2ZpZWxkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2ludGVybmFs
X2ZpZWxkKQogCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICBE
RUZJTkVfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQog
ICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQogICAgICAgICBERUZJTkVfT1Aob3BfdW5zaWdu
ZWQpCkBAIC01MjUsNyArNTI4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgICAgIHJhcmVDYXNlUHJvZmlsZSA9ICZyYXJlQ2FzZVByb2ZpbGVzLmF0KGJ5
dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CiAKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2
ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0aW5nIHNsb3cgY29k
ZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNl
dCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIHNsb3cg
Y29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09m
ZnNldCgpKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rp
c2Fzc2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVTbG93UGF0aChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCksIGxhYmVsKCkpOwpAQCAtNTg5LDYgKzU5Miw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29w
ZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF90b19zY29wZSkKIAorICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2l0ZXJhdG9yX25leHQpCisKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NM
T1dfT1AodW5zaWduZWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGluYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZGVjKQpAQCAtNjI2LDggKzYzMiw4IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGlmIChKSVRJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIsIGZpcnN0VG8sICIgc2xvdzog
IiwgaXRlciAtIG1fc2xvd0Nhc2VzLmJlZ2luKCksICJcbiIpOwogCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xvd0Nhc2VzLmVuZCgpIHx8IGZpcnN0VG8g
IT0gaXRlci0+dG8sICJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdl
bi4iKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8gPT0gKGl0
ZXIgLSAxKS0+dG8sICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4u
Iik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xvd0Nh
c2VzLmVuZCgpIHx8IGZpcnN0VG8ub2Zmc2V0KCkgIT0gaXRlci0+dG8ub2Zmc2V0KCksICJOb3Qg
ZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8ub2Zmc2V0KCkgPT0gKGl0ZXIgLSAxKS0+
dG8ub2Zmc2V0KCksICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4u
Iik7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAg
ICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoJnJhcmVDYXNlUHJv
ZmlsZS0+bV9jb3VudGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MDczNTVjNmQ3
MTE4MmFhMDcyOWEyNzQ5MTAwNGY0NWUxZWE2YWMxLi44M2FlMWE3YjY5OGQ2OTMzZGJiOGEwMzcx
OTA0OWVjMjI1ODE4Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI5Nyw2ICsyOTcs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlRXhjZXB0
aW9uSGFuZGxlcnMoKTsKIAorICAgICAgICB2b2lkIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAg
ICAgIHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXApOworCiAgICAgICAg
IHZvaWQgYWRkU2xvd0Nhc2UoSnVtcCk7CiAgICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoY29uc3Qg
SnVtcExpc3QmKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZSgpOwpAQCAtNjc2LDYgKzY3OSwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1Bh
dGhGdW5jdGlvbik7CiAKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisKICAgICAgICAgdm9pZCBlbWl0Umln
aHRTaGlmdChjb25zdCBJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZv
aWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCkBAIC05MTEsNiArOTE5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVmVjdG9yPENhbGxSZWNvcmQ+IG1fY2Fs
bHM7CiAgICAgICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7CisgICAgICAgIEhhc2hNYXA8Qnl0
ZWNvZGVJbmRleCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsKICAgICAgICAgVmVjdG9yPEpJ
VEdldEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeVZh
bEdlbmVyYXRvcj4gbV9nZXRCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCmluZGV4IGUxZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3MWZmY2IyMGI4NjYu
LjA5MWVlOTM4NTMwNWQzNzk3YzJhZGViNmEzNjEwYmUwMzU5YjEyMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2lmIFVTRShKU1ZBTFVF
NjQpCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIK
KyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZVNodWZmbGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUSW5s
aW5lcy5oIgpAQCAtNDIsOCArNDQsOCBAQAogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgi
CiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMu
aCIKLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAorI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTEsNyArNTMsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjplbWl0UHV0Q2FsbFJlc3VsdChjb25z
dCBPcCYgYnl0ZWNvZGUpCiB7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jaykpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9kc3QpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25Gb3IoYnl0
ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZpcnR1YWxSZWdpc3RlcigpLCBy
ZWdUMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtNjEsMjAgKzYzLDIxIEBAIHN0
ZDo6ZW5hYmxlX2lmX3Q8CiAsIHZvaWQ+CiBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9w
JiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKIHsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50ID0g
bV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJnQ291bnQgPSBieXRlY29kZS5t
X2FyZ2M7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0ZWNv
ZGUubV9hcmd2KTsKKyAgICBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpOworICAgIGludCByZWdpc3Rl
ck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxs
KGJ5dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX2Nh
bGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldEluY2x1ZGluZ1RoaXMoMCkpLCByZWdUMCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGJy
YW5jaElmTm90Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgICAgIHN0b3JlMzIocmVnVDAs
IG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlSUQoKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAsIGFycmF5UHJvZmlsZUZvciht
ZXRhZGF0YSwgY2hlY2twb2ludCkuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAg
ICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
cmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudEluY2x1ZGluZ1Ro
aXMpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiB9CiAKIApAQCAt
MjA3LDcgKzIxMCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0ZWNvZGUubV9jYWxs
ZWU7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGNhbGxlZUZvcihieXRlY29kZSwgbV9i
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKICAgICAvKiBDYWxsZXIgYWx3YXlzOgogICAg
ICAgICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNhbGxGcmFtZS4KQEAg
LTIzNCw5ICsyMzcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KICAgICBz
dG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSk7CiAKLSAgICBpZiAoY29tcGlsZUNhbGxFdmFsKGJ5dGVjb2RlKSkg
eworICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAg
ICAgSnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgcmVnVDAsIGFk
ZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwpAQCAt
MzgwLDYgKzM4MiwxODQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBjb21waWxlT3BD
YWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24g
PSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAg
ICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8TmFycm93PjsK
KyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUx
Nj47CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxX
aWRlMzI+OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSkoKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlGYXN0
RnVuY3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGNvbXBp
bGVPcENhbGw8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1bHQgKGl0ZXJh
dG9yKSBpcyBpbiByZWdUMAorCisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmdm0oKS5w
cm9wZXJ0eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9CisK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0
ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7Cisg
ICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFZSZWcgPSBieXRlY29k
ZS5tX25leHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5h
bWVzLT5uZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5l
eHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFzdEZ1
bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkp
IHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PE5h
cnJvdz47CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFz
dDxXaWRlMTY+OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5
X2Zhc3Q8V2lkZTMyPjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fbmV4dCwgcmVnVDApOworICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJ
Zk5vdEVtcHR5KHJlZ1QwKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlGYXN0RnVu
Y3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGdlbmVyaWND
YXNlLmxpbmsodGhpcyk7CisgICAgb3I4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90
PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSksIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9p
dGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMpKTsKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0
b3JOZXh0PihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBjaGVja3Bv
aW50UmVhY2hlZCgpOworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRvbmUsIHZhbHVlIH0gSlNPYmpl
Y3QpIGluIHJlZ1QwCisKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcg
aXRlclJlc3VsdEdQUiA9IHJlZ1QyOworICAgIEdQUlJlZyBkb25lR1BSID0gcmVnVDE7CisgICAg
Ly8gaXRlclJlc3VsdEdQUiB3aWxsIGdldCB0cmFzaGVkIGJ5IHRoZSBmaXJzdCBnZXQgYnkgaWQg
YmVsb3cuCisgICAgbW92ZSh2YWx1ZUdQUiwgaXRlclJlc3VsdEdQUik7CisKKyAgICB7CisgICAg
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyUmVzdWx0R1BSKTsKKworICAgICAg
ICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpOworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7CisgICAg
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3Bl
cnR5TmFtZXMtPm5leHQuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFs
dWVSZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fZG9uZSwgZG9uZUdQUik7CisgICAgICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7
CisgICAgfQorCisKKyAgICB7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOworICAg
ICAgICBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKKyAgICAgICAgY29uc3QgYm9vbCBzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBmYWxzZTsKKyAgICAgICAgSnVtcExpc3QgaXRl
cmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBz
Y3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKworICAgICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdz
KHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
KyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwor
CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKworICAgICAg
ICBpdGVyYXRpb25Eb25lLmxpbmsodGhpcyk7CisgICAgfQorCisgICAgZmFzdENhc2UubGluayh0
aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNs
b3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9J
bmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7Cisg
ICAgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9uZVZSZWcgPSBieXRlY29kZS5tX2RvbmU7
CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisKKyAgICAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAgICAgICBu
b3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7CisgICAgICAg
IG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOworCisg
ICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9u
ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNb
bV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIAorICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2Zp
bGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKKyAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CisgICAgICAgIGVtaXRKdW1wU2xv
d1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAgIG5vdE9iamVjdC5saW5rKHRo
aXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJ
c05vdE9iamVjdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpKTsK
KyAgICB9CisKKyAgICB7ICAgCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOworICAgICAg
ICBHUFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QwOworCisgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwor
CisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlk
ZW50KS5yYXdCaXRzKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CisgICAgfQorCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
aW5kZXggN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1NjU1MzNmNC4uMjdhNTdmNGVl
MzYxNjRhY2U4ZTM5ZjM2OGNlNzY1YmYxNWRkZmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5B
QkxFKEpJVCkKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJDb21t
b25TbG93UGF0aHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNSw3ICsxMDcsNyBAQCBBTFdBWVNfSU5M
SU5FIEpJVDo6Q2FsbCBKSVQ6OmVtaXROYWtlZFRhaWxDYWxsKENvZGVQdHI8Tm9QdHJUYWc+IHRh
cmdldCkKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKCkKIHsK
LSAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCkuYml0cygpOworICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpKS5iaXRzKCk7CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
bG9jYXRpb25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyBp
cyBuZWVkZWQuIEpJVE9wZXJhdGlvbnMgdGVuZCB0byB1cGRhdGUgdGhlIHRvcCBjYWxsIGZyYW1l
IG9uCkBAIC0xODMsNiArMTg1LDI1IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6Omhhc0FueVNs
b3dDYXNlcyhWZWN0b3I8U2xvd0Nhc2VFbnRyeT4mIHNsb3dDYXNlcywgVmVjdG9yCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBKSVQ6OmNoZWNrcG9pbnRSZWFjaGVkKCkKK3sK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9kIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0
aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRl
Y29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9ieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKSArIDEpOworCisgICAgYXV0byByZXN1bHQgPSBtX2NoZWNrcG9pbnRMYWJlbHMuYWRk
KG1fYnl0ZWNvZGVJbmRleCwgbGFiZWwoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dUb0hv
dEZvckNoZWNrcG9pbnQoSnVtcCBqdW1wKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9i
eXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBo
b3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIp
OworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIGl0
ZXIgPSBtX2NoZWNrcG9pbnRMYWJlbHMuZmluZChtX2J5dGVjb2RlSW5kZXgpOworICAgIEFTU0VS
VChpdGVyICE9IG1fY2hlY2twb2ludExhYmVscy5lbmQoKSk7CisgICAganVtcC5saW5rVG8oaXRl
ci0+dmFsdWUsIHRoaXMpOworfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphZGRTbG93Q2Fz
ZShKdW1wIGp1bXApCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCk7IC8vIFRoaXMgbWV0
aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9u
LCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQuCkBAIC0zMTksNyArMzQwLDcgQEAgaW5s
aW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKE1ldGFkYXRhJiBtZXRhZGF0YSkK
IHsKICAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEubV9wcm9maWxlKTsKKyAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKHZhbHVlUHJvZmlsZUZvcihtZXRhZGF0YSwgbV9ieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKSkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZTE1MGNjNjYxMDc2MmJhY2M4YmU0MjIwNzNhYWQ2NGFi
MzExOTEuLmE1ZTJhMjQ3Y2YxNTRkYTQ2ZWIzM2RmYmJmMGUzMzYwZDM2ZjU1ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTM0LDYgKzEzNCwx
NiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JG
cm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIEFTU0VSVCh2bS50YXJnZXRNYWNoaW5l
UENGb3JUaHJvdyk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0l0ZXJh
dG9yUmVzdWx0SXNOb3RPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Cit9
CisKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOGVmYjVi
NWFjOTgwYWVlNmM1NTIzNDQzN2M5MDI4OTU4OTAyMjY2NS4uOWZjYzQxZGVjNDU4MmM5NjUyOTIz
NjU1ZGE4ZjMwMjY5NWRmNzAxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TG9va3VwRXhjZXB0aW9uSGFuZGxlcihWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKFZNKikg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0
aW9uKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFM
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9i
amVjdChKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENvZGVCbG9jayopIFdURl9JTlRFUk5B
TDsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhKU0dsb2Jh
bE9iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDhkZWE3ZjI3OGU3NjYyZTUwMzE0Y2ViOWIwODMzOWY4
N2JmZGE0OTcuLjhiYjE4YzIxZjQyYTlmNTdjZGMwNTNmZGRlOGM0NTAxZDQ4ZTNjNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUu
aCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgiCkBAIC04Miw2ICs4Myw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0g
Y29kZUJsb2NrLT52bSgpOyBcCiAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7IFwKKyAgICBkYXRhTG9nTG5JZihMTElOVF9UUkFDSU5HICYmIE9wdGlvbnM6OnRy
YWNlTExJbnRTbG93UGF0aCgpLCAiQ2FsbGluZyBzbG93IHBhdGggIiwgV1RGX1BSRVRUWV9GVU5D
VElPTik7IFwKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKQog
CiAjaWZuZGVmIE5ERUJVRwpAQCAtNjkzLDcgKzY5NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWRfZGlyZWN0KQogfQogCiAKLXN0YXRpYyB2b2lkIHNldHVwR2V0
QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgT3BHZXRCeUlkOjpN
ZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5
cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1l
dGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0
cnVjdHVyZSh2bSk7CiAKQEAgLTc0MSw0NCArNzQzLDM5IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0
QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
Q29kCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgpKQotICAgICAgICAgICAgbWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEuc2V0VW5zZXRNb2RlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBt
ZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoc2xvdC5pc1ZhbHVlKCkpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFz
ZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBv
ZmZzZXQsIHNsb3Quc2xvdEJhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKIH0KIAotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkKQorc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25z
dCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIExMSU5UX0JFR0lOKCk7Ci0g
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwotICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
KTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGlk
ZW50LCBzbG90KTsKLSAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kc3QpID0gcmVzdWx0OwotICAgIAorICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKwogICAgIGlmICghTExJTlRfQUxXQVlTX0FD
Q0VTU19TTE9XCiAgICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90
LmlzQ2FjaGVhYmxlKCkKICAgICAgICAgJiYgIXNsb3QuaXNVbnNldCgpKSB7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgc3dp
dGNoIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2gg
KG1ldGFkYXRhLm1vZGUpIHsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OkRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6VW5zZXQ6Ci0gICAgICAgICAgICAg
ICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3Ry
dWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS51bnNl
dE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOwor
ICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5z
dHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSAwOwpAQCAtNzk5LDM1ICs3OTYsMTA5
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgIGlm
IChzbG90LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAg
ICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KLSAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhv
dXRDYWNoZSgpOworICAgICAgICAgICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91
dENhY2hlKCk7CiAKICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBm
cm9tIGV2ZXIgaGFwcGVuaW5nLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
aGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEuaGl0Q291
bnRGb3JMTEludENhY2hpbmcgPSAwOwogICAgICAgICAKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiAhc3RydWN0dXJlLT5uZWVkSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRP
ZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRl
ZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAg
IG1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CiAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiBzbG90LmlzVmFsdWUoKSkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyAm
JiBzbG90LmlzVmFsdWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkg
IT0gYmFzZVZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCisgICAgICAgICAgICBpZiAoISgtLW1ldGFk
YXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKICAgICAgICAgICAgICAgICBzZXR1cEdldEJ5
SWRQcm90b3R5cGVDYWNoZShnbG9iYWxPYmplY3QsIHZtLCBjb2RlQmxvY2ssIHBjLCBtZXRhZGF0
YSwgYmFzZUNlbGwsIHNsb3QsIGlkZW50KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoIUxM
SU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBpZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgewogICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2Jz
ZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOworICAgICAg
ICAgICAgbWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7CisgICAgICAgICAgICBtZXRhZGF0
YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndy
aXRlQmFycmllcihjb2RlQmxvY2spOwogICAgIH0KIAotICAgIExMSU5UX1BST0ZJTEVfVkFMVUUo
cmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEdldEJ5SWQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFs
T2JqZWN0LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBvcGVuX2dldF9uZXh0Iik7
CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVl
IGl0ZXJhdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1faXRlcmF0b3IpOwor
ICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNv
ZGUubV9uZXh0KTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChw
YywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfZ2V0X2RvbmUiKTsKKworICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIC8vIFdlIHVzZSBtX3Zh
bHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1ZSBzaW5jZSBpdCdzIGVpdGhlciBu
b3QgbGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUgb3IgaXQncyBnb2luZyB0byBiZSBmaWxsZWQgbGF0
ZXIuCisgICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3ZhbHVlKTsKKyAgICBSZWdpc3RlciYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CisKKyAgICBpZiAoIWl0ZXJhdG9yUmV0dXJu
LmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKSk7
CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSwg
bWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBkb25lUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKS5tX2RvbmVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0X2dldF92YWx1ZSIpOworCisg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgLy8gV2UgdXNlIG1f
dmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVlIHRtcCBzaW5jZSBpdCdzIGVp
dGhlciBub3QgbGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUgb3IgaXQncyBnb2luZyB0byBiZSBmaWxs
ZWQgbGF0ZXIuCisgICAgUmVnaXN0ZXImIHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IHZh
bHVlUmVnaXN0ZXIuanNWYWx1ZSgpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0Owor
ICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUubV9idWNrZXRz
WzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKKwog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKIHsKICAgICBMTElOVF9C
RUdJTigpOwpAQCAtMTU2Myw3ICsxNjM0LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBz
ZXRVcENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2kKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVy
aWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgT3AmJiBi
eXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoraW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgdW5zaWdu
ZWQgY2hlY2twb2ludEluZGV4ID0gMCkKIHsKICAgICAvLyBUaGlzIG5lZWRzIHRvOgogICAgIC8v
IC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KQEAgLTE1NzEsMTYgKzE2NDIsMTYgQEAgaW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUKICAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5s
aW5lIGNhY2hlLgogICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJl
c3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgogICAgIAotICAgIEpTVmFsdWUgY2Fs
bGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2NhbGxlZSk7Cisg
ICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGNhbGxlZUZv
cihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAgICAgCi0gICAgQ2FsbEZyYW1lKiBjYWxs
ZWVGcmFtZSA9IGNhbGxGcmFtZSAtIGJ5dGVjb2RlLm1fYXJndjsKKyAgICBDYWxsRnJhbWUqIGNh
bGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0
ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCk7CiAgICAgCi0gICAgY2FsbGVlRnJhbWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKGJ5dGVjb2RlLm1fYXJnYyk7CisgICAgY2FsbGVlRnJhbWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
Rm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsKICAgICBjYWxsZWVGcmFtZS0+dW5jaGVj
a2VkUihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgPSBjYWxsZWVBc1Zh
bHVlOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZXJGcmFtZShjYWxsRnJhbWUpOwogICAgIAog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBy
ZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmbWV0YWRh
dGEubV9jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoY2FsbGVlRnJhbWUsIGtp
bmQsIGNhbGxlZUFzVmFsdWUsICZjYWxsTGlua0luZm9Gb3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJ
bmRleCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbCkKQEAgLTE2
MDQsNiArMTY3NSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0
KQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxv
Y2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wQ29uc3RydWN0PigpLCBDb2RlRm9yQ29uc3RydWN0KSk7
CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Bl
bl9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2Nh
bGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgb3Blbl9jYWxsIik7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxs
RnJhbWUsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSwgQ29kZUZvckNhbGwsIE9wSXRlcmF0b3JP
cGVuOjpzeW1ib2xDYWxsKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9pdGVyYXRvcl9uZXh0X2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgbmV4
dF9jYWxsIik7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0Nh
bGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKSwgQ29kZUZv
ckNhbGwsIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCkpOworfQorCiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncykKIHsKICAgICBMTElOVF9C
RUdJTigpOwpAQCAtMTk5MCw2ICsyMDgzLDQ0IEBAIHN0YXRpYyB2b2lkIGhhbmRsZVZhcmFyZ3ND
aGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0CiAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZHN0KSA9IHJlc3VsdDsKIH0KIAor
c3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJh
dG9yT3BlbiYgYnl0ZWNvZGUpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0
ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgpOworICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3Qo
KSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVy
YXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEpTVmFsdWUgbmV4dCA9IGl0ZXJhdG9yLmdldChnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCkg
PSBuZXh0OworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IE9wSXRlcmF0b3JOZXh0JiBieXRlY29kZSwgQ2hlY2twb2ludE9TUkV4aXRTaWRlU3Rh
dGUmIHNpZGVTdGF0ZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgdW5zaWduZWQgY2hlY2twb2ludEluZGV4ID0gc2lkZVN0YXRlLmJ5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpOworCisgICAgYXV0byYgdmFsdWVSZWdpc3RlciA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBhdXRvIGl0ZXJhdG9yUmVzdWx0T2Jq
ZWN0ID0gc2lkZVN0YXRlLnRtcHNbT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHRdOworICAgIGF1
dG8gbmV4dCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpLmpzVmFsdWUo
KTsgICAgCisKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobmV4dCwgIldlIHNob3Vs
ZCBub3QgT1NSIGV4aXQgdG8gYSBjaGVja3BvaW50IGZvciBmYXN0IGNhc2VzLiIpOworCisgICAg
YXV0byYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZG9u
ZSk7CisgICAgaWYgKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkg
eworICAgICAgICBkb25lUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVjdC5nZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
aWYgKGRvbmVSZWdpc3Rlci5qc1ZhbHVlKCkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCkpCisgICAg
ICAgIHZhbHVlUmVnaXN0ZXIgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UKKyAgICAgICAgdmFs
dWVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPnZhbHVlKTsKK30KKwogaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNw
YXRjaFRvTmV4dEluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0
cmVhbTo6UmVmIHBjKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFjb2RlQmxvY2stPnZtKCkuZXhj
ZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKQEAgLTIwNjYsNiArMjE5NywxNSBAQCBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdChDYWxsRnJh
bWUqIGNhbGxGcmFtZQogICAgICAgICBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludCh2bSwgY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcFRhaWxDYWxsVmFyYXJncz4oKSwgKnNpZGVTdGF0
ZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7
CisgICAgICAgIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGhhbmRsZUl0ZXJhdG9y
TmV4dENoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BJdGVy
YXRvck5leHQ+KCksICpzaWRlU3RhdGUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKQEAgLTIxMDMsNiArMjI0MywxMiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRf
d3JpdGVfYmFycmllcl9zbG93KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0NlbGwqIGNlbGwpCiAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY2VsbCk7CiB9CiAKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQoreworICAgIGRhdGFMb2dMbihKU1Zh
bHVlOjpkZWNvZGUodmFsdWUpKTsKK30KKwogZXh0ZXJuICJDIiBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIHZvaWQgbGxpbnRfY3Jhc2goKQogewogICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjU2OTlj
MzBkMmNkYWZhNGY5M2MzYTlmMDk4MDU3MWM4MTc2N2MxYS4uZjlhMzRkYWIzNmQ5ZmE1Mjc1NmEx
OThiMmQ3NGY3NTJjNTM4YWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgbWFjcm8g
ZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgc2l6ZShkZWZp
bmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNybyAoZikgZigpIGVuZCkK
IGVuZAogCi1tYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQorbWFjcm8gY2FsbFRhcmdldEZ1
bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQogICAgIGlm
IENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gY2FsbGVl
CiAgICAgZWxzZQpAQCAtMTA0NSwxMSArMTA0NSwxMSBAQCBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rp
b24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxs
UAogICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRpbmcg
aW4gdW5leHBlY3RlZAogICAgICAgICAjIGNyYXNoZXMuCiAgICAgICAgIHJlc3RvcmVTdGFja1Bv
aW50ZXJBZnRlckNhbGwoKQotICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoKQorICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAg
ICAgZW5kCiAgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAg
ICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgZGlzcGF0Y2hBZnRlckNhbGwo
c2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlz
cGF0Y2gpCiBlbmQKIAogbWFjcm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEs
IHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKQEAgLTExMTcsNyArMTExNywxMSBAQCBtYWNybyBw
cmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFn
KQogICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKIGVuZAogCi1tYWNybyBzbG93UGF0aEZvckNh
bGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHBy
ZXBhcmVDYWxsKQorbWFjcm8gc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBzbG93
UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1f
ZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorZW5kCisKK21hY3JvIHNsb3dQ
YXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkK
ICAgICBjYWxsQ2FsbFNsb3dQYXRoKAogICAgICAgICBzbG93UGF0aCwKICAgICAgICAgIyBUaG9z
ZSBhcmUgcjAgYW5kIHIxCkBAIC0xMTI2LDcgKzExMzAsNyBAQCBtYWNybyBzbG93UGF0aEZvckNh
bGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHBy
ZXBhcgogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwgc3AKICAgICAgICAgICAgIHBy
ZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgU2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIC5k
b250VXBkYXRlU1A6Ci0gICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUl
X3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJU
YWcpCisgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNp
emUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBk
aXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKICAgICAgICAgZW5kKQogZW5kCiAKQEAg
LTIwMTYsNyArMjAyMCw3IEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgZnJhbWVTbG93UGF0aCwgc2xvCiAgICAgICAgICAgICBz
dWJwIHIxLCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKICAgICAgICAgZW5kCiAgICAgZW5kCi0g
ICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVD
YWxsKQogZW5kCiAKIApAQCAtMjA3OSw3ICsyMDgzLDcgQEAgZW5kKQogIyByZXR1cm5zIHRoZSBK
UyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsOgot
ICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAg
IG9wX2NhbGxfZXZhbF9uYXJyb3csCiAgICAgICAgIG5hcnJvdywKICAgICAgICAgT3BDYWxsRXZh
bCwKQEAgLTIwODgsNyArMjA5Miw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgICAgIHBy
ZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6Ci0gICAg
c2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAgb3Bf
Y2FsbF9ldmFsX3dpZGUxNiwKICAgICAgICAgd2lkZTE2LAogICAgICAgICBPcENhbGxFdmFsLApA
QCAtMjA5Nyw3ICsyMTAxLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6CiAgICAgICAg
IHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMzI6Ci0g
ICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAg
b3BfY2FsbF9ldmFsX3dpZGUzMiwKICAgICAgICAgd2lkZTMyLAogICAgICAgICBPcENhbGxFdmFs
LApAQCAtMjEwNyw3ICsyMTExLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMzI6CiAKIAog
Y29tbW9uT3AobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQsIG1hY3JvICgpIGVuZCwgbWFjcm8g
KHNpemUpCi0gICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BDYWxsRXZhbCwgbWFjcm8gKCkK
KyAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxFdmFsLCBtX3Byb2ZpbGUsIG1fZHN0
LCBtYWNybyAoKQogICAgICAgICBkaXNwYXRjaE9wKHNpemUsIG9wX2NhbGxfZXZhbCkKICAgICBl
bmQpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDgxODkxYzIyZTYxODNjODA0MmFiZGZjZThk
NDM5MTFhZjQxZjY1NGEuLjc0YzQ4MGRmMjEyMTcxNjU1MGM1ZmQ0ZjA4NDRhYjExMDhmZGM4MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCkBAIC02Nyw3ICs2Nyw3IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9m
aWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKICAgICAgICAg
bW92ZSBwYXlsb2FkLCB0MAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDUsIHQxLCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0NSwgdDEsIHQwKQogICAgICAgICBnZXQobV9kc3Qs
IHQyKQogICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogICAgICAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KQEAgLTc3LDE2ICs3NywxNyBAQCBl
bmQKIAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5w
dXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KLW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0
Y2gpCiAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2Zy
XSwgUEMKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6
Om1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBCCi0gICAgZ2V0KHNpemUsIG9wY29kZVN0
cnVjdCwgbV9kc3QsIHQzKQorICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgdDMpCiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBz
dG9yZWkgcjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBtZXRhZGF0YShzaXplLCBv
cGNvZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0Miwg
cjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IHQyLCByMSwgcjApCiAgICAgZGlzcGF0Y2goKQorCiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0
aW9uKQpAQCAtNjMyLDkgKzYzMyw5IEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50KHNpemUsIGdldCwgdmFsdWVGaWVsZE5hbWUpCiAgICAgICAgIGVuZCkKIGVu
ZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdGFnLCBwYXls
b2FkKQorbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFk
YXRhLCB0YWcsIHBheWxvYWQpCiAgICAgc3RvcmVpIHRhZywgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQotICAgIHN0b3Jl
aSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMg
KyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQorICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtt
ZXRhZGF0YV0KIGVuZAogCiAKQEAgLTEzNzgsNyArMTM3OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwCiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVd
LCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlk
RGlyZWN0U2xvdwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwg
dDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgdDUsIHQwLCB0MSkKKyAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAg
cmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xNDAwLDcgKzE0MDEs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRh
dGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0NV0sIHQzCiAgICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQs
IG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlk
QXJyYXlMZW5ndGg6CkBAIC0xNDEzLDcgKzE0MTQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dAogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAgbG9hZGkgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVu
Z3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIHQ1LCBJbnQzMlRhZywgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHQwKQogICAgIHJldHVybihJbnQzMlRhZywg
dDApCiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE0MjEsNyArMTQyMiw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0CiAgICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRh
dGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGJp
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCBVbmRlZmluZWRUYWcsIDApCisgICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQogICAgIHJldHVy
bihVbmRlZmluZWRUYWcsIDApCiAKIC5vcEdldEJ5SWREZWZhdWx0OgpAQCAtMTQzMCw3ICsxNDMx
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3Q1XSwgdDIKICAg
ICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5
SWRTbG93OgpAQCAtMTQ0MCw3ICsxNDQxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIC5v
c3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0
X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmls
ZSwgdDIsIHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNTE4LDcgKzE1
MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBnZXQobV9kc3QsIHNjcmF0
Y2gpCiAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0K
ICAgICAgICAgc3RvcmVpIHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNo
LCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIEludDMyVGFnLCByZXN1
bHRQYXlsb2FkKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0
NSwgSW50MzJUYWcsIHJlc3VsdFBheWxvYWQpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQK
IApAQCAtMTUyNyw3ICsxNTI4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAg
ZmQyaWkgcmVzdWx0LCBzY3JhdGNoMiwgc2NyYXRjaDMKICAgICAgICAgc3RvcmVpIHNjcmF0Y2gz
LCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KICAgICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQ
YXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5VmFsLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQogICAgICAgICBkaXNw
YXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NzIsNyArMTU3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkCiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdl
dEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNTg1LDcgKzE1ODYsNyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRS
ZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCiAK
IGVuZCkKQEAgLTE5NTcsMTAgKzE5NTgsMTAgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5h
bWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAg
ICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KICAgICAgICAgbW92ZSB0
Mywgc3AKICAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0
clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29k
ZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwg
bV9kc3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQogCiAgICAgLm9wQ2FsbFNs
b3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgICAgIHNsb3dQYXRoRm9y
Q2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRp
c3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgZW5kKQogZW5kCiAKQEAgLTIyODgs
NyArMjI4OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0
RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgbWFjcm8gZ2V0UHJvcGVy
dHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0
NV0sIHQzCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDMsIHQwLCB0MSwg
dDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQxLCB0MikKKyAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIp
CiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTIyOTcsNyArMjI5OCw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIFRhZ09mZnNldFt0MF0sIHQx
CiAgICAgICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdDBdLCB0MgogICAgICAgICB0ZHpDaGVja0lm
TmVjZXNzYXJ5KHQxKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0
MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0
NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yMzA1LDcg
KzIzMDYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZy
b21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBPcEdldEZy
b21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQzCiAgICAgICAgIGxvYWRwIEpTTGV4
aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRhZ09mZnNldFt0MCwgdDMsIDhdLCB0MQogICAg
ICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBQYXlsb2FkT2Zmc2V0
W3QwLCB0MywgOF0sIHQyCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUs
IHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUs
IHQ1LCB0MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTI1OTQs
NiArMjU5NSwxNSBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0
UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIHJldHVybihJbnQzMlRh
ZywgdDApCiBlbmQpCiAKK2xsaW50T3Aob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4s
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJl
bChvcF9pdGVyYXRvcl9vcGVuLCBzaXplKQorICAgIGJyZWFrCitlbmQpCisKK2xsaW50T3Aob3Bf
aXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
KQorICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9uZXh0LCBzaXplKQor
ICAgIGJyZWFrCitlbmQpCiAKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmll
bGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVy
bikKICAgICBnZXQobV9iYXNlLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYWUyZTM3NzNmZmRjYzQwNjc0
YzdhYWMwYzFkNGZlNmNkMGZiNzg1OS4uODYxMzZlODU3YzlmNzgyMmIyNDQ2YzYyNmJmZGM3YTNk
ZmJiMmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTY4LDI2ICs2OCwyNiBAQCBtYWNybyBtYWtlUmV0dXJu
UHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAgICAg
Zm4obWFjcm8gKHZhbHVlKQogICAgICAgICBtb3ZlIHZhbHVlLCB0MwogICAgICAgICBtZXRhZGF0
YSh0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQxLCB0MykKKyAg
ICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMpCiAgICAg
ICAgIGdldChtX2RzdCwgdDEpCiAgICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDEsIDhdCiAgICAg
ICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzW21ldGFkYXRhXQorbWFjcm8gdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB2YWx1ZSkKKyAgICBz
dG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1
Y2tldHNbbWV0YWRhdGFdCiBlbmQKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVjb2Rl
IGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1tYWNybyBkaXNwYXRj
aEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFjcm8gZGlzcGF0Y2hB
ZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFs
UmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRQQygpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJd
LCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MSkKKyAgICBnZXQoc2l6
ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQxKQogICAgIHN0b3JlcSByMCwg
W2NmciwgdDEsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDEpCi0g
ICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKICAgICBkaXNwYXRjaCgpCiBl
bmQKIApAQCAtMTM0MCw3ICsxMzQwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
aWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBi
aW5lcSB0MCwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZGkgT3BHZXRCeUlkRGly
ZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0
MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0Miwg
dDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTEzNDgsNTMg
KzEzNDgsNTkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdl
dEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBkaXNwYXRjaCgpCiBlbmQp
CiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorIyBUaGUgYmFzZSBvYmplY3Qg
aXMgZXhwZWN0ZWQgaW4gdDMKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVj
dCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXplLCBt
ZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQyLCB0MSkKLSAgICBsb2FkYiBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5tb2RlW3QyXSwgdDEKLSAgICBnZXQobV9iYXNl
LCB0MCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdl
dEJ5SWRTbG93KQorICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRh
ZGF0YU5hbWUlLm1vZGVbdDJdLCB0MQogCiAub3BHZXRCeUlkRGVmYXVsdDoKICAgICBiYm5lcSB0
MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpEZWZhdWx0LCAub3BHZXRCeUlkUHJvdG9Mb2FkCiAg
ICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0s
IHQwCi0gICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpcyBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJd
LCB0MQorICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5h
bWUlLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNs
b3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRh
dGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFByb3RvTG9hZDoKICAgICBi
Ym5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRBcnJh
eUxlbmd0aAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9h
ZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1
Y3R1cmVJRFt0Ml0sIHQzCi0gICAgYmluZXEgdDMsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxv
YWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNh
Y2hlZE9mZnNldFt0Ml0sIHQxCi0gICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2Rl
TWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKKyAgICBsb2FkaSAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0
cnVjdHVyZUlEW3QyXSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIHNsb3dMYWJlbAorICAgIGxvYWRp
cyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRN
b2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMK
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRB
cnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxl
bmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUo
T3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5
UHJvZmlsZSwgdDAsIHQyLCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCAub3BHZXRCeUlkU2xv
dwotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdworICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQorICAgIGJ0aXogdDAsIElz
QXJyYXksIHNsb3dMYWJlbAorICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFi
ZWwKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwLCB0
MSkKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUu
bGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAotICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRT
bG93CisgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51bWJlclRhZywgdDAKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9w
R2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0g
ICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0
cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIFZhbHVlVW5kZWZpbmVkKQorICAgIGxvYWRpICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnVuc2V0TW9kZS5zdHJ1
Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKKyAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQp
CiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCitlbmQKKworbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDApCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBwZXJmb3JtR2V0
QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5
SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorCiAub3BHZXRCeUlkU2xvdzoKICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goKQpA
QCAtMTQwMiw3ICsxNDA4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9w
R2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIC5vc3JSZXR1cm5Q
b2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBz
aXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0
MiwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjApCiAg
ICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNDk3LDcgKzE1MDMsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZAogICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAg
ICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBz
Y3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHJlc3VsdCkK
KyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkK
ICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTU4LDcgKzE1NjQsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAub3BHZXRCeVZhbERvbmU6CiAgICAgc3RvcmVxIHQyLCBb
Y2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyKQorICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAgICBkaXNwYXRjaCgp
CiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNTcxLDcgKzE1NzcsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRl
ck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQ1
LCB0MikKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHIwKQorICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkKICAgICByZXR1cm4ocjApCiAKIGVu
ZCkKQEAgLTE5NDgsNiArMTk1NCwzMCBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9wY29k
ZVN0cnVjdCwgZ2V0dSkKIC5kb25lOgogZW5kCiAKK21hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFt
ZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBnZXRDYWxsZWUs
IGdldEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorICAgIG1l
dGFkYXRhKHQ1LCB0MCkKKyAgICBnZXRDYWxsZWUodDApCisKKyAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdp
dGhMaW5rQml0W3Q1XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0
MykKKyAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisKKyAgICBnZXRBcmd1bWVudFN0YXJ0
KHQzKQorICAgIGxzaGlmdGkgMywgdDMKKyAgICBuZWdwIHQzCisgICAgYWRkcCBjZnIsIHQzCisg
ICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCisgICAgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXModDIpCisgICAgc3RvcmVQQygpCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbW92ZSB0Mywgc3AKKyAgICBwcmVwYXJl
Q2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNv
ZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgIGNhbGxUYXJnZXRG
dW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisK
Ky5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gs
IHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorCiBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2Rl
TmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAg
IGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWV0YWRhdGEodDUs
IHQwKQpAQCAtMTk1NiwyNCArMTk4NiwxOSBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFt
ZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAg
ICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgICAgICBl
bmQsIG1ldGFkYXRhKQogCi0gICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0gICAgICAgIGxvYWRw
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RT
ZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQwLCB0MykKLSAgICAgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdwotICAg
ICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCB0MykKLSAgICAgICAgbHNoaWZ0
aSAzLCB0MwotICAgICAgICBuZWdwIHQzCi0gICAgICAgIGFkZHAgY2ZyLCB0MwotICAgICAgICBz
dG9yZXEgdDIsIENhbGxlZVt0M10KLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1f
YXJnYywgdDIpCi0gICAgICAgIHN0b3JlUEMoKQotICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICAgICAgbW92ZSB0Mywg
c3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRh
ZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
bV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCi0KLSAgICAub3BDYWxsU2xv
dzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgbWFjcm8gZ2V0Q2Fs
bGVlKGRzdCkKKyAgICAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCisgICAgICAgIGVuZAorCisg
ICAgICAgIG1hY3JvIGdldEFyZ3VtZW50U3RhcnQoZHN0KQorICAgICAgICAgICAgZ2V0dShzaXpl
LCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBtYWNy
byBnZXRBcmd1bWVudENvdW50KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBtX2FyZ2MsIGRzdCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgY2FsbEhlbHBlcihvcGNv
ZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBwcmVwYXJl
Q2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50U3Rh
cnQsIGdldEFyZ3VtZW50Q291bnQpCiAgICAgZW5kKQogZW5kCiAKQEAgLTIyNzYsNyArMjMwMSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3Bl
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgbWFjcm8gZ2V0UHJvcGVydHkoKQogICAg
ICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAg
ICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKLSAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIpCiAgICAgICAgIHJldHVybih0MikK
ICAgICBlbmQKIApAQCAtMjI4NCwxNCArMjMwOSwxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
YwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0s
IHQwCiAgICAgICAgIGxvYWRxIFt0MF0sIHQwCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3Nhcnko
dDApCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQwKQorICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAgICAg
ICByZXR1cm4odDApCiAgICAgZW5kCiAKICAgICBtYWNybyBnZXRDbG9zdXJlVmFyKCkKICAgICAg
ICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAg
ICAgICBsb2FkcSBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XSwgdDAK
LSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDApCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCiAgICAgICAgIHJl
dHVybih0MCkKICAgICBlbmQKIApAQCAtMjU1MSw3ICsyNTc2LDYgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9wcm9maWxlX2NvbnRyb2xfZmxvdywgT3BQcm9maWxlQ29udHJvbEZsb3csIG1hY3Jv
IChzaXplLAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotCiBsbGludE9wV2l0aFJldHVybihvcF9n
ZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIHJldHVybikKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBzdWJpIDEsIHQwCkBAIC0yNTY3LDYgKzI1OTEsMTQ3IEBA
IGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEoYTIsIHQ1KQorICAgIG1hY3JvIGZh
c3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rf
bmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMTYoKQorICAgICAgICBjYWxsU2xv
d1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KQorICAgIGVuZAorICAgIG1hY3Jv
IGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUoZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwgZmFz
dFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9wKCkgZW5kKQorCisgICAgIyBGSVhNRTogV2Ug
c2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNzZW1ibHkgc2luY2UgaXQncyB0aGUgImZhc3Qi
IGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHByIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMsIC5p
dGVyYXRvck9wZW5HZW5lcmljCisgICAgZGlzcGF0Y2goKQorCisuaXRlcmF0b3JPcGVuR2VuZXJp
YzoKKyAgICBtYWNybyBnb3RvR2V0QnlJZENoZWNrcG9pbnQoKQorICAgICAgICBqbXAgLmdldEJ5
SWRTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgZ2V0
KG1fc3ltYm9sSXRlcmF0b3IsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50
SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkKKyAgICAgICAgZ2V0dShzaXplLCBPcEl0ZXJhdG9yT3Bl
biwgbV9zdGFja09mZnNldCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJ
bmNsdWRpbmdUaGlzQ291bnQoZHN0KQorICAgICAgICBtb3ZlIDEsIGRzdAorICAgIGVuZAorCisK
KyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX29wZW4sIF9sbGludF9zbG93X3BhdGhfaXRlcmF0
b3Jfb3Blbl9jYWxsLCBPcEl0ZXJhdG9yT3BlbiwgbV9pdGVyYXRvclByb2ZpbGUsIG1faXRlcmF0
b3IsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldEJ5SWRDaGVja3BvaW50LCBt
ZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJn
dW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXRCeUlkU3RhcnQ6CisgICAgbWFjcm8gc3Rv
cmVOZXh0QW5kRGlzcGF0Y2godmFsdWUpCisgICAgICAgIG1vdmUgdmFsdWUsIHQyCisgICAgICAg
IGdldChtX25leHQsIHQxKQorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgICAg
ICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2l0ZXJhdG9y
LCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0
TmV4dFNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2Rl
TWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3cs
IHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKworLml0ZXJhdG9yT3Blbkdl
bmVyaWNHZXROZXh0U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVy
YXRvcl9vcGVuX2dldF9uZXh0KQorICAgIGRpc3BhdGNoKCkKKworZW5kKQorCitsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKworICAgIGxvYWRWYXJpYWJsZShnZXQs
IG1fbmV4dCwgdDApCisgICAgYnRxbnogdDAsIHQwLCAuaXRlcmF0b3JOZXh0R2VuZXJpYworICAg
IG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNy
byBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2Fs
bFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBz
aXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNh
bGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5l
IGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0
ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JOZXh0R2VuZXJpYworICAgIGRp
c3BhdGNoKCkKKworLml0ZXJhdG9yTmV4dEdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldERvbmVD
aGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXREb25lU3RhcnQKKyAgICBlbmQKKworICAgIG1h
Y3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX25leHQsIGRzdCkKKyAgICBlbmQKKwor
ICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkKKyAgICAgICAgZ2V0
dShzaXplLCBPcEl0ZXJhdG9yTmV4dCwgbV9zdGFja09mZnNldCwgZHN0KQorICAgIGVuZAorCisg
ICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0KQorICAgICAgICBtb3Zl
IDEsIGRzdAorICAgIGVuZAorCisgICAgIyBVc2UgbV92YWx1ZSBzbG90IGFzIGEgdG1wIHNpbmNl
IHdlIGFyZSBnb2luZyB0byB3cml0ZSB0byBpdCBsYXRlci4KKyAgICBjYWxsSGVscGVyKG9wX2l0
ZXJhdG9yX25leHQsIF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsLCBPcEl0ZXJh
dG9yTmV4dCwgbV9uZXh0UmVzdWx0UHJvZmlsZSwgbV92YWx1ZSwgcHJlcGFyZUZvclJlZ3VsYXJD
YWxsLCBzaXplLCBnb3RvR2V0RG9uZUNoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdl
dEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3Vu
dCkKKworLmdldERvbmVTdGFydDoKKyAgICBtYWNybyBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVl
KGRvbmVWYWx1ZSkKKyAgICAgICAgIyB1c2UgdDAgYmVjYXVzZSBwZXJmb3JtR2V0QnlJREhlbHBl
ciB1c3VhbGx5IHB1dHMgdGhlIGRvbmVWYWx1ZSB0aGVyZSBhbmQgb2ZmbGluZWFzbSB3aWxsIGVs
aWRlIHRoZSBzZWxmIG1vdmUuCisgICAgICAgIG1vdmUgZG9uZVZhbHVlLCB0MAorICAgICAgICBn
ZXQobV9kb25lLCB0MSkKKyAgICAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAg
am1wIC5nZXRWYWx1ZVN0YXJ0CisgICAgZW5kCisKKworICAgIGxvYWRWYXJpYWJsZShnZXQsIG1f
dmFsdWUsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLmdldERvbmVTbG93CisgICAg
cGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwg
bV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVEb25lQW5k
Sm1wVG9HZXRWYWx1ZSkKKworLmdldERvbmVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCisgICAgYnJhbmNoSWZFeGNlcHRpb24o
X2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCisgICAgbG9hZFZhcmlhYmxl
KGdldCwgbV9kb25lLCB0MCkKKworICAgICMgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSBwdXRz
IHRoZSBkb25lVmFsdWUgaW50byB0MAorLmdldFZhbHVlU3RhcnQ6CisgICAgIyBCcmFuY2ggdG8g
c2xvdyBpZiBub3QgbWlzYyBwcmltaXRpdmUuCisgICAgYnRxbnogdDAsIH4weGYsIC5nZXRWYWx1
ZVNsb3cKKyAgICBidGl6IHQwLCAweDEsIC5ub3REb25lCisgICAgZGlzcGF0Y2goKQorCisubm90
RG9uZToKKyAgICBtYWNybyBzdG9yZVZhbHVlQW5kRGlzcGF0Y2godikKKyAgICAgICAgbW92ZSB2
LCB0MgorICAgICAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgICAgIHN0b3JlcSB0MiwgW2Nmciwg
dDEsIDhdCisgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQwLCAweGJhZGRiMDFl
KQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICAjIFJlbG9hZCB0aGUgbmV4dCBy
ZXN1bHQgdG1wIHNpbmNlIHRoZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUgY2xvYmJlcmVkIHQz
LgorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQorICAgICMgV2UgZG9uJ3QgbmVl
ZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJlIHNpbmNlIHdl
IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgorICAgIHBlcmZvcm1HZXRCeUlESGVs
cGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwg
LmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCkKKwor
LmdldFZhbHVlU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRv
cl9uZXh0X2dldF92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKKwogbGxpbnRPcFdpdGhQ
cm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fYmFz
ZSwgdDEpCiAgICAgZ2V0dShzaXplLCBPcEdldEludGVybmFsRmllbGQsIG1faW5kZXgsIHQyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCmluZGV4IDhk
NzY3MTE2YzA1NGU1ZWE2NjRlZjQwNjJjNTZmMjYwNWUwZDhiNDUuLjU4OWFlMGUwZjNlZDM0YjY2
MWU4NTYyYmNhMjk4MDJlYzEwZTViNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIKQEAgLTYyOSw3ICs2MjksNyBAQCBlbmQKIAogY2xhc3MgTm9k
ZQogICAgIGRlZiB2YWxpZGF0ZQotICAgICAgICByYWlzZSAiVW5yZXNvbHZlZCAje2R1bXB9IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIHJhaXNlICJVbnJlc29sdmVkICcje2R1bXB9
JyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgogICAgIGVuZAogICAgIAogICAgIGRlZiB2YWxpZGF0
ZUNoaWxkcmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAppbmRleCBiOGRlOTY1NTgyZjdkOTEyNzEzMzdkNTQzMTkwM2U4MzE4YzI2ZjQ3
Li5lMTlkZmI5OWUzZWE0NmMyMmI0MWFjMTcyYzExM2RhYTQxNTFjYTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMTUzLDggKzE1NCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNkZWZpbmUgUkVUVVJOX1BST0ZJTEVEKHZhbHVlX18pIFwKICAgICBSRVRVUk5f
V0lUSF9QUk9GSUxJTkcodmFsdWVfXywgUFJPRklMRV9WQUxVRShyZXR1cm5WYWx1ZV9fKSkKIAot
I2RlZmluZSBQUk9GSUxFX1ZBTFVFKHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsgXAorI2RlZmluZSBQUk9GSUxFX1ZBTFVFKHZhbHVlX18pIFwKKyAgICBQUk9GSUxF
X1ZBTFVFX0lOKHZhbHVlX18sIG1fcHJvZmlsZSkKKworI2RlZmluZSBQUk9GSUxFX1ZBTFVFX0lO
KHZhbHVlLCBwcm9maWxlTmFtZSkgZG8geyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykucHJvZmlsZU5hbWUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiBzdGF0aWMgdm9pZCB0aHJvd0FyaXR5Q2hlY2tT
dGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29w
ZSYgc2NvcGUpCkBAIC05NjUsNiArOTY5LDEyOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
aW5fYnlfaWQpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3By
b3BlcnR5KSkpKTsKIH0KIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICAv
LyBEb24ndCBzZXQgUEM7IHdlIGNhbid0IHRocm93IGFuZCBpdCdzIHJlbGF0aXZlbHkgc2xvdy4K
KyAgICBCRUdJTl9OT19TRVRfUEMoKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93
bldpZHRoPE9wSXRlcmF0b3JPcGVuLCB3aWR0aD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9ICpy
ZWludGVycHJldF9jYXN0PE9wSXRlcmF0b3JPcGVuOjpNZXRhZGF0YSo+KG1ldGFkYXRhUHRyKTsK
KyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gR0VUX0MoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1
ZSgpOworICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRlcmFibGUsIG1faXRlcmFibGVQcm9maWxlKTsK
KyAgICBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yID0gR0VUX0MoYnl0ZWNvZGUubV9zeW1ib2xJdGVy
YXRvcikuanNWYWx1ZSgpOworICAgIGF1dG8mIGl0ZXJhdG9yID0gR0VUKGJ5dGVjb2RlLm1faXRl
cmF0b3IpOworCisgICAgYXV0byBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uID0gWyZdIHsK
KyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljOworCisgICAgICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1c3Qg
Y2hlY2tlZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2YWxpZC4KKyAgICAgICAgSlNGdW5jdGlv
biogc3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZt
LCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgIGlmICghc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikK
KyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOyAKKworICAgICAgICBp
ZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSAh
PSBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1v
ZGU6OkdlbmVyaWM7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGdvb2QgdG8gZ28uCisgICAg
ICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9p
dGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7Cisg
ICAgICAgIEdFVChieXRlY29kZS5tX25leHQpID0gSlNWYWx1ZSgpOworICAgICAgICBhdXRvKiBp
dGVyYXRlZE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGl0ZXJhYmxlKTsKKyAgICAgICAgewor
ICAgICAgICAgICAgaXRlcmF0b3IgPSBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRp
b25LaW5kOjpWYWx1ZXMpOworICAgICAgICB9CisgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRl
cmF0b3IuanNWYWx1ZSgpLCBtX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAgICAgIHJldHVybiBJdGVy
YXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgfTsKKworICAgIGlmIChpdGVyYWJsZS5pbmhlcml0
czxKU0FycmF5Pih2bSkpIHsKKyAgICAgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRp
b24oKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpCisgICAgICAgICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0
QXJyYXkpKTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdG8gdGhlIGJ5dGVjb2RlIHRvIHRyeSBp
biBnZW5lcmljIG1vZGUuCisgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9k
ZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1v
ZGU6OkdlbmVyaWM7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpOworfQorCitTbG93UGF0aFJldHVyblR5
cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAg
IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PE5hcnJvdz4oY2FsbEZyYW1lLCBwYywgbWV0
YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRy
KQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUzMj4oY2FsbEZyYW1l
LCBwYywgbWV0YWRhdGFQdHIpOworfQorCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQor
eworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxP
cEl0ZXJhdG9yTmV4dCwgd2lkdGg+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnBy
ZXRfY2FzdDxPcEl0ZXJhdG9yTmV4dDo6TWV0YWRhdGEqPihtZXRhZGF0YVB0cik7CisKKyAgICBB
U1NFUlQoIUdFVChieXRlY29kZS5tX25leHQpLmpzVmFsdWUoKSk7CisgICAgSlNPYmplY3QqIGl0
ZXJhdG9yID0ganNDYXN0PEpTT2JqZWN0Kj4oR0VUKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFs
dWUoKSk7OworICAgIEpTQ2VsbCogaXRlcmFibGUgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYWJsZSku
anNWYWx1ZSgpLmFzQ2VsbCgpOworICAgIGlmIChhdXRvIGFycmF5SXRlcmF0b3IgPSBqc0R5bmFt
aWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHZtLCBpdGVyYXRvcikpIHsKKyAgICAgICAgaWYgKGF1
dG8gYXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXkqPih2bSwgaXRlcmFibGUpKSB7CisgICAg
ICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYXJy
YXktPnN0cnVjdHVyZUlEKCkpOworCisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1l
dGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVz
IHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgICAgICAgICAgYXV0byYgaW5kZXhTbG90
ID0gYXJyYXlJdGVyYXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJ
bmRleCk7CisgICAgICAgICAgICBpbnQ2NF90IGluZGV4ID0gaW5kZXhTbG90LmdldCgpLmFzQW55
SW50KCk7CisgICAgICAgICAgICBBU1NFUlQoMCA8PSBpbmRleCAmJiBpbmRleCA8PSBtYXhTYWZl
SW50ZWdlcigpKTsKKworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgICAgIGJv
b2wgZG9uZSA9IGluZGV4ID49IGFycmF5LT5sZW5ndGgoKTsKKyAgICAgICAgICAgIEdFVChieXRl
Y29kZS5tX2RvbmUpID0ganNCb29sZWFuKGRvbmUpOworICAgICAgICAgICAgaWYgKCFkb25lKSB7
CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUgYmVjYXVzZSB3
ZSBrbm93IHRoaXMgaXMgYSBwcmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5kZXhTbG90LnNl
dFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoaW5kZXggKyAxKSk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gYXJyYXktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGluZGV4KSk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOworICAgICAgICAgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4odmFs
dWUsIG1fdmFsdWVQcm9maWxlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUgYmVjYXVzZSB3ZSBrbm93IHRoaXMgaXMg
YSBwcmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5kZXhTbG90LnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIoanNOdW1iZXIobWF4U2FmZUludGVnZXIoKSkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBHRVQoYnl0ZWNvZGUubV92YWx1ZSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6
OkZhc3RBcnJheSkpOworICAgICAgICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisKKyAgICAvLyBSZXR1cm4gdG8gdGhlIGJ5dGVjb2RlIHRvIHRyeSBpbiBnZW5l
cmljIG1vZGUuCisgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBt
ZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVy
biBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PE5hcnJvdz4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQ
dHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5
X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMs
IHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQorewor
ICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUzMj4oY2FsbEZyYW1lLCBwYywg
bWV0YWRhdGFQdHIpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkK
IHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAppbmRleCBiNzEzNWUyYjc4NGFiNjhkYjVmNTU4ZmE3ODUwNGNhYjA5NjQz
YzYxLi43YWIwOGEyZmFkNjlhNGIwZDQ1OTIzNzc5Mzc1ZGNkOGIyZWUwYTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ2LDYg
KzI0Niw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfb2JqZWN0X29yX251
bGwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfaW5fYnlfdmFsKTsKKy8vIFNMT1dfUEFUSF9ISURERU5fREVDTChpdGVy
YXRvcl9vcGVuX3RyeV9mYXN0KTsKKy8vIFNMT1dfUEFUSF9ISURERU5fREVDTChpdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3Zh
bCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N0cmNhdCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSk7CkBAIC0yODMsNiArMjg1LDE4IEBA
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NwcmVhZCk7CiAKK3RlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KK2V4dGVybiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRh
ZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jf
b3Blbl90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2
b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEgg
aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBT
TE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CisKK3RlbXBsYXRlPE9wY29kZVNpemUg
c2l6ZT4KK2V4dGVybiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRf
dHJ5X2Zhc3QoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0
YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4
dF90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lk
KiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRl
cmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9X
X1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiwgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CisKIHVzaW5nIFNsb3dQYXRoRnVuY3Rpb24g
PSBTbG93UGF0aFJldHVyblR5cGUoU0xPV19QQVRIICopKENhbGxGcmFtZSosIGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggMzUzNTkwOTA0OTFjZTBhZmRjZDhiYmI0Zjg3NWJi
MzgxOGMyMmQzZS4uNjg3NGVjNzkwMzc1OGNmOWRmNDQzOWE2MjM5MDYxY2YyNzA1ODkzZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCkBAIC0zMzAsNiAr
MzMwLDI0IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4gaW50ZXJh
dGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKK3sKKyAgICBzd2l0Y2gg
KGludHJpbnNpYykgeworICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5zaWM6CisgICAgY2FzZSBU
eXBlZEFycmF5VmFsdWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6
VmFsdWVzOworICAgIGNhc2UgQXJyYXlLZXlzSW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJh
eUtleXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpLZXlzOworICAg
IGNhc2UgQXJyYXlFbnRyaWVzSW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJ
bnRyaW5zaWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorfQorCisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKaW5kZXggNmJmZmY5MDA2M2NlMmQ3ZDhhYzIwNTQyZThhOGQ3ZTE4
YzQyYmFlOS4uNzFiYTNhYWQzNTk2OTU2YWZjMmQwYWJmYzZmZDFkZTE3YWYxZWQ1MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTE4Nyw2ICsxODcsOCBA
QCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIERhdGFWaWV3U2V0RmxvYXQ2NCwKIH07
CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKElu
dHJpbnNpYyk7CisKIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlJdGVyYXRvci5oCmluZGV4IDU5OWU3NzRiMDNkZDNlNWJhNmQ0ZDdmYTM0YmI5OGE5Njg3ZWM2
MDkuLjRmZDBhMTE2NTI1Y2RjNTMyYTUzZDBiOGI1YWNiNTMzODdhOGRiYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCkBAIC02OCw2ICs2
OCwxMCBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmpl
Y3QpLmdldCgpKTsgfQogCiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKiwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBKU1ZhbHVlIGtpbmQpOworICAg
IHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKKyAgICB7
CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKSkpOworICAgIH0KICAgICBzdGF0aWMg
SlNBcnJheUl0ZXJhdG9yKiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSop
OwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAppbmRleCA0MmM1Mzc3N2NjZGVjNWZjZDRkYjgxMGQxODU0ZmE2MGM5ZjQ4MWVkLi5kMzAy
YjE4NjUzZTM4NDk3ODkyYjYwNWZhMTI4YTk5YzBmOTRmMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjUsNiArMjI1LDcgQEAgcHVibGljOgog
ICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAg
IGJvb2wgaXNGdW5jdGlvbihWTSYpIGNvbnN0OworICAgIGJvb2wgaXNDYWxsYWJsZShWTSYpIGNv
bnN0OwogICAgIGJvb2wgaXNDYWxsYWJsZShWTSYsIENhbGxUeXBlJiwgQ2FsbERhdGEmKSBjb25z
dDsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ29uc3Ry
dWN0b3IoVk0mLCBDb25zdHJ1Y3RUeXBlJiwgQ29uc3RydWN0RGF0YSYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXgg
NWIzZmY4YWM0NGU2NTc4YWVlZmY2OWMxY2ZkYmViZWFiYWQ4MGFmNy4uNjJmOWQyNGYxNWQwNzI0
NWFkNzc2YzQ4NzlkMjA3ZjE1NTdjYWFiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC04MjcsNiArODI3LDEzIEBAIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzRnVuY3Rpb24oVk0mIHZtKSBjb25zdAogICAgIHJldHVybiBhc0Nl
bGwoKS0+aXNGdW5jdGlvbih2bSk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFi
bGUoVk0mIHZtKSBjb25zdAoreworICAgIENhbGxUeXBlIHVudXNlZFR5cGU7CisgICAgQ2FsbERh
dGEgdW51c2VkRGF0YTsKKyAgICByZXR1cm4gaXNDYWxsYWJsZSh2bSwgdW51c2VkVHlwZSwgdW51
c2VkRGF0YSk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0mIHZtLCBD
YWxsVHlwZSYgY2FsbFR5cGUsIENhbGxEYXRhJiBjYWxsRGF0YSkgY29uc3QKIHsKICAgICBpZiAo
IWlzQ2VsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCBlOGIy
M2NlNTk5ZDM2MmRjNjVmMzNmOGVmMjNhZDhmNWQ2ZDk3MTFiLi5iMjUwMzU2OWM4NDIyNTYwMTE0
MWE4MGNmNTk4NDhmNWQ2NzNiNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
c3QuaApAQCAtNjAsMTMgKzYwLDEzIEBAIGlubGluZSBUbyBqc0Nhc3QoSlNWYWx1ZSBmcm9tKQog
Ly8gU3BlY2lmaWMgdHlwZSBvdmVybG9hZHMuCiAjZGVmaW5lIEZPUl9FQUNIX0pTX0RZTkFNSUNf
Q0FTVF9KU19UWVBFX09WRVJMT0FEKG1hY3JvKSBcCiAgICAgbWFjcm8oSlNJbW11dGFibGVCdXR0
ZXJmbHksIEpTVHlwZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlLCBKU1R5cGU6OkpTSW1tdXRh
YmxlQnV0dGVyZmx5VHlwZSkgXAotICAgIG1hY3JvKEpTQXJyYXlJdGVyYXRvciwgSlNUeXBlOjpK
U0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUpIFwKICAgICBt
YWNybyhKU1N0cmluZ0l0ZXJhdG9yLCBKU1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBlLCBKU1R5
cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNPYmplY3QsIEZpcnN0T2Jq
ZWN0VHlwZSwgTGFzdE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU0ZpbmFsT2JqZWN0LCBKU1R5
cGU6OkZpbmFsT2JqZWN0VHlwZSwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUpIFwKICAgICBtYWNy
byhKU0Z1bmN0aW9uLCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkpTRnVuY3Rpb25U
eXBlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxGdW5jdGlvbiwgSlNUeXBlOjpJbnRlcm5hbEZ1bmN0
aW9uVHlwZSwgSlNUeXBlOjpJbnRlcm5hbEZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEpTQXJy
YXksIEpTVHlwZTo6QXJyYXlUeXBlLCBKU1R5cGU6OkRlcml2ZWRBcnJheVR5cGUpIFwKKyAgICBt
YWNybyhKU0FycmF5SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBl
OjpKU0FycmF5SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlciwgSlNUeXBl
OjpBcnJheUJ1ZmZlclR5cGUsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlKSBcCiAgICAgbWFjcm8o
SlNBcnJheUJ1ZmZlclZpZXcsIEZpcnN0VHlwZWRBcnJheVR5cGUsIExhc3RUeXBlZEFycmF5VHlw
ZSkgXAogICAgIG1hY3JvKEpTUHJvbWlzZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlLCBKU1R5cGU6
OkpTUHJvbWlzZVR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCAyNmFhMGQ3YzZlZGZhNjNlM2M4ZmY2MjA4ZjYyNWY1NzAz
Njg3M2YwLi4xMTczYWEwODhkY2I3NmMwNGZlNGI1ZmMwYjFhNDkzOTMzOTFlNzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01
NTksMTAgKzU1OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0
LnZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1RvU3Ry
aW5nLCBOb0ludHJpbnNpYykpOwogICAgICAgICB9KTsKLSAgICBtX2FycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbi5pbml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0
aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmlu
ZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKLSAgICAg
ICAgfSk7CisgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJp
bmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7CiAKICAg
ICBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewpAQCAtMTc0OSw3ICsxNzQ2LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fcGFyc2VJbnRGdW5jdGlvbi52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlRmxvYXRGdW5jdGlvbi52aXNpdCh2aXNp
dG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0
KHZpc2l0b3IpOwotICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZp
c2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbi52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24udmlz
aXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCAyYzI4ZThiZjZjYTRlNzNiNTZjZGEzNzc0YjIxNzY0NzFhOWYwNTEzLi4w
YWNkZmFlZDllOWFkZmMyMzhhYjdjMjM0MmUzNTQ5MzBhYTY5MjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5OSw3ICsyOTksNyBA
QCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X3BhcnNlRmxvYXRGdW5jdGlvbjsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbjsKLSAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
OworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fZXZhbEZ1
bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9p
dGVyYXRvclByb3RvY29sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb247CkBAIC02MDgsNyArNjA4LDcg
QEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZXZhbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVG9TdHJpbmdG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0
KHRoaXMpOyB9Ci0gICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CisgICAg
SlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRv
clByb3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5j
dGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1
bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KQEAg
LTYxOSw2ICs2MTksNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0
cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rp
b24uZ2V0SW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1
bmN0aW9uKiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0OworICAgIEpTRnVuY3Rpb24q
IGFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGFy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpOyB9CiAgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU3lt
Ym9sUmVwbGFjZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b1N5bWJvbFJl
cGxhY2UuZ2V0KCk7IH0KICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVy
KCkgY29uc3Q7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4
IDk5Njk0ZDAxMjdiYWUxY2VhNWNmNjNmYTljZGQ5NzcwMDBjYjdhYTQuLmZiNDBmYzk1MDc2YWM1
MGEwYTM5NGY1OGM1M2ViMWNiZGIwNmZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtMTE5LDYgKzExOSw4IEBAIGNvbnN0ZXhwciBib29sIGVu
YWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihVbnNpZ25lZCwgc2hh
ZG93Q2hpY2tlbkxvZ1NpemUsIDEwMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoVW5zaWdu
ZWQsIHNoYWRvd0NoaWNrZW5NYXhUYWlsRGVsZXRlZEZyYW1lc1NpemUsIDEyOCwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgXAorICAgIHYoQm9vbCwgdXNlSXRlcmF0aW9uSW50cmluc2ljcywgdHJ1
ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgXAogICAgIHYoQm9vbCwgdXNlT1NMb2csIGZhbHNl
LCBOb3JtYWwsICJMb2cgZGF0YUxvZygpcyB0byBvc19sb2cgaW5zdGVhZCBvZiBzdGRlcnIiKSBc
CiAgICAgLyogZHVtcERpc2Fzc2VtYmx5IGltcGxpZXMgZHVtcERGR0Rpc2Fzc2VtYmx5LiAqLyBc
CiAgICAgdihCb29sLCBkdW1wRGlzYXNzZW1ibHksIGZhbHNlLCBOb3JtYWwsICJkdW1wcyBkaXNh
c3NlbWJseSBvZiBhbGwgSklUIGNvbXBpbGVkIGNvZGUgdXBvbiBjb21waWxhdGlvbiIpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDc2NGFkMDY1
YWMwMTFlMzNjMzIzOGNkOWRhOTUzOWMxNTgzOTIzZTUuLjljMmNlN2FmYWU2ZTM4ZTdhNjA4MDI2
ZjUxNzcxMTBlM2M4NTU2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcApAQCAtMTI2OCw2ICsxMjY4LDggQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB2b2lk
IFN0cnVjdHVyZTo6ZHVtcEJyaWVmKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IENTdHJpbmcmIHN0
cmluZykgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIiUiLCBzdHJpbmcsICI6IiwgY2xhc3NJbmZv
KCktPmNsYXNzTmFtZSk7CisgICAgaWYgKGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1h
c2spCisgICAgICAgIG91dC5wcmludCgiLCIsIEluZGV4aW5nVHlwZUR1bXAoaW5kZXhpbmdUeXBl
KCkpKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBDb250ZXh0SGVhZGVyKFByaW50U3RyZWFt
JiBvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJs
b2Fkcy5oIGIvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAppbmRl
eCAzNTdiYTJmYTJmNzkyOWE2YTk5OGE5YTRlZjE0ZDJiZTU3NTQ2MzcxLi41NmFiYzRiNTNlYzlm
YWI2MDc1YmY2ZDJlYmJiZWQxZjMzY2RmOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9F
bnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFz
c09wZXJhdG9yT3ZlcmxvYWRzLmgKQEAgLTU5LDMgKzU5LDkgQEAKIAogI2RlZmluZSBPVkVSTE9B
RF9SRUxBVElPTkFMX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVHUkFMUyhlbnVt
TmFtZSkgT1ZFUkxPQURfUkVMQVRJT05BTF9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihl
bnVtTmFtZSwgc3RkOjppc19pbnRlZ3JhbF92PFQ+KQogCisjZGVmaW5lIE9WRVJMT0FEX0JJVFdJ
U0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIGVuYWJsZUV4cHJlc3Np
b24pIFwKKyAgICBPVkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1l
LCB8LCBlbmFibGVFeHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1f
Q0xBU1NfV0hFTihlbnVtTmFtZSwgJiwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FE
X09QRVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIF4sIGVuYWJsZUV4cHJlc3Np
b24pIFwKKworI2RlZmluZSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFT
U19XSVRIX0lOVEVSR1JBTFMoZW51bU5hbWUpIE9WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZP
Ul9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHN0ZDo6aXNfaW50ZWdyYWxfdjxUPikKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWRjOTg5
YzU1YjQzNGVmZjZmZDNlZjRkYTNhNTIzYzdmZDU3M2FiMi4uYjQ5YmU1NDA5NDRkMjhiOGE3YWI5
OGVjMGQxNzcxMGNiNzg4NjY2NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAyMC0wNC0xNSAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWRlc2lnbiBob3cgd2Ug
ZG8gaXRlcmF0aW9uIGZvciBrbm93biB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJy
YXktZW50cmllcy5qczoKKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2N1c3RvbS1p
dGVyYXRvcnMuanM6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgIChpdGVyLnJldHVybik6Cisg
ICAgICAgIChpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdCk6CisgICAgICAgIChpdGVyYXRvcklu
dGVyZmFjZUVycm9yVGVzdFJldHVybik6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUJyZWFr
VGVzdFJldHVybik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1v
Zi1vbi1tYXAuanM6CisgICAgICAgIChmaW5kKToKKyAgICAgICAgKGkubGV0LnYub2YuZmluZCk6
CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanM6
CisgICAgICAgIChmaW5kKToKKyAgICAgICAgKHNldCBhZGQpOgorICAgICAgICAqIHN0cmVzcy9v
c3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0LnJldHVybi5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAg
ICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUt
Z2V0dGVyLmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IHZhbHVl
KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFi
bGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6Cisg
ICAgICAgICogc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qczoK
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
U3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAg
ICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1p
bi1mb3Itb2YtaGVhZGVyLmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5T
eW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAg
ICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9m
LWhlYWRlci5qczoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5s
ZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJl
dHVybik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS12
YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
Lm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKGku
bGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5y
ZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisKIDIwMjAtMDQtMTQgIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU2tpcCBhbGwgbG93IGV4ZWN1dGFibGUgbWVt
b3J5IHdhc20gdGVzdHMgb24gYXJtNjQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCmluZGV4IDU1ZWNjMGJmY2Y5MTlj
YWNhZTdmZDE1ZGRiNDBiMTRmZGNhOTRlZGEuLjIwMTJiOTEyODUwZjU4MTE2N2ZiZDMxMDUwNTli
NzZkNzY2M2I2ZDggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1p
dGVyYXRlLWFycmF5LWVudHJpZXMuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9y
LW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcwpAQCAtMywxMCArMywxMiBAQCBmdW5jdGlvbiBm
b28oKSB7CiAgICAgdmFyIGFycmF5ID0gW107CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTAw
MDsgaSsrKQogICAgICAgICBhcnJheS5wdXNoKGkpOwotICAgIAorCiAgICAgdmFyIHJlc3VsdCA9
IDA7Ci0gICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGFycmF5LmVudHJpZXMoKSkKKyAgICBm
b3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgYXJyYXkuZW50cmllcygpKSB7CisgICAgICAgIHByaW50
KGtleSArICIgIiArICR2bS5pbmRleGluZ01vZGUoYXJyYXkpKTsKICAgICAgICAgcmVzdWx0ICs9
IGtleSArIHZhbHVlICsgYXJyYXlba2V5XTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCmluZGV4IGZkNjQxM2ZlM2I1ZTkwM2Fm
ZmUzODAzZmQwMDRjMGNiMWYxYzY0ZjMuLmQzZDFiZDdlODU4ZTg3NGZiZDExM2Q4MmY5MjExZWE0
YmQ1ZWY3YjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcwpAQCAtMjIsNyArMjIsNyBA
QCBmb3IgKHZhciB2YWx1ZSBvZiBpdGVyKSB7CiAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlOiAiICsgdmFsdWU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjog
cmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxs
ZWQiKTsKIAogCiAKQEAgLTUzLDcgKzUzLDcgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7
CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0g
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRo
cm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBp
cyBub3QgY2FsbGVkLiI7CkBAIC0xMDgsMTAgKzEwOCwxMCBAQCB0cnkgewogICAgIH0KIH0gY2F0
Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IGxvb2tpbmcgdXAgbmV4dC4i
KQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAg
ICB0aHJvdyBlOwogfQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVy
biBpcyBjYWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7
CiAKIAogCkBAIC0xMzYsNyArMTM2LDcgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAg
ICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBsb29raW5nIHVwIHJldHVybi4iKQotICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBl
OwogfQogCiAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkg
ewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbmV4dCBpcyBjYWxsZWQuIikKLSAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cg
ZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2Fs
bGVkLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApA
QCAtMTgzLDcgKzE4Myw3IEBAIHZhciBpdGVyID0gewogICAgIH0sCiAgICAgcmV0dXJuOiBmdW5j
dGlvbiAoKSB7CiAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7Ci0gICAgICAgIHRocm93ICJF
cnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVy
biB3YXMgY2FsbGVkIik7CiAgICAgfQogfTsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIHRyeSB7CiAg
ICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWlu
YXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246
ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhy
b3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZh
ciBpdGVyID0gewogICAgIH0sCiAgICAgcmV0dXJuOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHJl
dHVybkNhbGxlZCA9IHRydWU7Ci0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxl
ZC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAgICAg
fQogfTsKIHRyeSB7CkBAIC0yMTgsOCArMjE4LDggQEAgdHJ5IHsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfSBjYXRjaCAoZSkgewotICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogcmV0dXJu
IGlzIGNhbGxlZC4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIg
KyBlOworICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogcmV0dXJuIHdhcyBjYWxsZWQiKQor
ICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhyb3cgIkVycm9y
OiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMjU1LDEwICsyNTUsMTAgQEAgZnVuY3Rpb24g
aXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3Qobm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAg
fQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIlR5cGVFcnJv
cjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCi0gICAgICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAg
dGhyb3cgZTsKICAgICB9CiAgICAgaWYgKHJldHVybkNhbGxlZCkKLSAgICAgICAgdGhyb3cgIkVy
cm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJu
IHdhcyBjYWxsZWQiKTsKIH0KIAogZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RS
ZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKQEAgLTI4Miw3ICsyODIsNyBAQCBmdW5jdGlvbiBp
dGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJldHVybihub3RJdGVyYXRvclJlc3VsdCkgewogICAg
ICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJy
b3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFk
IGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBp
ZiAoIXJldHVybkNhbGxlZCkKICAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNh
bGxlZC4iOwpAQCAtMzEzLDcgKzMxMyw3IEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlQnJl
YWtUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAg
fQogICAgIGlmICghcmV0dXJuQ2FsbGVkKQogICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBp
cyBub3QgY2FsbGVkLiI7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29u
dGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRh
aW5pbmctZm9yLW9mLW9uLW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzhiN2VlODE0MjRhMmQyZjUzOGNl
N2IyMDU5ZDhkNmU0NThlNGJhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5j
dGlvbiAqZmluZChub2RlcywgcCkKK3sKKyAgICBmb3IgKGxldCBbYXJyYXldIG9mIG5vZGVzKSB7
CisgICAgICAgIGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUoZmluZCk7
CisKK2xldCBtYXAgPSBuZXcgTWFwKCk7Citub0lubGluZShtYXBbU3ltYm9sLml0ZXJhdG9yXSgp
Lm5leHQpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBtYXAuc2V0KFsxLDIs
NCw1LDVdLCB7fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmb3Ig
KGxldCB2IG9mIGZpbmQobWFwLCBpICUgMikpIHsgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLXNldC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJm
MzI3MzkwZDczNzVhMjIwMmFlNTlhMTEyNDY1Njk4Y2I2ZWFiNgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKQEAg
LTAsMCArMSwyMyBAQAorZnVuY3Rpb24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQg
YXJyYXkgb2Ygbm9kZXMpIHsKKyAgICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2ID09PSBw
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAgICB9Cit9
Citub0lubGluZShmaW5kKTsKKworbGV0IHNldCA9IG5ldyBTZXQoKTsKK25vSW5saW5lKHNldFtT
eW1ib2wuaXRlcmF0b3JdKCkubmV4dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKQor
ICAgIHNldC5hZGQoWzEsMiw0LDUsNV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7
ICsraSkgeworICAgIGZvciAobGV0IHYgb2YgZmluZChzZXQsIGkgJSAyKSkgeworICAgICAgICBp
ZiAoaSAlIDIgIT09IDEpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vIHJlc3VsdCBz
aG91bGQgaGF2ZSBiZWVuIHByb2R1Y2VkIGhlcmUiKTsKKyAgICAgICAgaWYgKCEodiBpbnN0YW5j
ZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigicmVzdWx0IHdhcyBub3Qg
YW4gYXJyYXkiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJv
bS1mb3Itb2YtZG9uZS1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2Yt
ZG9uZS1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI0YzQ5YzkzYjI5ZmNiMGY3MTBjNmM4MmQxZmQ4
ODAwMWEyMmUyNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZv
ci1vZi1kb25lLWdldHRlci5qcwpAQCAtMCwwICsxLDIzIEBACitmb3IgKGxldCBpID0gMDsgaSA8
IDFlNTsgKytpKSB7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVy
YWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICAgICAgZ2V0IGRvbmUoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbmFsVGll
cigpKQorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VPU1IoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9LAorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwK
KyAgICAgICAgcmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAg
dHJ5IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIHsKKyAg
ICB9CisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVy
LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NzA5NmVlMDNlMTUyNTczYWVkYzY0ZDA0MzlmYjJiZjIyYzY0MTViCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5q
cwpAQCAtMCwwICsxLDIxIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAg
bGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAg
ZG9uZTogMCwKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICAgICAgZG9uZTogdGhpcy5kb25lKyssCisgICAgICAgICAgICAgICAgZ2V0IHZhbHVlKCkg
eyBpZiAoaXNGaW5hbFRpZXIoKSkgRm9yY2VPU1IoKTsgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisg
ICAgICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRy
eSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAg
fQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24t
b2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24t
b2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYmQzMmFkZDdjYzNiYTM0MzI1NGRhNzEwOGU1MTlmZjc1
YjMyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4
dC1yZXR1cm5zLW5vbi1vYmplY3QuanMKQEAgLTAsMCArMSwxNiBAQAorZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTU7ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQg
aXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7IHJldHVybiAxOyB9LAorICAgICAgICBbU3lt
Ym9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0
dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBv
ZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPSAiVHlw
ZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKKyAg
ICAgICAgICAgIHRocm93IGU7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ct
ZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhy
b3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YTE0
MmM4YTZjNTRmNDc2ZWMwMzlhMTRlOWUyZDNlN2I5NmRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMK
QEAgLTAsMCArMSwyNCBAQAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBs
ZXQgZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7Cisg
ICAgICAgIG5leHQoKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBnZXQgZG9uZSgpIHsKKyAg
ICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAg
IFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkg
eworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07Cisg
ICAgdHJ5IHsKKyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3Ip
CisgICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
dGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJv
dy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjE5NGZkN2NhNWFj
NTlhZDY5NjE5NDJmODYyN2I2MGE1YWEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNCBA
QAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAg
bGV0IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7
CisgICAgICAgICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAg
ICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVy
bigpIHsKKyAgICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9
OworICAgIG5vSW5saW5lKGl0ZXJhYmxlLm5leHQpOworICAgIHRyeSB7CisgICAgICAgIGZvciAo
XyBvZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcm9ycigpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsK
KyAgICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVy
LWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdl
dHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwODc4ODM1OGU0ZWQzMDYxMmFj
YzZmMmVmM2EzMGQ4ZDU2NjY3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90
aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjcg
QEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAg
IGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAg
IG5leHQoKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBkb25lOiBmYWxzZSwKKyAgICAgICAg
Z2V0IHZhbHVlKCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAor
ICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFibGUpIHsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAg
ICAgIH0KKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAg
ICAgICAgIHRocm93IGU7CisgICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396510</attachid>
            <date>2020-04-15 00:34:36 -0700</date>
            <delta_ts>2020-04-15 00:53:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-175454-20200415003435.patch</filename>
            <type>text/plain</type>
            <size>281564</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4zOTZmM2MxMTAwNjMzZTlh
MTlhOGY2NDNiMzY4ZmQwYjNhOTliZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MzMgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24g
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBidWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJh
eUl0ZXJhdG9yTmV4dEhlbHBlcik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZUlEKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2
YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRp
b25Gb3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25XaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmguCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
IChKU0M6OmlzU3VidHlwZVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25D
b250YWlucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgIChK
U0M6OlN1cGVyU2FtcGxlclNjb3BlOjpyZWxlYXNlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
T3Blbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y05leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6Zm9yQWxsVmFsdWVzKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6Om51bWJlck9mVG1wcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6dG1wKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpqc0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6d2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNG
R1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5o
OgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om51bWJl
ck9mVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpvcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnZhcmlhYmxlQXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6Okxh
enlKU1ZhbHVlOjpzcGVjdWxhdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
bGlkYXRlLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Y2xvb3BTdGFjayk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjaGVja2VkUmV0dXJu
KToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q2FsbFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrcG9pbnRSZWFj
aGVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZv
cm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNs
b3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X2R1bXBfdmFsdWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpvcjgpOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JOZXh0SGVscGVyKToKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2Vy
dmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
Ojp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
UHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6
CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFycmF5
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAgICAg
ICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVG
b3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNhbGxl
ZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAg
ICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAoSlND
OjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2Fs
bFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRC
eVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCYXNl
SW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
OjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6
YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWRl
MTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6
CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAgICAg
KiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVh
c2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9z
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAg
ICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXRU
YWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWls
QWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpB
dFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxB
YnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3
ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1hdGNo
aW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxv
Y2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFy
aWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2VlcE9w
ZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6
amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yQWxs
S2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxp
emUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Js
b2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgor
ICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlKU1Zh
bHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNv
bnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdlbmVy
YXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAq
IGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjbG9vcFN0YWNrKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpjYWxsZWVGcmFt
ZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRl
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgIChKU0M6
OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6
OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNp
Yy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
anM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JOZXh0SGVscGVyKToKKyAg
ICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9i
c2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1w
bCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAg
ICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNh
bGxlZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToK
KyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAo
SlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9H
ZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxM
SW50KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0
aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlv
bjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3
aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAg
ICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6
CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRl
Y29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJl
bGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JD
bG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAg
ICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRU
YWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRh
aWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
Ojp3ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFk
ZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1h
dGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjph
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
bGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
VmFyaWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFy
Z3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
b25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2Vl
cE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25Q
aGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9y
QWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFz
aWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNp
Y0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2Up
OgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6
OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlK
U1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBl
IGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdl
bmVyYXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAg
ICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjbG9vcFN0YWNrKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpjYWxsZWVG
cmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9p
dGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y2hlY2twb2lu
dFJlYWNoZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6
cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6c2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQpOgorICAgICAgICAoSlNDOjpMTEludDo6
bGxpbnRfZHVtcF92YWx1ZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVh
c20vdHJhbnNmb3JtLnJiOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUzMik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4
dF90cnlfZmFzdF93aWRlMzIpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjppbnRlcmF0
aW9uS2luZEZvckludHJpbnNpYyk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlND
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJsZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAyMDIwLTA0LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogYWRkIGEg
U3RlcCBuZXh0IHRoYXQgc3RlcHMgYnkgZXhwcmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlMDM5NGI3YmU1YjViYjAx
OGI0ZWZiY2M5ODVmNWI3OGRhMjI2ODZkLi5hYWEwMDFkYTg1MjY5YjY0MjYxMWE2YzQzZGQ2OTRj
ZTA1YWY0MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE1ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBp
dGVyYXRpb24gZm9yIGtub3duIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oOgorCiAy
MDIwLTA0LTE0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRv
cHQgaW50ZXJmYWNlIEFWQXVkaW9Sb3V0aW5nQXJiaXRlciBmb3IgTWFjCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25m
aWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUu
eGNjb25maWcKaW5kZXggNTJiNDZlY2M5ZTI4OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4u
NWE5YTBiNDQ0MTEwNzIzZDczOWEzMjUwMjg1ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZwpAQCAtNDAsOCArNDAsOCBAQCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltz
ZGs9bWFjb3N4Kl0gPSAtV2wsLW9yZGVyX2ZpbGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdD
Q19QUkVGSVhfSEVBREVSID0gSmF2YVNjcmlwdENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BS
SVZBVEVfRVhURVJOID0gWUVTOwotT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVt
LWhlYWRlci1wcmVmaXg9dW5pY29kZS87Ci1PVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJp
dGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChp
bmhlcml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNv
ZGUvOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9y
aXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhT
ID0gIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIg
JChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElO
U1RBTExfUEFUSCA9ICQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUwMTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4
MWNjMjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIy
MUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyog
SlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsKIAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8q
IFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmgg
Ki87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNE
ODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5
NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVBy
b2ZpbGVGb3IuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4
NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFE
REJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3
NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3
Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYs
OSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlE
IC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgx
RUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUz
RDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVz
ZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVz
ZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAw
MEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7
IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNENDQ0REQxREFGMDlBMDAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUu
Y3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUw
RTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJ
CQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgg
Ki8sCiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpc0lubGluZXMuaCAqLywKKwkJCQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNv
ZGVQcm9maWxlRm9yLmggKi8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVj
b2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZv
LmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8s
CkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJ
bnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8q
IEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjND
MDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5
MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIy
RUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3
IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdG
MSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVj
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5
dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJ
MEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0u
aCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRp
b25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyog
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcx
NkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDEx
M0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2Jm
NWJhNWViZWYwZWM4Li4xNTM5N2U4YjdmNDhhODRmYjI3ZjExZDJmMTM3MWUwZTJhMzAxY2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaApAQCAtNjg2LDYgKzY4NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3Rl
ZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dp
Y2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0u
bV92YWx1ZSk7CisgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAg
ICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9naWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9
CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBvcjY0KGRlc3QsIHNyYywgZGVzdCk7CkBAIC0xNjAzLDcgKzE2MTcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2Us
IG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJ
RCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNv
bnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CkBAIC0x
NjE4LDcgKzE2MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9y
ZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVz
dGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3Rl
ZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBp
ZiAoIWltbTgubV92YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDhjNjk3OWJiOWIyZmRlYjA0Y2Ew
MjZlNzY2ZDIwOGI3M2EwNjNmMmUuLjJhMWRkZWRlZTM2ZGJlM2NkZTU3MmY0ODYwNWE0NjRjODBi
NmU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6b3IxNjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4OwogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmxvYWQzMjsKQEAgLTk2LDYgKzk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgb3IxNihpbW0sIEFk
ZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVk
SW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAg
ICBvcjgoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9p
ZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5qcwppbmRleCA5OWE4YzE5MjNmMjVlNDQxMWQ2YjRmZjdlN2E1
OWIwNTkyMzhkODNlLi45NGIzN2ZkYTFkMWNlNmQ3MGE3OTFlN2JhNjFlZjI2M2Q1OWE1M2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlJdGVy
YXRvclByb3RvdHlwZS5qcwpAQCAtNDYsMjEgKzQ2LDE5IEBAIGZ1bmN0aW9uIGFycmF5SXRlcmF0
b3JOZXh0SGVscGVyKGFycmF5LCBraW5kKQogICAgIHZhciB2YWx1ZTsKIAogICAgIHZhciBpbmRl
eCA9IEBnZXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAYXJyYXlJdGVyYXRvckZp
ZWxkSW5kZXgpOwotICAgIGlmIChpbmRleCAhPT0gLTEpIHsKLSAgICAgICAgdmFyIGxlbmd0aCA9
IGFycmF5Lmxlbmd0aCA+Pj4gMDsKLSAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBAcHV0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQodGhpcywgQGFycmF5SXRlcmF0
b3JGaWVsZEluZGV4LCBpbmRleCArIDEpOwotICAgICAgICAgICAgZG9uZSA9IGZhbHNlOwotICAg
ICAgICAgICAgaWYgKGtpbmQgPT09IEBpdGVyYXRpb25LaW5kS2V5KQotICAgICAgICAgICAgICAg
IHZhbHVlID0gaW5kZXg7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YWx1
ZSA9IGFycmF5W2luZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlv
bktpbmRFbnRyaWVzKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFtpbmRleCwgdmFsdWVd
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIEBwdXRBcnJheUl0
ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAYXJyYXlJdGVyYXRvckZpZWxkSW5kZXgsIC0xKTsK
LSAgICB9CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICBpZiAoaW5k
ZXggPCBsZW5ndGgpIHsKKyAgICAgICAgQHB1dEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRo
aXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCwgaW5kZXggKyAxKTsKKyAgICAgICAgZG9uZSA9
IGZhbHNlOworICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlvbktpbmRLZXkpCisgICAgICAg
ICAgICB2YWx1ZSA9IGluZGV4OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlID0g
YXJyYXlbaW5kZXhdOworICAgICAgICAgICAgaWYgKGtpbmQgPT09IEBpdGVyYXRpb25LaW5kRW50
cmllcykKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFtpbmRleCwgdmFsdWVdOworICAgICAgICB9
CisgICAgfSBlbHNlCisgICAgICAgIEBwdXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlz
LCBAYXJyYXlJdGVyYXRvckZpZWxkSW5kZXgsIEBNQVhfU0FGRV9JTlRFR0VSKTsKIAogICAgIHJl
dHVybiB7IHZhbHVlLCBkb25lIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4YzBlOGRl
MjM3YjIwMS4uOTQyNjU3YzYyZjA3NDljYTA1YzRlZWU0ZDY3Yjk1ZmU2NDU1ZDllNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApAQCAtMjA3LDEw
ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPdXRPZkJvdW5kcygpIHsgbV9vdXRPZkJv
dW5kcyA9IHRydWU7IH0KICAgICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJu
ICZtX291dE9mQm91bmRzOyB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0g
c3RydWN0dXJlLT5pZCgpOwotICAgIH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChTdHJ1
Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJ
RDsgfQorICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7IH0KIAogICAgIHZvaWQgY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9j
ayopOwogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMWY1
NjY5NGNlNzAwZmRlYmUxZmRjYmQwNDRmMmE4N2QwODhmN2VhMi4uNTg1Y2M1OGMzN2U4ODM4Njlh
NGU4Y2FiYzYwZmJkN2U0YjU2MmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVzIFsKICAgICA6R2V0
QnlWYWxIaXN0b3J5LAogICAgIDpHZXRQdXRJbmZvLAogICAgIDpJbmRleGluZ1R5cGUsCisgICAg
Okl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKICAgICA6SlNDZWxsLAogICAgIDpKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCwKICAgICA6SlNHbG9iYWxPYmplY3QsCkBAIC0xMTYyLDYgKzExNjMsNjQg
QEAgb3AgOmdldF9yZXN0X2xlbmd0aCwKICAgICAgICAgbnVtUGFyYW1ldGVyc1RvU2tpcDogdW5z
aWduZWQsCiAgICAgfQogCisjIFNlbWFudGljYWxseSwgdGhpcyBpcyBpdGVyYXRvciA9IHN5bWJv
bEl0ZXJhdG9yKGl0ZXJhYmxlKTsgbmV4dE9ySW5kZXggPSBpdGVyYXRvci5uZXh0OworIyBGb3Ig
YnVpbHRpbiBpdGVyYXRvcnMsIGhvd2V2ZXIsIHRoaXMgaGFzIHNwZWNpYWwgYmVoYXZpb3Igd2hl
cmUgaXRlcmF0b3IgYmVjb21lcyB0aGUgZW1wdHkgdmFsdWUKKyMgYW5kIG5leHRPckluZGV4IGlz
IHRoZSAiaW5kZXgiIG9mIHRoZSBpdGVyYXRvciAoaW50IGZvciBhcnJheXMvc3RyaW5ncyBhbmQg
YnVja2V0IGZvciBtYXAvc2V0KS4KK29wIDppdGVyYXRvcl9vcGVuLAorICAgIGFyZ3M6IHsKKyAg
ICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBzeW1ib2xJdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAg
ICBpdGVyYWJsZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWdu
ZWQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTog
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKKyAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAg
aXRlcmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0
QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgaXRlcmF0b3JPYmplY3Q6IEpTVmFsdWUsCisgICAg
fSwKKyAgICBjaGVja3BvaW50czogeworICAgICAgICBzeW1ib2xDYWxsOiBuaWwsCisgICAgICAg
IGdldE5leHQ6IG5pbCwKKyAgICB9CisKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIHRtcCA9IG5l
eHRPckluZGV4LmNhbGwoaXRlcmF0b3IpOyBkb25lID0gdG1wLmRvbmU7IHZhbHVlID0gZG9uZSA/
IHVuZGVmaW5lZCA6IHRtcC52YWx1ZTsKK29wIDppdGVyYXRvcl9uZXh0LAorICAgIGFyZ3M6IHsK
KyAgICAgICAgZG9uZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBpdGVyYWJsZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7Cisg
ICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAg
IGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExM
SW50Q2FsbExpbmtJbmZvLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBkb25lTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAg
ICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZU1vZGVNZXRhZGF0YTog
R2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgfSwKKyAgICB0bXBzOiB7CisgICAgICAgIG5leHRSZXN1bHQ6IEpTVmFsdWUsCisgICAg
ICAgIGlzRG9uZTogSlNWYWx1ZSwKKyAgICAgICAgdmFsdWU6IEpTVmFsdWUsCisgICAgfSwKKyAg
ICBjaGVja3BvaW50czogeworICAgICAgICBjb21wdXRlTmV4dDogbmlsLAorICAgICAgICBnZXRE
b25lOiBuaWwsCisgICAgICAgIGdldFZhbHVlOiBuaWwsCisgICAgfQorCiBvcCA6eWllbGQsCiAg
ICAgYXJnczogewogICAgICAgICBnZW5lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTEyOTAs
NiArMTM0OSw4IEBAIG9wIDpvcF9nZXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfZ2V0
X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24KIG9wIDpvcF9wdXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9u
CiBvcCA6b3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9vcGVu
X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uCiBv
cCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZQogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9f
dGxzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggYzZlZmUwZDhmZjZjNzk4OTZhZmQwMGUy
MGNjNDI3NzlkM2E0YjBjNy4uZDU4N2VlMDNmMjZkOGRmYjk0ZDA4ZDQ0MjA0MDhjYWM1MGEzOGVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTIzMSw2ICsyMzEsMTMgQEAgQml0bWFwPG1h
eE51bUNoZWNrcG9pbnRUbXBzPiB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoY29uc3QgQ29kZUJs
b2NrJiBjb2RlQmxvY2sKICAgICAgICAgICAgIHJlc3VsdC5zZXQoT3BDYWxsVmFyYXJnczo6YXJn
Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICByZXN1bHQuc2V0KE9wSXRlcmF0
b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NjA0YjVm
MDliN2E2YzQ3YjNhMTI3MzExYTBiZjg3MmVmMjdmODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKQEAgLTAsMCAr
MSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgorI2luY2x1ZGUgIkJ5dGVj
b2RlU3RydWN0cy5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworLy8gVE9ETzogTWFrZSB0aGlzIG9wdGlvbmFsLiBGaWd1cmUgb3V0IGhhc01lbWJlci4K
K3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBy
ZXR1cm4gJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlOworCisgICAgLy8g
SW5zZXJ0IHBlciBtZXRhZGF0YSBvdmVycmlkZXMgaGVyZSB3aGVuIHdlIG5lZWQgdGhlbS4KKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0
YT4KK2Jvb2wgaGFzQXJyYXlQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1
bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5UHJvZmlsZUZvcklt
cGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5
dGVjb2RlTWV0YWRhdGE+CitBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZUZvcihCeXRlY29kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VS
VChoYXNBcnJheVByb2ZpbGVGb3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJl
dHVybiAqYXJyYXlQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30K
KworLy8gVE9ETzogTWFrZSB0aGlzIG9wdGlvbmFsLiBGaWd1cmUgb3V0IGhhc01lbWJlci4KK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1ZVByb2ZpbGUqIHZhbHVlUHJv
ZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9p
bnRJbmRleCkKK3sKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlE
ID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgp
IHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRh
ZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0
TmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRQcm9maWxlOworICAgICAgICBkZWZhdWx0OiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICB9IGVsc2UgaWYg
Y29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0
KSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJ
dGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFJlc3VsdFBy
b2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiAmbWV0
YWRhdGEubV9kb25lUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFs
dWU6IHJldHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CisgICAgICAgIGRlZmF1bHQ6IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgCisgICAg
ICAgIHJldHVybiAmbWV0YWRhdGEubV9wcm9maWxlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
eXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNWYWx1ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0
YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gdmFs
dWVQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxl
Rm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgp
Cit7CisgICAgQVNTRVJUKGhhc1ZhbHVlUHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludElu
ZGV4KSk7CisgICAgcmV0dXJuICp2YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3Bv
aW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK09wZXJhbmQgZGVz
dGluYXRpb25Gb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50
SW5kZXgsIEpJVFR5cGUgdHlwZSA9IEpJVFR5cGU6Ok5vbmUpCit7CisgICAgVU5VU0VEX1BBUkFN
KGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQg
PT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkg
eworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gYnl0ZWNv
ZGUubV9pdGVyYXRvcjsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0
dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZSBp
ZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7Cisg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRv
ck5leHQ6OmNvbXB1dGVOZXh0OiB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBKSVRUeXBlOjpE
RkdKSVQgfHwgdHlwZSA9PSBKSVRUeXBlOjpERkdKSVQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm4gYnl0ZWNvZGUubV92YWx1ZTsgLy8gV2UgcmV1c2UgdmFsdWUgYXMgYSB0ZW1wIGJlY2F1
c2UgaXRzIGVpdGhlciBub3QgdXNlZCBvciB3cml0dGVuIGFzIHRoZSB0ZW1wIG9iamVjdCBkaWVz
LgorICAgICAgICB9CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVy
biBieXRlY29kZS5tX2RvbmU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVl
OiByZXR1cm4gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0g
ZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9kc3Q7Cit9CisKKy8vIENhbGwtbGlrZSBv
cGNvZGUgbG9jYXRpb25zCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorVmlydHVhbFJl
Z2lzdGVyIGNhbGxlZUZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBp
ZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7Cisg
ICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENh
bGwpOworICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcjsKKyAgICB9IGVs
c2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkg
eworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21w
dXRlTmV4dCk7CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgfSBlbHNlCisg
ICAgICAgIHJldHVybiBieXRlY29kZS5tX2NhbGxlZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGU+Cit1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0Zvcihjb25zdCBC
eXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVT
RURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpv
cGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50
SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gMTsK
KyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0
b3JfbmV4dCkgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JO
ZXh0Ojpjb21wdXRlTmV4dCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZQorICAgICAg
ICByZXR1cm4gYnl0ZWNvZGUubV9hcmdjOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29k
ZT4KK3B0cmRpZmZfdCBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChjb25zdCBCeXRlY29k
ZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJ
RCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXgg
PT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhYmxlLm9mZnNldCgpOwor
ICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRv
cl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5l
eHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUlu
UmVnaXN0ZXJzIC0gYnl0ZWNvZGUubV9pdGVyYXRvci5vZmZzZXQoKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fYXJndjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0
ZWNvZGVNZXRhZGF0YT4KK0xMSW50Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm9Gb3IoQnl0ZWNv
ZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBV
TlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICByZXR1cm4gbWV0YWRhdGEubV9jYWxs
TGlua0luZm87Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4
MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4uYTVhNTA3ZWQyZTkyZGNlZTNmYzE1MWJkZWIyYTYy
NzI3M2MyMjc1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCkBAIC0yNTksNiArMjU5LDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0
cnUKIAogICAgIFVTRVMoT3BZaWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKIAorICAgIFVTRVMo
T3BJdGVyYXRvck9wZW4sIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZSkKKyAgICBVU0VTKE9wSXRl
cmF0b3JOZXh0LCBpdGVyYXRvciwgbmV4dCwgaXRlcmFibGUpCisKICAgICBjYXNlIG9wX25ld19h
cnJheV93aXRoX3NwcmVhZDoKICAgICAgICAgaGFuZGxlTmV3QXJyYXlMaWtlKGluc3RydWN0aW9u
LT5hczxPcE5ld0FycmF5V2l0aFNwcmVhZD4oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw2
ICs0ODksOSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQg
bnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogCiAgICAgREVGUyhPcENhdGNoLCBl
eGNlcHRpb24sIHRocm93blZhbHVlKQogCisgICAgREVGUyhPcEl0ZXJhdG9yT3BlbiwgaXRlcmF0
b3IsIG5leHQpCisgICAgREVGUyhPcEl0ZXJhdG9yTmV4dCwgZG9uZSwgdmFsdWUpCisKICAgICBj
YXNlIG9wX2VudGVyOiB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVZhcnM7IGktLTsp
CiAgICAgICAgICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDI5
ZjYwZTk0MjgyMjU5MTk0Nzc2ODU1N2VhODdhNjU3ZjIzYTYwYi4uOTE1Y2M2MzFkYmQyODQ1ZWU5
MTM4ZTEzOWViNjllOTYzNDE3NTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTQwLDE4ICs0MCwzNCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKE9w
Y29kZUlEIG9wY29kZUlEKQogewotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29k
ZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBv
cF90YWlsX2NhbGxfdmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50czoKKyAgICAgICAgcmV0dXJuIFRhaWxDYWxsVmFyYXJnczsgICAgICAgIAorCisgICAgY2Fz
ZSBvcF9jYWxsOgorICAgIGNhc2Ugb3BfY2FsbF9ldmFsOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jf
b3BlbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgICAgIHJldHVybiBDYWxsOwot
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2NhbGxf
dmFyYXJnczoKICAgICAgICAgcmV0dXJuIENhbGxWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9
PSBvcF9jb25zdHJ1Y3QpCisKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICAgICAgcmV0dXJu
IENvbnN0cnVjdDsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MpCisK
KyAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ29uc3RydWN0
VmFyYXJnczsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKQorCisgICAgY2FzZSBv
cF90YWlsX2NhbGw6CiAgICAgICAgIHJldHVybiBUYWlsQ2FsbDsKLSAgICBBU1NFUlQob3Bjb2Rl
SUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2Zv
cndhcmRfYXJndW1lbnRzKTsKLSAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOworCisgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIENhbGw7CiB9CiAKIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZv
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCmluZGV4IGYxM2QxNzM0YTAyYzU4YTMyMTc1OTI1ZDI4ODU1YTJhMjYwMDE4MTguLmI5MGY4
MjQ2ZmM2MTExMzc4YWViZWY5MDI1NmYxMTVlZjE3ZTNiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtODEsNiArODEsMTMg
QEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUIKICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAg
ICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcFRhaWxDYWxsPigpLm1ldGFkYXRh
KHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0lu
Zm87CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAg
Y2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0
YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0OTIw
YjZhODc4MTU3ZTYxNjBiNjUzZTdhNGU3MzA0YjIuLmE0YTdjNWFhYmYwNTZiMzgzMTQ0ODQxOGY5
MWRhODg1NGY3YmE3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIK
ICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUg
IkJ5dGVjb2RlU3RydWN0cy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVk
ZSAiQ2FsbExpbmtTdGF0dXMuaCIKQEAgLTk3LDYgKzk4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVk
U3RyaW5nSW1wbC5oPgogCisKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogI2luY2x1ZGUgIlJlZ2lz
dGVyQXRPZmZzZXRMaXN0LmgiCiAjZW5kaWYKQEAgLTU4Myw2ICs1ODUsMjAgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcENhdGNoKQogICAgICAgICBMSU5LKE9wUHJv
ZmlsZUNvbnRyb2xGbG93KQogCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAg
ICAgICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcEl0ZXJhdG9yT3BlbikKKworICAgICAgICAg
ICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAg
ICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BJdGVyYXRvck5leHQpCisKKyAgICAgICAg
ICAgIG1fbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgKz0gMzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CiAg
ICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wUmVzb2x2ZVNjb3BlKQogCkBAIC0xMjI0
LDYgKzEyNDAsMzMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMo
KQogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NjQxOAogICAgICAgICAvLyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBv
cF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5r
IHRpbWUgc2NvcGUgcmVzb2x1dGlvbi4KIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9w
SXRlcmF0b3JPcGVuPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBpZiAobWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIGl0ZXJhdG9yIG9wZW4gTExJbnQgcHJvcGVydHkg
YWNjZXNzLlxuIik7CisgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEpOworICAgICAgICB9KTsKKworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJ
dGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8gY2xl
YXJJZk5lZWRlZCA9IFsmXSAoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZh
dWx0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgU3RydWN0
dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJl
SUQ7CisgICAgICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFy
a2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgaXRlcmF0b3IgbmV4dCBMTEludCBwcm9wZXJ0
eSBhY2Nlc3MuXG4iKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobW9kZU1ldGFkYXRh
KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEu
bV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEu
bV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIH0pOworCiAgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBp
ZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjMxLDcgKzEyNzQsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBpZiAoIW9sZFN0
cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG9sZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJv
cGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhKTsKKyAg
ICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CiAgICAgICAg
IH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkRGlyZWN0PihbJl0g
KGF1dG8mIG1ldGFkYXRhKSB7CkBAIC0xMzI2LDkgKzEzNjksMjcgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICBhdXRvIGNsZWFyID0gWyZdICgp
IHsKICAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoc3Rk
OjpnZXQ8MT4ocGFpci5rZXkpKTsKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpOwotICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBvcF9nZXRfYnlf
aWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAgICBjYXNlIG9w
X2dldF9ieV9pZDogewogICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAg
ICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFy
TExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0
aGlzKSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWQ+KCkubWV0YWRhdGEodGhpcykubV9tb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVu
OiB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2xlYXJpbmcgTExJbnQgaXRlcmF0b3Igb3BlbiBwcm9wZXJ0eSBhY2Nlc3MuIik7CisgICAgICAg
ICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpj
bGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5t
ZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBM
TEludCBpdGVyYXRvciBuZXh0IHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gY2xlYXIgYm90aCBjYWNoZXMgaGVyZSBi
dXQgaXQncyBraW5kYSBhbm5veWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZSB0aGlzIGlzIHJl
ZmVycmluZyB0by4uLgorICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rp
b24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpOworICAgICAgICAgICAgICAg
IExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTElu
dEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAg
ICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJM
TEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfTsKQEAgLTMwNDEsNiArMzEwMiwxMSBAQCBWYWx1ZVByb2ZpbGUqIENvZGVC
bG9jazo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5
dGVjbwogCiAjdW5kZWYgQ0FTRQogCisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAg
ICByZXR1cm4gJnZhbHVlUHJvZmlsZUZvcihpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+
KCkubWV0YWRhdGEodGhpcyksIGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKKyAgICBjYXNl
IG9wX2l0ZXJhdG9yX25leHQ6CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCkpOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5l
cy5oCmluZGV4IDIyZTc2YjE4NWViOWViYTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEuLjUzNjIy
ODkwN2U4NGM0OTMzY2QyOTNkZjM1MDE3YmY3OWRlNzRmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzksMTIgKzM5LDI0
IEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1
bmMpCiAKICAgICBpZiAobV9tZXRhZGF0YSkgewogI2RlZmluZSBWSVNJVChfX29wKSBcCi0gICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0
YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZh
bHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShW
SVNJVCkKIAogI3VuZGVmIFZJU0lUCi0gICAgfQorCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVh
Y2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCisgICAgICAgICAgICBm
dW5jKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5j
KG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1l
dGFkYXRhLm1fbmV4dFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewor
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fZG9uZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGZ1bmMobWV0YWRhdGEubV92YWx1ZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgfSk7Cisg
ICAgfSAgIAogCiB9CiAKQEAgLTY4LDYgKzgwLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiAKICN1bmRlZiBWSVNJVDEKICN1bmRl
ZiBWSVNJVDIKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0Pihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmFi
bGVQcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRleCA5M2YyMjcwYWNhNjUyYmYxOWMy
Yzk1NTkxZWRhZTUxNjc3YTI4OGMyLi4yODJjZjhmNDI3YzFmYmVhYjI5NmEzNTgzYjA3OTk0MWRh
MTBlZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlT
dGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAKQEAgLTg2LDYgKzg2LDM1IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJbmRlCiAgICAgY2Fz
ZSBvcF9nZXRfYnlfdmFsOgogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwogCisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIEFTU0VS
VChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dCk7
CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVu
PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgbm90IGp1c3QgYmFpbCBpZiB3ZSBzZWUgYSBnZXRfYnlfaWRfcHJvdG9fbG9hZC4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAzOQorICAg
ICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVm
YXVsdCkKKyAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxz
ZSk7CisgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVs
dE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1l
cy0+bmV4dDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBvcF9pdGVyYXRvcl9u
ZXh0OiB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spOworICAgICAgICBpZiAoYnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkgPT0gT3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAg
ICAgIGlmIChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6
RGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOworICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZGVudGlmaWVy
ID0gJnZtLnByb3BlcnR5TmFtZXMtPmRvbmU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpE
ZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9u
LCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fdmFsdWVNb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZGVudGlmaWVy
ID0gJnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IDA4NWFlOGQxOTk3
NmI4ODZmMDAxOWY4NWZhNjdiMDJiZTE0Y2RhNWUuLjNkNzBjZDU0M2VjZmFlOTAyMjUwMjk2MDFh
MGQ0MDVlYzY3MWIyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgSlNP
cGNvZGVUcmFpdHMgewogICAgIHVzaW5nIE9wY29kZUlEID0gOjpKU0M6Ok9wY29kZUlEOworICAg
IHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2lu
dHMgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfQ0hFQ0tQ
T0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNX
aXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX0JZVEVDT0RFX1dJ
VEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hl
Y2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gb3Bfd2lkZTE2OwogICAgIHN0YXRpYyBjb25zdGV4
cHIgT3Bjb2RlSUQgd2lkZTMyID0gb3Bfd2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSA6OkpTQzo6b3Bjb2RlTGVuZ3RoczsKQEAgLTQx
LDcgKzQzLDkgQEAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKIAogc3RydWN0IFdhc21PcGNvZGVU
cmFpdHMgewogICAgIHVzaW5nIE9wY29kZUlEID0gV2FzbU9wY29kZUlEOworICAgIHN0YXRpYyBj
b25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPSBzdGF0
aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX1dBU01fV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9
IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfV0FTTV9XSVRIX01FVEFEQVRBKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJl
ck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlE
IHdpZGUxNiA9IHdhc21fd2lkZTE2OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lk
ZTMyID0gd2FzbV93aWRlMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCog
b3Bjb2RlTGVuZ3RocyA9IHdhc21PcGNvZGVMZW5ndGhzOwpAQCAtOTgsMTIgKzEwMiwyNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRz
PigpID09IFRyYWl0czo6d2lkZTMyOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRy
YWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIE9wY29kZVNpemUgd2lkdGgoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKKyAgICAgICAgICAgIHJldHVybiBP
cGNvZGVTaXplOjpXaWRlMzI7CisgICAgICAgIHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkgPyBP
cGNvZGVTaXplOjpXaWRlMTYgOiBPcGNvZGVTaXplOjpOYXJyb3c7CisgICAgfQorCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgYm9vbCBoYXNNZXRh
ZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwg
VHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YTsKICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBib29sIGhhc0NoZWNr
cG9pbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkg
PCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzOworICAgIH0KKwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGludCBzaXpl
U2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsKQEAgLTEzNyw2ICsxNTUsMTMgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHRoaXMpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRo
LCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBUIGFzS25vd25XaWR0aCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAg
ICByZXR1cm4gVChyZWludGVycHJldF9jYXN0PGNvbnN0IHR5cGVuYW1lIFR5cGVCeVNpemU8d2lk
dGg+Ojp1bnNpZ25lZFR5cGUqPih0aGlzICsgKHdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdyA/
IDEgOiAyKSkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0
cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIFQqIGNhc3QoKQogICAgIHsKQEAgLTE2MSw3ICsxODYs
NyBAQCBwdWJsaWM6CiAgICAgewogCiAgICAgICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+KCkp
OwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6
OldpZGUxNj4qPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIDEpOworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qPih0
aGlzICsgMSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CkBAIC0xNjksMTQgKzE5NCwxNiBAQCBwdWJsaWM6CiAgICAgewogCiAgICAgICAg
IEFTU0VSVChpc1dpZGUzMjxUcmFpdHM+KCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUzMj4qPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90Pih0aGlzKSArIDEpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJ
bXBsPE9wY29kZVNpemU6OldpZGUzMj4qPih0aGlzICsgMSk7CiAgICAgfQogfTsKIAogc3RydWN0
IEluc3RydWN0aW9uIDogcHVibGljIEJhc2VJbnN0cnVjdGlvbjxPcGNvZGVJRD4gewogfTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEluc3RydWN0aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlz
IHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwogCiBzdHJ1Y3QgV2FzbUluc3RhbmNlIDogcHVibGlj
IEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihXYXNtSW5zdGFuY2UpID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0
ZSBtYXRoIik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjky
ZDY5MTkzMWM2Yzc5NDhlNTU3ZTRmNTY5MjNhZTM0OTBmZWI5ZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBJdGVy
YXRpb25Nb2RlIDogdWludDhfdCB7CisgICAgR2VuZXJpYyA9IDEgPDwgMCwKKyAgICBGYXN0QXJy
YXkgPSAxIDw8IDEsCit9OworCitjb25zdGV4cHIgdWludDhfdCBudW1iZXJPZkl0ZXJhdGlvbk1v
ZGVzID0gMjsKKworT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lU
SF9JTlRFUkdSQUxTKEl0ZXJhdGlvbk1vZGUpOworCitzdHJ1Y3QgSXRlcmF0aW9uTW9kZU1ldGFk
YXRhIHsKKyAgICB1aW50OF90IHNlZW5Nb2RlcyB7IDAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihkZWNsdHlwZShzZWVuTW9kZXMpKSA9PSBzaXplb2YoSXRlcmF0aW9uTW9kZSkpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmluZGV4IDJkMTQzYjljZjY3NDMwNWQ0MGM5MWVi
MGFlMzUxMzMxMjU2OTQ0MWYuLmJiZTFmNjdmZmJlZmU4ZThiYjEzNjdlYjZjN2VkNjdjYmFhOGFi
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuY3BwCkBAIC02MCwxNCArNjAsMzEgQEAgdm9pZCBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEYK
ICAgICB9CiAKICAgICBhdXRvJiBpbnN0cnVjdGlvbiA9IG1fb3duZXItPmluc3RydWN0aW9ucygp
LmF0KG1fYnl0ZWNvZGVPZmZzZXQuZ2V0KCkpOwotICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUo
aW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKSk7Cisg
ICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgeworICAgIGNhc2Ugb3BfZ2V0X2J5
X2lkOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWQ+KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkubV9tb2RlTWV0YWRhdGEpOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgY2xlYXJMTElu
dEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEo
bV9vd25lci5nZXQoKSkubV9tb2RlTWV0YWRhdGEpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0
aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKTsKKyAgICAg
ICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOwor
ICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRh
dGEpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKLXZv
aWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxM
SW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6TWV0YWRhdGEmIG1ldGFkYXRhKQordm9pZCBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRC
eUlkQ2FjaGUoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgLy8gS2VlcCBo
aXRDb3VudEZvckxMSW50Q2FjaGluZyB2YWx1ZS4KLSAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKKyAgICBtZXRhZGF0YS5jbGVhclRv
RGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApp
bmRleCAyMjBmZmYzZTNiZjU0MzQxZTk2MWM4MmRmOGM0ZThjOTAwMDczNGJlLi4xZDU5NTdlZmY4
MTA5MmExZGFiZGVlNTAyNWNhYzVlNmYzODY3ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgaW5zdGFsbChWTSYpOwogCi0gICAgc3RhdGljIHZvaWQgY2xlYXJM
TEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJik7CisgICAgc3RhdGljIHZvaWQg
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFkYXRhJik7CiAKICAgICBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmluZGV4IDE4NTFiNjNjN2Nh
NmFlZjJmYjM2YmYyZjg3ZTkyYTE5ZTBkNDBjMTguLmFhODg1OWFkZDYyODYwZmZkYWRiNGQyMjI4
N2MzNGIwN2NlNWIzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgK
QEAgLTE0OCw2ICsxNDgsOSBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9y
TWF4T3Bjb2RlTGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIobQogICAgIG1hY3JvKE9w
VGFpbENhbGwpIFwKICAgICBtYWNybyhPcENhbGxFdmFsKSBcCiAgICAgbWFjcm8oT3BDb25zdHJ1
Y3QpIFwKKyAgICBtYWNybyhPcEl0ZXJhdG9yT3BlbikgXAorICAgIG1hY3JvKE9wSXRlcmF0b3JO
ZXh0KSBcCisKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggNWRi
MThjNjQ4MmQ3NmQ0ZmE3YjQ2ZTk4YjlmOTcwMGRjMzg2MzBmNC4uOTQ2NThiMDk2YmYxOTNjODdj
ZmQ3MWE5ZjViZGUxNWY2MTMzMmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTEyMCw2ICsxMjAsMTYgQEAgaW5saW5lIGJvb2wg
aXNBbnlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
aW5saW5lIGJvb2wgaXNTdWJ0eXBlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNw
ZWN1bGF0ZWRUeXBlIGNhdGVnb3J5KQoreworICAgIHJldHVybiAhKHZhbHVlICYgfmNhdGVnb3J5
KSAmJiB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgc3BlY3VsYXRpb25Db250YWlucyhTcGVjdWxh
dGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7CisgICAgcmV0dXJuICEh
KHZhbHVlICYgY2F0ZWdvcnkpICYmIHZhbHVlOworfQorCiBpbmxpbmUgYm9vbCBpc0NlbGxTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gISEodmFsdWUgJiBT
cGVjQ2VsbCkgJiYgISh2YWx1ZSAmIH5TcGVjQ2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKaW5kZXggOTYxMGRjZTVjZGJjM2VjMDljZTMzYjFk
NmJjYzRiM2ZmOGE2YzNjOC4uZTliZjk1MzFmN2JhNTk1NzMxMTBlMzFhN2E0NGNkMjI4Yjc1NzEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaApA
QCAtNDgsNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgZ19zdXBlclNhbXBsZXJDb3Vu
dC0tOwogICAgIH0KIAorICAgIHZvaWQgcmVsZWFzZSgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9kb1NhbXBsZSk7CisgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKKyAgICAgICAgbV9k
b1NhbXBsZSA9IGZhbHNlOworICAgIH0KKwogcHJpdmF0ZToKICAgICBib29sIG1fZG9TYW1wbGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2M2QzNjJjYWMxOWQ0OTM5ODk0Nzc3YmVkYTdjMGFj
MmQ2MzYwNjNmLi44ZmVkZTYyYjUzMGViZDEwMWZlZGE2MWFiYWI5NDlhM2YzYjM1OWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtNDAxNiwxNCArNDAxNiwxNSBAQCBib29sIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZChjb25zdCBWYXJpYWJsZSYgdmFyaWFi
bGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0
ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
bmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBS
ZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCiB7CiAgICAgYm9vbCBpc0ZvckF3YWl0ID0g
Zm9yTG9vcE5vZGUgPyBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpIDogZmFsc2U7Ci0gICAgQVNT
RVJUKCFpc0ZvckF3YWl0IHx8IChpc0ZvckF3YWl0ICYmIGlzQXN5bmNGdW5jdGlvblBhcnNlTW9k
ZShwYXJzZU1vZGUoKSkpKTsKKyAgICBhdXRvIHNob3VsZEVtaXRBd2FpdCA9IGlzRm9yQXdhaXQg
PyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87CisgICAgQVNTRVJUKCFpc0ZvckF3YWl0
IHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkpOwogCiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHN1YmplY3QgPSBuZXdUZW1wb3JhcnkoKTsKICAgICBlbWl0Tm9kZShzdWJq
ZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9y
ID0gaXNGb3JBd2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUp
IDogZW1pdEdldEl0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihzdWJq
ZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwg
bm9kZSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAog
ICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAtNDEzMCw3ICs0MTMxLDcg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICAgICAgfQogCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0
ZXJhdG9yLmdldCgpLCBub2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdh
aXQ6Ok5vKTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgp
LCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hvdWxkRW1pdEF3YWl0
KTsKIAogICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsK
ICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVy
dHlOYW1lcygpLnZhbHVlKTsKQEAgLTQxNDMsNyArNDE0NCwxNDUgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBF
eHByZXNzaW8KICAgICAgICAgcG9wRmluYWxseUNvbnRyb2xGbG93U2NvcGUoKTsKICAgICAgICAg
aWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7CiAgICAgICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNl
cXVlbmNlIGZvciBicmVhay1lZCBjb250cm9sIGZsb3cuCi0gICAgICAgICAgICBlbWl0SXRlcmF0
b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVz
IDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2Uo
aXRlcmF0b3IuZ2V0KCksIG5vZGUsIHNob3VsZEVtaXRBd2FpdCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKK30KKworCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4
cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29w
Tm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQoreworICAgIGlmICghT3B0aW9u
czo6dXNlSXRlcmF0aW9uSW50cmluc2ljcygpIHx8IGlzMzJCaXQoKSB8fCAoZm9yTG9vcE5vZGUg
JiYgZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQoKSkpIHsKKyAgICAgICAgZW1pdEdlbmVyaWNFbnVt
ZXJhdGlvbihub2RlLCBzdWJqZWN0Tm9kZSwgY2FsbEJhY2ssIGZvckxvb3BOb2RlLCBmb3JMb29w
U3ltYm9sVGFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGl0ZXJhYmxlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5vZGUoaXRlcmFibGUu
Z2V0KCksIHN1YmplY3ROb2RlKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclN5
bWJvbCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYWJsZS5nZXQoKSwgcHJvcGVy
dHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE9y
SW5kZXggPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3Ig
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIs
IDApOworICAgIG1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUuZ2V0KCkpOworICAg
IGVtaXRJdGVyYXRvck9wZW4oaXRlcmF0b3IuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBpdGVy
YXRvclN5bWJvbC5nZXQoKSwgYXJncywgbm9kZSk7CisKKyAgICBSZWY8TGFiZWw+IGxvb3BEb25l
ID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBuZXdMYWJlbCgp
OworICAgIFJlZjxMYWJlbD4gZmluYWxseVZpYVRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAg
IFJlZjxMYWJlbD4gZmluYWxseUxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGNh
dGNoTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gZW5kQ2F0Y2hMYWJlbCA9IG5l
d0xhYmVsKCk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3Jhcnko
KTsKKyAgICBlbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAvLyBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IncyBsaWZldGltZSBtdXN0IGJlIGxvbmdlciB0aGFu
IEl0ZXJhdG9yQ2xvc2VDb250ZXh0LgorICAgIEZpbmFsbHlDb250ZXh0IGZpbmFsbHlDb250ZXh0
KCp0aGlzLCBmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgIHB1c2hGaW5hbGx5Q29udHJvbEZsb3dT
Y29wZShmaW5hbGx5Q29udGV4dCk7CisKKyAgICB7CisgICAgICAgIFJlZjxMYWJlbFNjb3BlPiBz
Y29wZSA9IG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CisKKyAgICAgICAgUmVmPExh
YmVsPiBsb29wU3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0TGFiZWwobG9vcFN0YXJ0
LmdldCgpKTsKKyAgICAgICAgZW1pdExhYmVsKCpzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Cisg
ICAgICAgIGVtaXRMb29wSGludCgpOworCisgICAgICAgIGlmIChmb3JMb29wTm9kZSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9yTG9vcE5vZGUtPmlzRm9yT2ZOb2RlKCkpOworICAg
ICAgICAgICAgcHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0aW9uKGZvckxv
b3BOb2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOworICAgICAgICAgICAgZW1pdERlYnVnSG9vayhm
b3JMb29wTm9kZS0+bGV4cHIoKSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZG9uZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBuZXh0QXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgICAgICAgICBt
b3ZlKG5leHRBcmdzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisKKyAgICAgICAg
ICAgIGVtaXRJdGVyYXRvck5leHQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGl0ZXJhYmxlLmdl
dCgpLCBuZXh0T3JJbmRleC5nZXQoKSwgbmV4dEFyZ3MsIG5vZGUpOworICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgbG9vcERvbmUuZ2V0KCkpOworICAgICAgICB9CisKKyAg
ICAgICAgZW1pdExhYmVsKHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOworICAgICAgICBUcnlEYXRhKiB0
cnlEYXRhID0gcHVzaFRyeSh0cnlTdGFydExhYmVsLmdldCgpLCBmaW5hbGx5VmlhVGhyb3dMYWJl
bC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkRmluYWxseSk7CisgICAgICAgIGNhbGxC
YWNrKCp0aGlzLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5nZXQo
KSk7CisKKyAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYWJydXB0IGNvbXBs
ZXRpb25zLgorICAgICAgICB7CisgICAgICAgICAgICAvLyBGaW5hbGx5IGJsb2NrIGZvciB0aGUg
ZW51bWVyYXRpb24uCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseVZpYVRocm93TGFiZWwu
Z2V0KCkpOworICAgICAgICAgICAgcG9wVHJ5KHRyeURhdGEsIGZpbmFsbHlWaWFUaHJvd0xhYmVs
LmdldCgpKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiBmaW5hbGx5Qm9keUxhYmVsID0gbmV3
TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0aW9u
UmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKKworICAgICAgICAgICAgZW1pdE91dE9mTGluZUZp
bmFsbHlIYW5kbGVyKGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCksIGZp
bmFsbHlDb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgdHJ5RGF0YSk7CisgICAgICAg
ICAgICBtb3ZlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRleHQu
Y29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBlbWl0SnVtcChmaW5hbGx5
Qm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlMYWJlbC5n
ZXQoKSk7CisgICAgICAgICAgICBtb3ZlRW1wdHlWYWx1ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0
ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBGaW5hbGx5IGZhbGwgdGhyb3VnaCBjYXNlLgor
ICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworICAgICAgICAg
ICAgcmVzdG9yZVNjb3BlUmVnaXN0ZXIoKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiBmaW5h
bGx5RG9uZSA9IG5ld0xhYmVsKCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZU
cnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwg
ZmluYWxseURvbmUuZ2V0KCkpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVybkNhbGxU
cnlTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuQ2FsbFRy
eVN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIFRyeURhdGEqIHJldHVybkNhbGxUcnlEYXRhID0g
cHVzaFRyeShyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCksIGNhdGNoTGFiZWwuZ2V0KCksIEhhbmRs
ZXJUeXBlOjpTeW50aGVzaXplZENhdGNoKTsKKworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBy
ZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAgbW92ZShyZXR1cm5B
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgIGVt
aXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5v
ZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgICAgIGVtaXRK
dW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBmaW5h
bGx5RG9uZS5nZXQoKSk7CisgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworCisgICAgICAgICAgICBl
bWl0TGFiZWwoZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAgICAgZW1pdEZpbmFsbHlDb21w
bGV0aW9uKGZpbmFsbHlDb250ZXh0LCBlbmRDYXRjaExhYmVsLmdldCgpKTsKKworICAgICAgICAg
ICAgcG9wVHJ5KHJldHVybkNhbGxUcnlEYXRhLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAgICAg
ICAgICAgIC8vIENhdGNoIGJsb2NrIGZvciBleGNlcHRpb25zIHRoYXQgbWF5IGJlIHRocm93biB3
aGlsZSBjYWxsaW5nIHRoZSByZXR1cm4KKyAgICAgICAgICAgIC8vIGhhbmRsZXIgaW4gdGhlIGVu
dW1lcmF0aW9uIGZpbmFsbHkgYmxvY2suIFRoZSBvbmx5IHJlYXNvbiB3ZSBuZWVkIHRoaXMKKyAg
ICAgICAgICAgIC8vIGNhdGNoIGJsb2NrIGlzIGJlY2F1c2UgaWYgZW50ZXJlZCB0aGUgYWJvdmUg
ZmluYWxseSBibG9jayBkdWUgdG8gYSB0aHJvd24KKyAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiwg
dGhlbiB3ZSB3YW50IHRvIHJlLXRocm93IHRoZSBvcmlnaW5hbCBleGNlcHRpb24gb24gZXhpdGlu
ZworICAgICAgICAgICAgLy8gdGhlIGZpbmFsbHkgYmxvY2suIE90aGVyd2lzZSwgd2UnbGwgbGV0
IGFueSBuZXcgZXhjZXB0aW9uIHBhc3MgdGhyb3VnaC4KKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwoY2F0Y2hMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKKyAg
ICAgICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZXhjZXB0aW9uUmVnaXN0
ZXIuZ2V0KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgcmV0dXJu
Q2FsbFRyeURhdGEpOworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBzeW50aGVz
aXplZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBuZWVkCisgICAg
ICAgICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBzY29wZSwgd2Ug
Y2FuIHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQorICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVy
IGhlcmUuCisKKyAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJl
bCgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc0VtcHR5KG5ld1RlbXBv
cmFyeSgpLCBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpLCB0aHJvd0xhYmVsLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBtb3ZlKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5
RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHRo
cm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRUaHJvdyhleGNlcHRpb25SZWdp
c3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwoZW5kQ2F0Y2hMYWJlbC5n
ZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBib29sIGJyZWFrTGFi
ZWxJc0JvdW5kID0gc2NvcGUtPmJyZWFrVGFyZ2V0TWF5QmVCb3VuZCgpOworICAgICAgICBpZiAo
YnJlYWtMYWJlbElzQm91bmQpCisgICAgICAgICAgICBlbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFy
Z2V0KCkpOworICAgICAgICBwb3BGaW5hbGx5Q29udHJvbEZsb3dTY29wZSgpOworICAgICAgICBp
ZiAoYnJlYWtMYWJlbElzQm91bmQpIHsKKyAgICAgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2Vx
dWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4KKyAgICAgICAgICAgIGVtaXRJdGVyYXRv
ckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgRW1pdEF3YWl0OjpObyk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKQEAgLTQyNjUsNTYg
KzQ0MDQsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzRW1wdHkoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgT3BJc0VtcHR5OjplbWl0KHRoaXMs
IGRzdCwgc3JjKTsKICAgICByZXR1cm4gZHN0OwogfQotICAgIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICB7Ci0gICAgICAg
IENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgICAgIG1v
dmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBlbWl0
Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOwotCi0gICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6
OlllcykKLSAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOwotICAgIH0KLSAgICB7Ci0gICAgICAg
IFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKLSAgICAgICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0
KCkpOwotICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZh
Y2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwotICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0
LmdldCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCog
dmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQotewotICAgIHsKLSAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKLSAg
ICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAg
ICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7Ci0gICAg
ICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJn
dW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRzdDsKLX0KLQot
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9F
bWl0QXdhaXQpCi17Ci0gICAgUmVmPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7Ci0gICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkp
LCBkb25lLmdldCgpKTsKLQotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBv
cmFyeSgpOwotICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRy
KTsKLSAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwot
ICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0
KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICBpZiAoZG9F
bWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgIGVtaXRBd2FpdCh2YWx1ZS5nZXQo
KSk7Ci0KLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZh
bHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0gICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKLSAgICBlbWl0TGFiZWwo
ZG9uZS5nZXQoKSk7Ci19CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hJbmRleGVkRm9y
SW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lz
dGVyKQogewpAQCAtNDU1NSw3ICs0NjQ0LDM1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRBd2FpdChSZWdpc3RlcklEKiB2YWx1ZSkKICAgICBtb3ZlKHZhbHVlLCBnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJ
RCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJ
dGVyYXRvciwgQ2FsbEFyZ3VtZW50cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKQoreworICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCisg
ICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdp
c3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsgKytpKQorICAgICAgICBj
YWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFyeSgpKTsKKworICAgIGlmIChzaG91bGRFbWl0RGVi
dWdIb29rcygpKQorICAgICAgICBlbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwg
bm9kZS0+ZGl2b3RTdGFydCgpKTsKKworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhub2RlLT5kaXZv
dCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIE9wSXRlcmF0
b3JPcGVuOjplbWl0KHRoaXMsIGl0ZXJhdG9yLCBuZXh0T3JJbmRleCwgc3ltYm9sSXRlcmF0b3Is
IGl0ZXJhYmxlLnRoaXNSZWdpc3RlcigpLCBpdGVyYWJsZS5zdGFja09mZnNldCgpKTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25l
LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5l
eHRPckluZGV4LCBDYWxsQXJndW1lbnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4K
KyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyArK2kpCisgICAgICAg
IGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOworCisgICAgaWYgKHNob3VsZEVtaXRE
ZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHByZXNzaW9u
LCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgT3BJdGVy
YXRvck5leHQ6OmVtaXQodGhpcywgZG9uZSwgdmFsdWUsIGl0ZXJhYmxlLCBuZXh0T3JJbmRleCwg
aXRlcmF0b3IudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLnN0YWNrT2Zmc2V0KCkpOworfQorCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcihSZWdp
c3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGVtaXRDYWxs
SXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCksIGFyZ3VtZW50LCBub2RlKTsKQEAgLTQ1NjMsNiArNDY4
MCw1NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKFJl
Z2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeAogICAgIHJldHVybiBpdGVyYXRvci5nZXQo
KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVy
aWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJ
RCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdh
aXQgZG9FbWl0QXdhaXQpCit7CisgICAgeworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1
bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRp
dm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAg
ICAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCisgICAgICAgICAgICBlbWl0
QXdhaXQoZHN0KTsKKyAgICB9CisgICAgeworICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVj
dCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdU
ZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KTsKKyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAgIHJl
dHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JHZW5lcmljTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRN
ZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAgICBDYWxsQXJndW1l
bnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICBtb3ZlKG5leHRB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgbW92ZShuZXh0QXJn
dW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgZW1pdENhbGwoZHN0
LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNh
bGw6Ok5vKTsKKyAgICB9CisKKyAgICByZXR1cm4gZHN0OworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQp
Cit7CisgICAgUmVmPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9y
LCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgZW1pdEp1bXBJZlRydWUoZW1p
dElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBkb25lLmdl
dCgpKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOwor
ICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICBt
b3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgIGVtaXRD
YWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
cmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUt
PmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICBpZiAoZG9FbWl0QXdhaXQg
PT0gRW1pdEF3YWl0OjpZZXMpCisgICAgICAgIGVtaXRBd2FpdCh2YWx1ZS5nZXQoKSk7CisKKyAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgp
KSwgZG9uZS5nZXQoKSk7CisgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQg
aW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICBlbWl0TGFiZWwoZG9uZS5nZXQo
KSk7Cit9CisKKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0
ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdU
ZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5hc3luY0l0ZXJhdG9yU3ltYm9s
KTsKQEAgLTQ1NzUsNyArNDc0Myw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhCiAgICAgZW1p
dEp1bXAoYXN5bmNJdGVyYXRvckZvdW5kLmdldCgpKTsKICAgICBlbWl0TGFiZWwoYXN5bmNJdGVy
YXRvck5vdEZvdW5kLmdldCgpKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25JdGVy
YXRvciA9IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1bWVudCwg
bm9kZSk7CiAgICAgbW92ZShpdGVyYXRvci5nZXQoKSwgY29tbW9uSXRlcmF0b3IuZ2V0KCkpOwog
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKQEAgLTQ2MDQs
NyArNDc3Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiB7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgewotICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXRlcmF0b3IgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yQm9keU1vZGUgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSkg
OiBlbWl0R2V0SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaXRlcmF0b3IgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2Vu
ZXJhdG9yQm9keU1vZGUgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSkgOiBl
bWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0
b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAogICAgICAgICBSZWY8TGFiZWw+IGxv
b3BEb25lID0gbmV3TGFiZWwoKTsKQEAgLTQ2NDIsNyArNDgxMCw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
VGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0SXNVbmRl
ZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2RGb3Vu
ZC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgRW1pdEF3YWl0IGVtaXRBd2FpdEluSXRl
cmF0b3JDbG9zZSA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0
b3JCb2R5TW9kZSA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObzsKLSAgICAgICAgICAg
ICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGVtaXRBd2Fp
dEluSXRlcmF0b3JDbG9zZSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVy
aWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsK
IAogICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkRlbGVnYXRlZCBnZW5l
cmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJvdycgbWV0aG9kLiJfcyk7CiAKQEAgLTQ3MDMsNyAr
NDg3MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVs
ZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICBlbWl0SXRl
cmF0b3JOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRv
ci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9y
LmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7CiAKICAgICAgICAgICAgIGVtaXRMYWJlbChicmFu
Y2hPblJlc3VsdC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkNTM0Y2Q4MjhhYWMzZDE0MGI0
ZjQ2Yzg2ODc2ODA5MTRlMGRlMzI1Li42YjcwOGU5NmFiMTQ2MGRhNmEwYWUwY2I5NTM2OGE3OWRj
ZjhlZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC04MjgsNiArODI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmos
IFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAogICAgICAgICAgICAgUmVnaXN0ZXJJ
RCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYp
OwogCisgICAgICAgIHZvaWQgZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNv
bnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYg
Y2FsbEJhY2ssIEZvck9mTm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9s
VGFibGUgPSBudWxscHRyKTsKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3RO
b2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9v
cFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFRl
bXBsYXRlT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgVGFnZ2VkVGVtcGxhdGVOb2RlKik7CkBAIC04
OTgsOSArODk5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SXNEZXJpdmVkQXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJu
IGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgRGVyaXZlZEFycmF5VHlwZSk7IH0KICAgICAg
ICAgdm9pZCBlbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBlcnJvcik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4
dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdh
aXQgPSBKU0M6OkVtaXRBd2FpdDo6Tm8pOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0
b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwg
UmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSk7Ci0gICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBF
bWl0QXdhaXQgPSBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JPcGVu
KFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgUmVnaXN0ZXJJ
RCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0
ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0ZXJhYmxlLCBSZWdp
c3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYgaXRlcmF0b3IsIGNvbnN0IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKik7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEdlbmVy
aWNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKik7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3Rl
cklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEpTQzo6
RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgdm9pZCBlbWl0SXRl
cmF0b3JHZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgPSBFbWl0QXdhaXQ6Ok5vKTsKIAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2ln
bmVkIG51bVBhcmFtZXRlcnNUb1NraXApOwogCkBAIC05NTAsOSArOTU3LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFB1c2hDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJvbm1l
bnQmKTsKICAgICAgICAgdm9pZCBlbWl0UG9wQ2F0Y2hTY29wZShWYXJpYWJsZUVudmlyb25tZW50
Jik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEl0ZXJhdG9yKFJlZ2lzdGVySUQqLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXN5
bmNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLQogICAg
ICAgICB2b2lkIGVtaXRBd2FpdChSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdEdldFNj
b3BlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQq
IG9iamVjdFNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkNGZkYjRkZDU0ZDQ5MmY5MGQyZDcyMWZkN2RhYzEy
ZmY3ZDJmODUwLi4yYjE1Y2FhNDcxM2E4ODU2NWM0Y2QwOTUyNmY5MGMyNDVmNjNhMDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC00NTcyLDcgKzQ1NzIsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5uZXh0KTsKIAogICAgIGlmIChtX3RhcmdldFBhdHRlcm5zLmlzRW1wdHkoKSkgewotICAg
ICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgp
LCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDU4OCw3ICs0NTg4LDcgQEAg
dm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKIAogICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRN
ZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwg
aXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRvbmUp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJh
dGlvblNraXBwZWQuZ2V0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZh
bHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7
CkBAIC00NjI0LDcgKzQ2MjQsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9k
LmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJh
dG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkb25l
LmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25E
b25lLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQo
KSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDY0
Miw3ICs0NjQyLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogCiAgICAgUmVmPExhYmVsPiBp
dGVyYXRvckNsb3NlZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRvckNsb3NlZC5nZXQoKSk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICBnZW5lcmF0
b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IDBhNGExMWY5YjQwZTZiMTNjNTk2NDIyOGU0MTEyODlmMWQ5ZWU4NjYuLjE4
ZGFlMDA0YzcyMmNkNmZkY2Y4OTEyYmM1YzQyMTNhNDMxYjI0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTQzOTgsMTAgKzQzOTgsOCBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMoCiAgICAgICAgICAgICAgICAgZnVuY3Rvcihmb3JO
b2RlKG5vZGUpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0
ZS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUuYXJn
dW1lbnQoaSkpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mTG9jYWxzKCk7
IGktLTspCi0gICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5sb2NhbChpKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IG1fc3RhdGUuc2l6ZSgpOyBpLS07KQorICAgICAgICBmdW5jdG9yKG1fc3RhdGUuYXRJ
bmRleChpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaApp
bmRleCA4OTdjNzBkZmZiYTA2NmI2NDljYWZkY2MxZWYwOTMzNzY4MTA0ZDEzLi40MzhlMTZkZTg1
OTU5MjU0ZDk1NTcyMWI2ZjA4ZGI5NTgxNGZkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaApAQCAtMTM3LDExICsxMzcsMTUg
QEAgcHVibGljOgogICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUoZWRnZS5ub2RlKCkpOwogICAg
IH0KICAgICAKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFs
dWVzQXRUYWlsLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCk7IH0K
ICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZh
bHVlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZUbXBz
KCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1wcygpOyB9
CisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxv
Y2stPnZhbHVlc0F0VGFpbC5hdChpbmRleCk7IH0KICAgICBBYnN0cmFjdFZhbHVlJiBvcGVyYW5k
KE9wZXJhbmQgb3BlcmFuZCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm9wZXJhbmQo
b3BlcmFuZCk7IH0KICAgICBBYnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpIHsgcmV0
dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpbmRleCk7IH0KICAgICBBYnN0cmFjdFZh
bHVlJiBhcmd1bWVudChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFp
bC5hcmd1bWVudChpbmRleCk7IH0KKyAgICBBYnN0cmFjdFZhbHVlJiB0bXAoc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwudG1wKGluZGV4KTsgfQogICAgIAogICAg
IHZvaWQgY2xvYmJlclN0cnVjdHVyZXMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDk5N2JhYjA1MjUyNjRlNmYxNjQ4
NTQyNDJkOTRjZTNiNTdlMzZkYy4uZDAxMGVlMTI3ZGY0ZWFmM2NlN2QyMzAyZTMyNTZhYzk3MDE2
MTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNs
dWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1
ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAj
aW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgpAQCAtMTU3LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIZWxwZXIg
Zm9yIG1pbiBhbmQgbWF4LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0g
ICAgYm9vbCBoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3As
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlTWluTWF4KE9w
ZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7
CiAgICAgCiAgICAgdm9pZCByZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiwgTm9kZSog
Y2FsbFRhcmdldCk7CiAgICAgLy8gQmxvY2tzIGNhbiBlaXRoZXIgYmUgdGFyZ2V0YWJsZSAoaS5l
LiBpbiB0aGUgbV9ibG9ja0xpbmtpbmdUYXJnZXRzIG9mIG9uZSBJbmxpbmVTdGFja0VudHJ5KSB3
aXRoIGEgd2VsbC1kZWZpbmVkIGJ5dGVjb2RlQmVnaW4sCkBAIC0xNzQsNyArMTc1LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBIYW5kbGUgY2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJvdW5k
aW5nIGlubGluaW5nIGFuZCBpbnRyaW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBUZXJt
aW5hbCwgTm9uVGVybWluYWwgfTsKICAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKAotICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNp
emUsCiAgICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAt
MTg4LDI3ICsxODksMjcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVJlY3Vyc2l2ZVRhaWxD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGVt
aXRGdW5jdGlvbkNoZWNrSWZOZWVkZWQpOwogICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxs
VmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlk
YXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8g
SGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdl
IG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlu
a1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVu
dCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNP
ZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29s
IGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1
bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVn
aXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVu
c2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQpOwogICAgIHVuc2lnbmVkIGdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0
YXR1cyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGVudW0gY2xhc3MgQ2FsbE9wdGlt
aXphdGlvblJlc3VsdCB7IE9wdGltaXplZFRvSnVtcCwgSW5saW5lZCwgRGlkTm90aGluZyB9Owot
ICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6
S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5j
ZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVl
KTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYs
IGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5
cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2Us
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSk7
CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3As
IElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICB2b2lkIGlubGluZUNhbGwoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcyk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0
cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJp
bnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVz
dWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0g
ICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZURPTUpJVENh
bGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxl
SW50cmluc2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0
aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhh
bmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNO
b2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0
b3IoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZVR5cGVk
QXJyYXlDb25zdHJ1Y3RvcihPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5
VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1
bmN0aW9uKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRl
cm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRl
cm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJu
YWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChO
b2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFs
dWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBi
YXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUg
PSBHZXRCeU9mZnNldCk7Ci0gICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgYm9v
bCBoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50
JiwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlTdGF0
dXMpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CkBAIC0zMTgsMTUgKzMxOSwx
NSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZ2V0TG9jYWxPclRtcChvcGVyYW5kKTsKICAg
ICB9CiAKLSAgICBOb2RlKiBnZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgTm9kZSog
Z2V0KE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChvcGVyYW5kLmlzQ29uc3Rh
bnQoKSkgewotICAgICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9IG9wZXJhbmQudG9D
b25zdGFudEluZGV4KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3Bl
cmFuZC52aXJ0dWFsUmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVu
c2lnbmVkIG9sZFNpemUgPSBtX2NvbnN0YW50cy5zaXplKCk7CiAgICAgICAgICAgICBpZiAoY29u
c3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkgewog
ICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2Rl
QmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFu
dFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENvbnN0YW50KG9wZXJhbmQudmlydHVhbFJlZ2lzdGVy
KCkpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24gPSBjb2RlQmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24ob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0
YW50SW5kZXggPj0gb2xkU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2NvbnN0YW50cy5n
cm93KGNvbnN0YW50SW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gb2xkU2l6ZTsgaSA8IG1fY29uc3RhbnRzLnNpemUoKTsgKytpKQpAQCAtMzQ3LDEwICsz
NDgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSgpLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAg
ICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlZUNv
bnN0YW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kID09IFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gd2Vha0pTQ29uc3RhbnQoY2FsbGVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IGlmIChvcGVyYW5kLm9mZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgeworICAgICAg
ICB9IGVsc2UgaWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gc29tZSBjb25zdGFudC1mb2xk
aW5nIGhlcmUgYmVjYXVzZSB0aGlzIGVuYWJsZXMgQ3JlYXRlVGhpcyBmb2xkaW5nLiBOb3RlCiAg
ICAgICAgICAgICAvLyB0aGF0IHdlIGRvbid0IGhhdmUgc3VjaCB3YXRjaHBvaW50LWJhc2VkIGZv
bGRpbmcgZm9yIGlubGluZWQgdXNlcyBvZiBDYWxsZWUsIHNpbmNlIGluIHRoYXQKICAgICAgICAg
ICAgIC8vIGNhc2UgaWYgdGhlIGZ1bmN0aW9uIGlzIGEgc2luZ2xldG9uIHRoZW4gd2UgYWxyZWFk
eSBrbm93IGl0LgpAQCAtNDEwLDcgKzQxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0TG9j
YWxRdWV1ZS5zaHJpbmsoMCk7CiAgICAgfQogCi0gICAgTm9kZSogc2V0KFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQorICAg
IE5vZGUqIHNldChPcGVyYW5kIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUg
PSBOb3JtYWxTZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0RGlyZWN0KG1faW5saW5lU3Rh
Y2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKSwgdmFsdWUsIHNldE1vZGUpOwogICAgIH0KQEAg
LTY5MSwxNSArNjkyLDIwIEBAIHByaXZhdGU6CiAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsK
ICAgICB9CiAKKyAgICBOb2RlKiBqc0NvbnN0YW50KEZyb3plblZhbHVlKiBjb25zdGFudFZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGNv
bnN0YW50VmFsdWUpKTsKKyAgICB9CisKICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIGNvbnN0YW50
IHNob3VsZCBiZSBzdHJvbmdseSBtYXJrZWQuCiAgICAgTm9kZSoganNDb25zdGFudChKU1ZhbHVl
IGNvbnN0YW50VmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0
YW50LCBPcEluZm8obV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAg
ICAgcmV0dXJuIGpzQ29uc3RhbnQobV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkp
OwogICAgIH0KIAogICAgIE5vZGUqIHdlYWtKU0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyht
X2dyYXBoLmZyZWV6ZShjb25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFu
dChtX2dyYXBoLmZyZWV6ZShjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gSGVscGVy
IGZ1bmN0aW9ucyB0byBnZXQvc2V0IHRoZSB0aGlzIHZhbHVlLgpAQCAtODUwLDcgKzg1Niw3IEBA
IHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxs
ZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBPcGVyYW5kIHJl
c3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0Nv
dW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pCiAgICAgewogICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKQEAgLTk1OSw3ICs5NjUs
MzMgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRQcmVkaWN0aW9uKG1fY3Vy
cmVudEluZGV4KTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBxdWl0
ZSBhIHRydWUgYm90dG9tIHZhbHVlIGZvciBleGFtcGxlIGFueSBvYmplY3Qgc3BlY3VsYXRpb24g
d2lsbCBub3cgYmUgT2JqZWN0fE90aGVyIGFzIHRoaXMgcmV0dXJucyBudWxsLgorICAgIC8vIFdl
IHNob3VsZCBmaXggdGhpcyB3aGVuIHdlIGNhbiBhbGxvY2F0ZSBvbiB0aGUgQ29tcGlsZXIgdGhy
ZWFkLgorICAgIEZyb3plblZhbHVlKiBib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgc3BlYykKKyAgICB7CisgICAgICAgIGlmIChpc1N1YnR5cGVTcGVjdWxhdGlv
bihzcGVjLCBTcGVjT3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpz
TnVsbCgpKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY0Jv
b2xlYW4pKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzQm9vbGVhbih0cnVl
KSk7CisKKyAgICAgICAgaWYgKGlzU3VidHlwZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNGdWxsTnVt
YmVyKSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc051bWJlcigwKSk7CisK
KyAgICAgICAgaWYgKGlzU3VidHlwZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNCaWdJbnQpKQorICAg
ICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPmJpZ0ludENvbnN0YW50T25lLmdl
dCgpKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY1N0cmlu
ZyB8IFNwZWNTeW1ib2wpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0t
PnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3Bl
Y3VsYXRpb24oc3BlYywgU3BlY0NlbGxPdGhlciB8IFNwZWNPYmplY3QpKQorICAgICAgICAgICAg
cmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVsbCgpKTsKKworICAgICAgICBBU1NFUlQoaXNTdWJ0
eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY0VtcHR5KSB8fCBzcGVjID09IFNwZWNOb25lKTsKKyAg
ICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoKSk7CisgICAgfQorCiAgICAgQXJy
YXlNb2RlIGdldEFycmF5TW9kZShBcnJheTo6QWN0aW9uIGFjdGlvbikKICAgICB7CiAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
OwpAQCAtMTE3NCw3ICsxMjA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gT3B0aW9uYWw6IGEg
Y29udGludWF0aW9uIGJsb2NrIGZvciByZXR1cm5zIHRvIGp1bXAgdG8uIEl0IGlzIHNldCBieSBl
YXJseSByZXR1cm5zIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogICAgICAgICBCYXNpY0Jsb2NrKiBt
X2NvbnRpbnVhdGlvbkJsb2NrOwogCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX3JldHVyblZh
bHVlOworICAgICAgICBPcGVyYW5kIG1fcmV0dXJuVmFsdWU7CiAgICAgICAgIAogICAgICAgICAv
LyBTcGVjdWxhdGlvbnMgYWJvdXQgdmFyaWFibGUgdHlwZXMgY29sbGVjdGVkIGZyb20gdGhlIHBy
b2ZpbGVkIGNvZGUgYmxvY2ssCiAgICAgICAgIC8vIHdoaWNoIGFyZSBiYXNlZCBvbiBPU1IgZXhp
dCBwcm9maWxlcyB0aGF0IHBhc3QgREZHIGNvbXBpbGF0aW9ucyBvZiB0aGlzCkBAIC0xMTk0LDcg
KzEyMjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ29kZUJsb2NrKiwKICAgICAgICAgICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSwgLy8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHJldHVyblZhbHVlVlIsCisgICAgICAgICAgICBPcGVyYW5kIHJldHVyblZhbHVl
LAogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0LAogICAg
ICAgICAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLApAQCAtMTI2OSw2ICsxMzAxLDcgQEAgQmFzaWNCbG9jayogQnl0
ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKQogICAgIFJlZjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jayhCeXRlY29kZUluZGV4KCksIG1f
bnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgbV9udW1UbXBzLCAxKSk7CiAgICAgQmFzaWNCbG9j
ayogYmxvY2tQdHIgPSBibG9jay5wdHIoKTsKICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1v
dmUoYmxvY2spKTsKKyAgICBWRVJCT1NFX0xPRygiQWRkaW5nIG5ldyB1bnRhcmdldGFibGUgYmxv
Y2s6ICIsIGJsb2NrUHRyLT5pbmRleCwgIlxuIik7CiAgICAgcmV0dXJuIGJsb2NrUHRyOwogfQog
CkBAIC0xMzAxLDggKzEzMzQsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CiBCeXRlQ29k
ZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7Ci0gICAgTm9kZSogY2FsbFRhcmdldCA9IGdl
dChieXRlY29kZS5tX2NhbGxlZSk7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19j
YXN0PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGNh
bGxlZUZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7CisgICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVy
c0ZvckNhbGwoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkpOwogCiAgICAg
Q2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29k
ZU9yaWdpbigpLApAQCAtMTMxMCw4ICsxMzQzLDggQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFs
aXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm8K
IAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5saW5lQ2FsbEZyYW1lOjpraW5k
Rm9yKGNhbGxNb2RlKTsKIAotICAgIHJldHVybiBoYW5kbGVDYWxsKGJ5dGVjb2RlLm1fZHN0LCBv
cCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKLSAgICAgICAgYnl0ZWNvZGUubV9hcmdj
LCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CisgICAg
cmV0dXJuIGhhbmRsZUNhbGwoZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4
LmNoZWNrcG9pbnQoKSwgSklUVHlwZTo6REZHSklUKSwgb3AsIGtpbmQsIHBjLT5zaXplKCksIGNh
bGxUYXJnZXQsCisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2Rl
LCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpLCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtT
dGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmlu
ZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFy
Z2V0KQpAQCAtMTMyMSw3ICsxMzU0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5lU3Rh
dGljYWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGwKIH0KIAog
Qnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAot
ICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgIE9wZXJhbmQgcmVzdWx0
LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSwKICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlu
a1N0YXR1cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKQEAgLTE2MzcsNyArMTY3MCw3
IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxs
ZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ss
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBjb25zdCBJbnN0cnVj
dGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKICAg
ICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxG
cmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwpAQCAtMTY3MSw3ICsxNzA0LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EKICAgICBzaXplX3QgYXJndW1lbnRQb3NpdGlvblN0YXJ0
ID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUoKTsKIAogICAgIGlmIChyZXN1bHQu
aXNWYWxpZCgpKQotICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJh
bmQocmVzdWx0KS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgcmVzdWx0ID0gbV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCk7CiAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwo
KSkgewpAQCAtMTgyMyw3ICsxODU2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EKICAgICBt
X2N1cnJlbnRJbnN0cnVjdGlvbiA9IHNhdmVkQ3VycmVudEluc3RydWN0aW9uOwogfQogCi1CeXRl
Q29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
Q2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5k
ZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQorQnl0ZUNvZGVQYXJzZXI6OkNh
bGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNh
bGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYg
aW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVk
c1RvQ2hlY2tDYWxsZWUpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICBDb25zaWRlcmluZyBjYWxs
ZWUgIiwgY2FsbGVlLCAiXG4iKTsKIApAQCAtMTkwMCw3ICsxOTMzLDcgQEAgQnl0ZUNvZGVQYXJz
ZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJp
YW50KE5vZGUqIGMKICAgICByZXR1cm4gQ2FsbE9wdGltaXphdGlvblJlc3VsdDo6SW5saW5lZDsK
IH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAorYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJl
c3VsdCwKICAgICBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCBmaXJz
dEZyZWVSZWcsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgVmlydHVhbFJlZ2lz
dGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsCiAgICAgTm9k
ZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKQEAgLTIwNDQsNyArMjA3
Nyw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjpnZXRJbmxpbmluZ0JhbGFuY2UoY29uc3Qg
Q2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzCiB9CiAKIEJ5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKLSAgICBO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAorICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVy
YW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAogICAgIGlu
dCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgs
IE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pCkBAIC0yMjIwLDcgKzIyNTMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2Fs
bE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgo
T3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KQogewogICAgIEFTU0VSVChvcCA9PSBBcml0aE1pbiB8fCBvcCA9PSBBcml0aE1heCk7CiAKQEAg
LTIyNTAsNyArMjI4Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50cmluc2lj
IGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9k
ZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBW
RVJCT1NFX0xPRygiICAgICAgIFRoZSBpbnRyaW5zaWMgaXMgIiwgaW50cmluc2ljLCAiXG4iKTsK
IApAQCAtMjM4OSwyNyArMjQyMiwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAg
ICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOiB7CiAgICAgICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKIAotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kOwotICAgICAgICAgICAgc3dpdGNo
IChpbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5zaWM6Ci0g
ICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAg
ICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQXJyYXlLZXlzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBU
eXBlZEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9u
S2luZDo6S2V5czsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJy
YXlFbnRyaWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0lu
dHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6RW50cmllczsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGtp
bmQgPSBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhpbnRyaW5zaWMpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoISFraW5kKTsKIAogICAgICAgICAgICAgLy8gQWRkIHRoZSBjb25zdGFu
dCBiZWZvcmUgZXhpdCBiZWNvbWVzIGludmFsaWQgYmVjYXVzZSB3ZSBtYXkgd2FudCB0byBpbnNl
cnQgKHJlZHVuZGFudCkgY2hlY2tzIG9uIGl0IGluIEZpeHVwLgotICAgICAgICAgICAgTm9kZSog
a2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihraW5k
KSkpOworICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0
YXRpY19jYXN0PHVpbnQzMl90Pigqa2luZCkpKTsKIAogICAgICAgICAgICAgLy8gV2UgZG9uJ3Qg
aGF2ZSBhbiBleGlzdGluZyBlcnJvciBzdHJpbmcuCiAgICAgICAgICAgICB1bnNpZ25lZCBlcnJv
clN0cmluZ0luZGV4ID0gVUlOVDMyX01BWDsKQEAgLTM2NDcsNyArMzY2NCw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBJCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1i
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
Citib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQs
IE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewog
ICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEg
KyBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
NjY2LDcgKzM2ODMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5v
ZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCiAKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNp
YygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewpAQCAtMzc4
MCw3ICszNzk3LDcgQEAgc3RhdGljIHZvaWQgYmxlc3NDYWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUp
CiAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiB9CiAKLWJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCitib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5
SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlhbnQuZG9t
QXR0cmlidXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM4NTksNyArMzg3Niw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVzcGFjZUxvYWQoVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCi0g
ICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGlu
dCByZWdpc3Rlck9mZnNldCwKKyAgICBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiog
ZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlIHR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcykKIHsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGUpKQpAQCAtMzkxNiw3ICszOTMz
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAotICAgIE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3Vs
dCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKICAgICBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgSGFuZGxpbmcgY29uc3RhbnQgaW50ZXJu
YWwgZnVuY3Rpb24gIiwgSlNWYWx1ZShmdW5jdGlvbiksICJcbiIpOwpAQCAtNjYwNCwyMCArNjYy
MSw0MDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAg
ICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOiB7CiAgICAgICAgICAgICBoYW5kbGVWYXJhcmdz
Q2FsbDxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29uc3RydWN0VmFy
YXJncywgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZVZh
cmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBjYWxsZWUsIHRyYXNoZWQgbV9j
dXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvbnN0cnVj
dF92YXJhcmdzKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9j
YWxsX2V2YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wQ2FsbEV2YWw+KCk7CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAt
Ynl0ZWNvZGUubV9hcmd2OwogICAgICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2Fs
bEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVl
KSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KLSAgICAgICAg
ICAgIAorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7Cisg
ICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7
CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1l
dGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZW1haW5p
bmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVzKTsKKyAgICAgICAgICAgIEFTU0VSVChu
dW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9mSXRlcmF0aW9uTW9kZXMpOworICAgICAg
ICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7CisKKyAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogZ2VuZXJpY0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbiA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisKKyAgICAgICAgICAgIE5v
ZGUqIHN5bWJvbEl0ZXJhdG9yID0gZ2V0RGlyZWN0KGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3Ip
OworICAgICAgICAgICAgYXV0byYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCA9
IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpOworCisg
ICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5ICYmIGFy
cmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9ucyB3ZSBu
ZWVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRz
KCkuYWRkTGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworCisgICAg
ICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBt
X2dyYXBoLmZyZWV6ZShnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JG
dW5jdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9
PSAxKQorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZy
b3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJs
b2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBn
ZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSoga25vd25JdGVyRnVuY3Rpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcVB0
ciwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzQXJyYXkgPSBhZGRUb0dyYXBoKElzQ2VsbFdp
dGhUeXBlLCBPcEluZm8oQXJyYXlUeXBlKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKwor
ICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2Jy
YW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0g
QnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNo
RGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBhbmRSZXN1bHQgPSBhZGRUb0dyYXBoKEFyaXRoQml0QW5kLCBpc0Fy
cmF5LCBrbm93bkl0ZXJGdW5jdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25v
dyB0aGUgYml0IGFuZCBjYW5ub3QgaGF2ZSBlZmZlY3RzIHNvIGl0J3Mgb2sgdG8gZXhpdCBoZXJl
LgorICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhbmRSZXN1bHQpOworICAgICAgICAgICAgICAg
ICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgYnJhbmNoIGFi
b3ZlIG1heSBoYXZlIG1hZGUgZXhpdCBpbnZhbGlkIGJ1dCBpdCdzIGFjdHVhbGx5IG9rLgorICAg
ICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisgICAgICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpz
TnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25LaW5kOjpWYWx1ZXMpKSk7Cisg
ICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0FycmF5SXRlcmF0
b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlJ
dGVyYXRvclN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50
ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6
OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFi
bGUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5m
byhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBp
dGVyYXRvciwga2luZE5vZGUpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2l0ZXJh
dG9yLCBpdGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCBq
c0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBs
b2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3Zl
IHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0g
Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlv
bi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2Nh
bFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250
aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworCisg
ICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykgeworICAg
ICAgICAgICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGdlbmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IGdlbmVyaWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFnZW5lcmF0ZWRD
YXNlKTsKKworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxl
Q2FsbDxPcEl0ZXJhdG9yT3Blbj4oY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6
UmVndWxhcik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5hbGl0eSwgdGVy
bWluYWxpdHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0
Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0
ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90T2JqZWN0
QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFz
aWNCbG9jayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAg
ICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERh
dGEuYWRkKCk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJn
ZXQoaXNPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4g
PSBCcmFuY2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJh
dG9yKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVz
KCk7CisgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIGJlIGEgdHlwZSBl
cnJvci4uLgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93LCBqc0NvbnN0YW50
KGpzTnVsbCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IGdldFByZWRpY3Rpb24oKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBuZXh0
SW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVu
c3VyZShuZXh0SW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0g
QWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2Rl
TGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAs
IG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9y
aWdpbigpKTsKKworCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUu
bV9uZXh0LCBwcmVkaWN0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKG5leHRJbXBsKSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0
dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3Vy
IHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28g
d2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVu
dEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25z
dGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0
KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgcmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCByZXN1bHQpOworCisgICAgICAgICAg
ICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQg
YnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0
KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAg
ICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRl
eCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlv
bjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRv
cl9uZXh0OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2Rl
cyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9k
ZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVy
T2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxz
ZTsKKworICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5k
ZXg7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigp
KTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQg
PSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKyAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7
CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkg
JiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25z
IHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hw
b2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisK
KyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyAhPSAxKSB7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGhhc05leHQgPSBhZGRUb0dyYXBoKElzRW1wdHksIGdldChi
eXRlY29kZS5tX25leHQpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAg
ICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERh
dGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNo
VGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+
bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaGFzTmV4dCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQoZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSwg
aXRlcmF0b3IpOworCisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
ZG9Mb2FkQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAg
ICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1faXRlcmFi
bGVQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVkaWN0aW9u
ID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50
ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6
OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDUyQW55KSwgZ2V0KGJ5dGVjb2RlLm1faXRl
cmF0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXRlcmFibGUgPSBnZXQoYnl0ZWNv
ZGUubV9pdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJ1dHRlcmZseSA9IGFk
ZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGxlbmd0aCA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhhcnJheU1vZGUu
YXNXb3JkKCkpLCBpdGVyYWJsZSwgYnV0dGVyZmx5KTsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSogaXNEb25lID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRlckVxLCBpbmRleCwgbGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAvLyBUaGUgYWJvdmUgY29tcGFy
ZSBkb2Vzbid0IHByb2R1Y2UgZWZmZWN0cyBzaW5jZSB3ZSBrbm93IGluZGV4IGFuZCBsZW5ndGgg
YXJlIHVpbnQzMnMuCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKwor
ICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2Jy
YW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0g
QnJhbmNoVGFyZ2V0KGlzRG9uZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0
YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZG9Mb2FkQmxvY2spOworICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBpc0RvbmUpOworICAg
ICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IGRvTG9hZEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwg
T3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRl
eCkpLCBPcEluZm8oU3BlY0ludDMyT25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIG9uZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSkpOwor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgo
QXJpdGhBZGQsIGluZGV4LCBvbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZmFsc2VO
b2RlID0ganNDb25zdGFudChqc0Jvb2xlYW4oZmFsc2UpKTsKKworCisgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBjb25zaWRlciBtYWtpbmcgdGhpcyBub3QgdmFyYXJnLCBz
aW5jZSBpdCBvbmx5IHVzZXMgdGhyZWUgY2hpbGQKKyAgICAgICAgICAgICAgICAgICAgLy8gc2xv
dHMuCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQxOTIKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0
KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVh
dmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
Z2V0QnlWYWwgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJh
eU1vZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgZ2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kb25lLCBmYWxzZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNB
cnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBu
ZXdJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdl
IGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBu
ZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVj
b2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
U2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwg
T3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1p
bmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gUm9sbCBiYWNr
IHRoZSBjaGVja3BvaW50LgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJ
bmRleDsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBpc0RvbmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogdHJ1ZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVh
bih0cnVlKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGRvbmVJbmRleCA9IGpzQ29uc3Rh
bnQoanNOdW1iZXIobWF4U2FmZUludGVnZXIoKSkpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBib3R0b21Ob2RlID0ganNDb25zdGFudChib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24o
cHJlZGljdGlvbikpOworCisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVl
LCBib3R0b21Ob2RlKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwg
dHJ1ZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmll
bGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6
SW5kZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBkb25lSW5kZXgpOworCisgICAgICAg
ICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLgorICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBj
dXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAg
ICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAg
ICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworICAgICAgICAgICAgICAgIGdl
bmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2Vl
bk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykgeworICAgICAgICAgICAgICAgIGlmIChn
ZW5lcmljQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdlbmVyYXRlZENhc2Up
OworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGdlbmVyaWNCbG9jazsKKyAg
ICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFnZW5lcmF0ZWRDYXNlKTsKKworICAgICAgICAg
ICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlQ2FsbDxPcEl0ZXJhdG9yTmV4
dD4oY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CisgICAgICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5hbGl0eSwgdGVybWluYWxpdHkgPT0gTm9uVGVy
bWluYWwpOworICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFy
Z2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaXNPYmplY3RCbG9j
ayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBub3REb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAg
ICAgICAgICAgICBPcGVyYW5kIG5leHRSZXN1bHQgPSBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5l
eHQ6Om5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogaXRlcmF0b3JSZXN1bHQgPSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNP
YmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0g
QnJhbmNoVGFyZ2V0KG5vdE9iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgYWRkVG9HcmFwaChJc09iamVjdCwgaXRl
cmF0b3JSZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2sgPSBub3RPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAg
Y2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUgZXJyb3JTdHJp
bmcgPSBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsICJJdGVyYXRvciByZXN1bHQgaW50
ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZv
IGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJyb3JNZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5
SlNDb25zdGFudCwgaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dT
dGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6VHlwZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVQcmVkaWNpdGlvbiA9IGdldFByZWRpY3Rp
b25XaXRob3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBP
cEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jayA9IGlzT2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVz
KCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJvdHRvbVZhbHVlID0ganND
b25zdGFudChib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24odmFsdWVQcmVkaWNpdGlvbikp
OworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8qIGRvbmVJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+
ZG9uZS5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGRvbmVJbXBsKTsKKworICAgICAgICAg
ICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9
IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9kb25lLCBwcmVkaWN0aW9uLCBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGRvbmVJbXBsKSwg
aWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgICAgIC8vIFNldCBhIHZhbHVlIGZvciBtX3ZhbHVlIHNvIHdlIGRvbid0IHRo
aW5rCisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBib3R0b21WYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisg
ICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJh
bmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBC
cmFuY2hUYXJnZXQoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0
YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90RG9uZUJsb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgZ2V0KGJ5dGVjb2Rl
Lm1fZG9uZSkpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IG5vdERvbmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJD
YWNoZXMoKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KG5leHRSZXN1
bHQpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiB2YWx1ZUltcGwgPSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHZhbHVlSW1wbCk7CisK
KyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJ
ZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudElu
c3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0
QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlUHJlZGlj
aXRpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodmFsdWVJbXBsKSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9w
Y29kZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2lu
dCgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRp
bnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZ2VuZXJhdGVkQ2FzZSkgeworICAgICAg
ICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3RhbnQoSlNWYWx1ZSgpKTsKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fdmFsdWUsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZG9uZSwgcmVzdWx0KTsKKworICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBX
ZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhl
IG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29k
ZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUo
KTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlv
bikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgICAgICAgICBjbGVhckNhY2hlcygp
OworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pdGVyYXRvcl9uZXh0KTsKKyAgICAgICAg
fQorCiAgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICAgICAgICAgIEZy
b3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50
ZXIpKTsKQEAgLTcxMDcsNyArNzUxMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAvLyBsb2FkcyBmcm9tIHRoZSBzY29wZSBy
ZWdpc3RlciBsYXRlciwgYXMgdGhhdCB3b3VsZCBwcmV2ZW50IHRoZSBERkcgZnJvbSB0cmFja2lu
ZyB0aGUKICAgICAgICAgICAgIC8vIGJ5dGVjb2RlLWxldmVsIGxpdmVuZXNzIG9mIHRoZSBzY29w
ZSByZWdpc3Rlci4KICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wR2V0U2NvcGU+KCk7Ci0gICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQ7CiAgICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5
bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KCptX3ZtKSkKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSB3ZWFrSlNDb25zdGFudChmdW5jdGlvbi0+c2NvcGUoKSk7CkBAIC03NDg2LDcgKzc4
OTIsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRy
eSgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCAvLyBOdWxsIGlmIHRoaXMgaXMgYSBjbG9zdXJl
IGNhbGwuCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJldHVyblZhbHVlVlIsCisgICAgT3BlcmFuZCBy
ZXR1cm5WYWx1ZSwKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAg
ICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLApAQCAtNzQ5NSw3ICs3OTAxLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CiAgICAgLCBtX3Byb2ZpbGVkQmxvY2socHJvZmlsZWRCbG9jaykKICAgICAsIG1fY29udGludWF0
aW9uQmxvY2soY29udGludWF0aW9uQmxvY2spCi0gICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZh
bHVlVlIpCisgICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZhbHVlKQogICAgICwgbV9jYWxsZXIo
Ynl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tUb3ApCiB7CiAgICAgewpAQCAtNzU2MSw3ICs3
OTY3LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50
cnkoCiAgICAgICAgIC8vIE1hY2hpbmUgY29kZSBibG9jayBjYXNlLgogICAgICAgICBBU1NFUlQo
Y29kZUJsb2NrID09IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jayk7CiAgICAgICAgIEFTU0VS
VCghY2FsbGVlKTsKLSAgICAgICAgQVNTRVJUKCFyZXR1cm5WYWx1ZVZSLmlzVmFsaWQoKSk7Cisg
ICAgICAgIEFTU0VSVCghcmV0dXJuVmFsdWUuaXNWYWxpZCgpKTsKICAgICAgICAgQVNTRVJUKCFp
bmxpbmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOwogCiAgICAgICAgIG1faW5saW5lQ2FsbEZy
YW1lID0gMDsKQEAgLTc5NzYsNyArODM4Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
KCkKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAKICAgICAg
ICAgICAgICAgICBhdXRvIG5vZGVBbmRJbmRleCA9IGJsb2NrLT5maW5kVGVybWluYWwoKTsKLSAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBV
bnJlYWNoYWJsZSk7CisgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlQW5k
SW5kZXgubm9kZSwgbm9kZUFuZEluZGV4Lm5vZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUpOwogICAg
ICAgICAgICAgICAgIGJsb2NrLT5yZXNpemUobm9kZUFuZEluZGV4LmluZGV4ICsgMSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCBlN2Y2
ZTc2MjQ2NjliMzAxZjVhMDIwNDhjMjVkNDgxNWMzYTEzMzlkLi42MTBkN2QyMGVmNjUzNWY3YThl
OTViY2VhMTIxZWYzYjhhYjQwMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKQEAgLTI4MCw3ICsyODAsNyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQga2VlcE9wZXJhbmRB
bGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2Rl
T3JpZ2luIG5vZGVPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIHZvaWQga2Vl
cE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJs
b2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAg
ICAgIE5vZGUqIGxpdmVuZXNzTm9kZSA9IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgIGlmICghbGl2ZW5lc3NOb2RlKQpAQCAtMzAyLDEx
ICszMDIsOSBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgamV0dGlzb25CbG9jayhCYXNpY0Js
b2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIGJvdW5k
YXJ5Tm9kZU9yaWdpbikKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0
dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQot
ICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3Vu
ZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhp
KSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAgICAgICAga2VlcE9wZXJh
bmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKLSAgICAgICAgCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5k
YXJ5Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZv
ckluZGV4KGkpKTsKKwogICAgICAgICBmaXhKZXR0aXNvbmVkUHJlZGVjZXNzb3JzKGJsb2NrLCBq
ZXR0aXNvbmVkQmxvY2spOwogICAgIH0KICAgICAKQEAgLTM1MiwxMSArMzUwLDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIC8vIFRpbWUgdG8gaW5zZXJ0IGdob3N0aWVzIGZvciB0aGluZ3MgdGhh
dCBuZWVkIHRvIGJlIGtlcHQgYWxpdmUgaW4gY2FzZSB3ZSBPU1IKICAgICAgICAgICAgIC8vIGV4
aXQgcHJpb3IgdG8gaGl0dGluZyB0aGUgZmlyc3RCbG9jaydzIHRlcm1pbmFsLCBhbmQgZW5kIHVw
IGdvaW5nIGRvd24gYQogICAgICAgICAgICAgLy8gZGlmZmVyZW50IHBhdGggdGhhbiBzZWNvbmRC
bG9jay4KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBq
ZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kp
Ci0gICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVk
QmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNs
dWRpbmdUaGlzKGkpKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlz
b25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAg
ICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBi
b3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhl
YWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJs
b2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJsb2Nr
LT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWNvbmRCbG9jay0+cGhpcy5zaXpl
KCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4OGY4ZTFjMmEwYjY3MGJmOTlmLi42MDAzMzJm
MTkwZmY4YjQwNDJjZDU0MmFiOTViNTA1MzZhZDdhNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNzQsNiArMjc0LDggQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRl
X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKICAgICBjYXNlIG9wX2xvZ19zaGFk
b3dfY2hpY2tlbl9wcm9sb2d1ZToKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWls
OgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgpAQCAtMzExLDYgKzMxMyw4IEBAIENhcGFiaWxp
dHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5l
ZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xp
bmU6CiAgICAgY2FzZSBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1
cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9jYWxsX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNl
IG9wX2NvbnN0cnVjdF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3Nf
c2xvd19yZXR1cm5fbG9jYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAppbmRleCAxYTRkZWNkYTBjMmQ3MzY4N2VmY2YzODhiODQ4MmZiMGVjNjQ3YzRm
Li5kYmM4MzFjMmViZTA4NmY4NzM2NmE3ZTU0YTM1ZTU5M2E5YjA3OGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI0MTEsNyArMjQxMSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6
IHsKLSAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JB
bGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCmlu
ZGV4IGJmNDM1MGM0Y2QxN2UzZDUwMDY2MzhmNTVhYWMzNWE1NjUyOTk0YTEuLmQ5Yzk3NDI4ZmQ2
YWU1ZWE1MDZkMDU3MjY3MzAyMGRkMWFmZjExNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBmb3JBbGxLaWxsZWRP
cGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwg
Y29uc3QKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihiZWZvcmVJbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBpZiAoYWZ0ZXIuYnl0ZWNv
ZGVJbmRleCgpLmNoZWNrcG9pbnQoKSkgewogICAgICAgICAgICAgQVNTRVJUKGJlZm9yZS5ieXRl
Y29kZUluZGV4KCkuY2hlY2twb2ludCgpICE9IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3Bv
aW50KCkpOwotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJ
bmRleCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSwgIldoZW4g
dGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNob3VsZCBjaGFuZ2UgdGhlIGZvckV4aXQgb3Jp
Z2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBieXRlY29kZXMuIik7CisgICAgICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0
ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBFeGl0T0sg
fHwgbm9kZUFmdGVyLT5vcCgpID09IEludmFsaWRhdGlvblBvaW50LCAiV2hlbiB0aGUgREZHIGRv
ZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0
Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKIAogICAgICAgICAgICAgYXV0byBsaXZl
QmVmb3JlID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGJlZm9yZS5ieXRl
Y29kZUluZGV4KCkpOwogICAgICAgICAgICAgYXV0byBsaXZlQWZ0ZXIgPSB0bXBMaXZlbmVzc0Zv
ckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpKTsKQEAgLTEwMiw4
ICsxMDIsNiBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNr
cG9pbnQoKSwgIlRyYW5zaXRpb25pbmcgYWNyb3NzIGEgY2hlY2twb2ludCBidXQgYmVmb3JlIGFu
ZCBhZnRlciBkb24ndCBzaGFyZSBhbiBpbmxpbmVDYWxsRnJhbWUuIik7Ci0KICAgICAvLyBEZXRl
Y3Qga2lsbHMgdGhlIHN1cGVyIGNvbnNlcnZhdGl2ZSB3YXk6IGl0IGlzIGtpbGxlZCBpZiBpdCB3
YXMgbGl2ZSBiZWZvcmUgYW5kIGRlYWQgYWZ0ZXIuCiAgICAgQml0VmVjdG9yIGxpdmVBZnRlciA9
IGdyYXBoLmxvY2Fsc0FuZFRtcHNMaXZlSW5CeXRlY29kZShhZnRlcik7CiAgICAgdW5zaWduZWQg
bnVtTG9jYWxzID0gZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAppbmRleCAyMDJkMjI1MDUzZmE5ZGZiZTVjMjNjNjRiY2Y4YmUzODRlM2U3
NjU0Li43Y2MzNGFlMmQwZDRlNWY4NDhlNjk1NzMwMjQ5MmMxMjFkNzFmZWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cApAQCAtNTksNiArNTksOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2lj
QmxvY2soQmFzaWNCbG9jayogYmFzaWNCbG9jaykKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZM
b2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJP
ZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fscygp
KTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygp
ID09IGJhc2ljQmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJU
KGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2Nr
LT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mVG1wcygpKTsKIAogICAgIG1fYWJzdHJhY3RWYWx1ZXMucmVzaXplKCk7CiAK
QEAgLTE2MSw2ICsxNjQsMTAgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6
ZSgpCiAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIo
KTsKICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigp
OwogICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+
dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0SGVhZC50bXAoaSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0VGFpbC50bXAoaSkuY2xlYXIoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsK
QEAgLTE3NSwxMyArMTgyLDkgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6
ZSgpCiAgICAgICAgIGJsb2NrLT5jZmFUaGlua3NTaG91bGRUcnlDb25zdGFudEZvbGRpbmcgPSBm
YWxzZTsKICAgICAgICAgYmxvY2stPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0
cnVjdHVyZXNBcmVXYXRjaGVkOwogICAgICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0
YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsK
LSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAg
ICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAg
ICAgfQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQu
bnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFk
LmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmxvY2Fs
KGkpLmNsZWFyKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVl
c0F0SGVhZC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZFtp
XS5jbGVhcigpOworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXS5jbGVhcigpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0yMzksNyArMjQyLDcgQEAgYm9vbCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAgICAgICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoK
ICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYmxvY2sg
dHJhbnNmZXJzIHRoZSB2YWx1ZSBmcm9tIGhlYWQgdG8gdGFpbC4KLSAgICAgICAgICAgICAgICBk
ZXN0aW5hdGlvbiA9IHZhcmlhYmxlQXQoaW5kZXgpOworICAgICAgICAgICAgICAgIGRlc3RpbmF0
aW9uID0gYXRJbmRleChpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCkBAIC0zMDQsNyArMzA3LDcgQEAgYm9vbCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRh
aWxbaV0gPSB2YXJpYWJsZUF0KGkpOworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtp
XSA9IGF0SW5kZXgoaSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKE5vZGVBYnN0cmFjdFZh
bHVlUGFpciYgdmFsdWVBdFRhaWwgOiBibG9jay0+c3NhLT52YWx1ZXNBdFRhaWwpCkBAIC0zNDMs
NiArMzQ2LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAi
LCBwb2ludGVyRHVtcChmcm9tKSwgIiB0byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAg
IEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+
dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52
YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mTG9jYWxzKCkpOworICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZUbXBzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSk7CiAgICAgCiAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgCkBAIC0zNTIsMTQgKzM1Niw5IEBAIGJvb2wg
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sq
IHRvKQogICAgIAogICAgIHN3aXRjaCAobV9ncmFwaC5tX2Zvcm0pIHsKICAgICBjYXNlIFRocmVh
ZGVkQ1BTOiB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBm
cm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewot
ICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGFyZ3VtZW50KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJs
ZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hcmd1bWVudChh
cmd1bWVudCksIHRvLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpLCBmcm9tLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpKTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgZm9yIChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZkxvY2FscygpOyArK2xvY2FsKSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZh
bHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQubG9jYWwobG9jYWwpOwotICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwg
ZnJvbS0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2FsKSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5sb2Nh
bChsb2NhbCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCkpOworICAgICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0
by0+dmFsdWVzQXRIZWFkLmF0KGluZGV4KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VW
YXJpYWJsZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hdChp
bmRleCksIHRvLT52YXJpYWJsZXNBdEhlYWQuYXQoaW5kZXgpLCBmcm9tLT52YXJpYWJsZXNBdFRh
aWwuYXQoaW5kZXgpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKaW5k
ZXggMTg2NWU2YTFlZmZjM2RhYWVmZTU4NGNhODYyYzQ5YmMzNjg1ODUwMC4uYzVkMDI2ODczZTAx
MGQwN2YzODExYzZjNGZlZjU2NmUxY2E3MGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaApAQCAtMTU4LDEwICsxNTgsMTIg
QEAgcHVibGljOgogICAgIAogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+JiB2YXJpYWJsZXNG
b3JEZWJ1Z2dpbmcoKTsKIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhYmxlcy5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mQXJndW1lbnRzKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mTG9j
YWxzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhYmxlcy5udW1iZXJPZlRtcHMoKTsgfQogICAgIAotICAgIEFic3RyYWN0VmFsdWUmIHZhcmlh
YmxlQXQoc2l6ZV90IGluZGV4KQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogICAgIHsKICAgICAgICAgYWN0aXZhdGVWYXJpYWJsZUlmTmVjZXNzYXJ5KGluZGV4KTsK
ICAgICAgICAgcmV0dXJuIGZhc3RGb3J3YXJkKG1fdmFyaWFibGVzW2luZGV4XSk7CkBAIC0xNjks
MTcgKzE3MSwxNyBAQCBwdWJsaWM6CiAKICAgICBBYnN0cmFjdFZhbHVlJiBvcGVyYW5kKE9wZXJh
bmQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVz
Lm9wZXJhbmRJbmRleChvcGVyYW5kKSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFi
bGVzLm9wZXJhbmRJbmRleChvcGVyYW5kKSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFs
dWUmIGxvY2FsKHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0
KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgo
bV92YXJpYWJsZXMubG9jYWxJbmRleChpbmRleCkpOwogICAgIH0KICAgICAKICAgICBBYnN0cmFj
dFZhbHVlJiBhcmd1bWVudChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gdmFy
aWFibGVBdChtX3ZhcmlhYmxlcy5hcmd1bWVudEluZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVy
biBhdEluZGV4KG1fdmFyaWFibGVzLmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKICAgICB9CiAgICAg
CiAgICAgLy8gQ2FsbCB0aGlzIGJlZm9yZSBiZWdpbm5pbmcgQ0ZBIHRvIGluaXRpYWxpemUgdGhl
IGFic3RyYWN0IHZhbHVlcyBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMYXp5SlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNW
YWx1ZS5oCmluZGV4IGY1ZWVmMmYzZGY3MjEyOWE4MzhjNzY4NmUyNmI5NjBiNTBmNTgxZWUuLjdh
MzM2NjZhYTcxYTFmNjY2Yzk0YjI4YjY0NDc0ODRkNjdiYmI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBMYXp5SlNWYWx1ZSBuZXdTdHJpbmcoR3JhcGgmLCBjb25zdCBTdHJpbmcmKTsK
IAogICAgIExhemluZXNzS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAg
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S25vd25WYWx1ZSA/IFNwZWNCeXRlY29kZVRvcCA6IFNwZWNTdHJpbmc7IH0KICAgICAKICAgICBG
cm96ZW5WYWx1ZSogdHJ5R2V0VmFsdWUoR3JhcGgmKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IGE4NTJkYmRkOWI5MzcwZDZkZTY1M2M1
YTQ4ODcxMTcwMGU4Yjg3OWIuLjUyMjM0YjRhNWQzZjY5NzZjMmZhOTk4MTZkY2UxMTA2ODEwNTRl
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtNDgsMTEg
KzQ4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotT1NSRXhpdDo6
T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKK09TUkV4aXQ6
Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgsIHVuc2lnbmVk
IGRmZ0lSSW5kZXgpCiAgICAgOiBPU1JFeGl0QmFzZShraW5kLCBqaXQtPm1fb3JpZ2luLmZvckV4
aXQsIGppdC0+bV9vcmlnaW4uc2VtYW50aWMsIGppdC0+bV9vcmlnaW4ud2FzSG9pc3RlZCkKICAg
ICAsIG1fanNWYWx1ZVNvdXJjZShqc1ZhbHVlU291cmNlKQogICAgICwgbV92YWx1ZVByb2ZpbGUo
dmFsdWVQcm9maWxlKQogICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCisgICAg
LCBtX2RmZ0lSSW5kZXgoZGZnSVJJbmRleCkKICAgICAsIG1fc3RyZWFtSW5kZXgoc3RyZWFtSW5k
ZXgpCiB7CiAgICAgYm9vbCBjYW5FeGl0ID0gaml0LT5tX29yaWdpbi5leGl0T0s7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4IDllOWJjZWE0ODFjMWQ2ODc3OTcyZjI1
OWQ2MmMxYTIzMDBiMmIxNjEuLjhjZThiOTIwNzlhZjc1Mjk5NzAzZjE3ZmRkYWUyZmVjM2I5YzI4
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCkBAIC0xNDYsNyArMTQ2
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZh
aWx1cmUoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQKIC8vIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJl
cyBob3cgdG8gZXhpdCB0aGUgc3BlY3VsYXRpdmUgcGF0aCBieQogLy8gZ29pbmcgaW50byBiYXNl
bGluZSBjb2RlLgogc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewotICAgIE9T
UkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292
ZXJ5SW5kZXggPSBVSU5UX01BWCk7CisgICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJj
ZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25l
ZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYLCB1bnNpZ25l
ZCBkZmdJUkluZGV4ID0gVUlOVF9NQVgpOwogCiAgICAgZnJpZW5kIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxsRnJhbWUqKTsKIApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsKICAgICBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIG1fdmFsdWVQcm9maWxlOwogICAgIAogICAgIHVuc2lnbmVkIG1f
cmVjb3ZlcnlJbmRleDsKKyAgICB1bnNpZ25lZCBtX2RmZ0lSSW5kZXg7CiAKICAgICBDb2RlTG9j
YXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwCmluZGV4IDFkZjM5NDMyNDFkNWFmNzkzMTk4ZWY5YzcxMjczZTc1OGEw
YTIyNmEuLjA4NWRjNTMwYjNiYzM3OWZiNGYzZTYwOTFjYjVjNjUyMDI3NTg3YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAKQEAgLTE1OSw5ICsxNTksMTUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICNkZWZp
bmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMTYo
KSA/IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUzMigpID8gTExJbnQ6OmdldFdpZGUz
MkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiBMTEludDo6
Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSkpCiAKICAg
ICAgICAgc3dpdGNoICh0cnVlQ2FsbGVyQ2FsbEtpbmQpIHsKLSAgICAgICAgY2FzZSBJbmxpbmVD
YWxsRnJhbWU6OkNhbGw6Ci0gICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX2NhbGwpOworICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogewor
ICAgICAgICAgICAgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2NhbGwpCisg
ICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxs
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9w
X2l0ZXJhdG9yX29wZW4pCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVS
Tl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVuKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxJ
bnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2l0ZXJhdG9yX25leHQpCisgICAgICAgICAgICAg
ICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZy
YW1lOjpDb25zdHJ1Y3Q6CiAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX2NvbnN0cnVjdCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIzOSw2ICsyNDUs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMo
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogICAgICAgICB9CiAgICAgfQogCisgICAgQVNT
RVJUKGp1bXBUYXJnZXQpOwogICAgIHJldHVybiBqdW1wVGFyZ2V0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDIxMDAzZWQ1ZmQzZmJjMzgxNjJjODkyYjM0Yzg0N2I5Mjc2ODNmYWUu
LjZlMDkwYTM4YmZjMDk0NzVhN2Q3YmQ1OTFlMjUxYTNlOTM0Njg1N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC0xMTAxLDYgKzExMDEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
Y3VycmVudE5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJl
ciB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorCisgICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6IHsKKyAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24obV9jdXJyZW50Tm9kZS0+bGF6eUpTVmFsdWUoKS5zcGVjdWxhdGVkVHlwZSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6
CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgICAgICBjYXNlIFRvU3Ry
aW5nOgpAQCAtMTMwNSw3ICsxMzExLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
OgogICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKLSAgICAgICAgY2FzZSBM
YXp5SlNDb25zdGFudDoKICAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICAvLyBU
aGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxh
dGlvbi4KICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCAiVW5l
eHBlY3RlZCBub2RlIGR1cmluZyBwcmVkaWN0aW9uIHByb3BhZ2F0aW9uIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IDBkNjVkOGY4OWFlYzNkNTk0MmQy
Y2Y4M2Q2Y2VkOGExYmZmMzk4Y2IuLjlhZTk4MDRjNzViOTVlYzU2MWVkMmYxYTUyYjlkZWM5OGM4
NDVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC03
MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRhdGFMb2dGKCIpID09ICglcyA9ICIs
ICNyaWdodCk7IFwKICAgICAgICAgICAgIGRhdGFMb2cocmlnaHQpOyBcCiAgICAgICAgICAgICBk
YXRhTG9nRigiKSAoJXM6JWQpLlxuIiwgX19GSUxFX18sIF9fTElORV9fKTsgXAorICAgICAgICAg
ICAgZGF0YUxvZygiXG5cblxuIik7IFwKKyAgICAgICAgICAgIG1fZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobnVsbHB0ciktPmR1bXBCeXRlY29kZSgpOyBcCiAgICAgICAgICAgICBkdW1wR3Jh
cGhJZkFwcHJvcHJpYXRlKCk7IFwKICAgICAgICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAjbGVmdCAiID09ICIg
I3JpZ2h0KTsgXAogICAgICAgICAgICAgQ1JBU0goKTsgXApAQCAtNTY4LDYgKzU3MCwxNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiBnZXRMb2NhbFBvc2l0aW9ucyhP
cGVyYW5kc0xpa2UsIGJsb2NrLT52YXJpYWJsZXNBdEhlYWQpOwogICAgICAgICAgICAgT3BlcmFu
ZHM8c2l6ZV90PiBzZXRMb2NhbFBvc2l0aW9ucyhPcGVyYW5kc0xpa2UsIGJsb2NrLT52YXJpYWJs
ZXNBdEhlYWQpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChPcGVyYW5kOjp0bXAoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJp
YWJsZXNBdEhlYWQudG1wKGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQudG1wKGkpLT5hY2Nl
c3Nlc1N0YWNrKG1fZ3JhcGgpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0g
PT0gVGhyZWFkZWRDUFMpCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChPcGVyYW5kOjp0
bXAoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdFRhaWwudG1wKGkpIHx8IGJsb2NrLT52
YXJpYWJsZXNBdFRhaWwudG1wKGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKKworICAgICAg
ICAgICAgICAgIGdldExvY2FsUG9zaXRpb25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAgICAg
ICAgICBzZXRMb2NhbFBvc2l0aW9ucy50bXAoaSkgPSBub3RTZXQ7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
bnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSwgYmxvY2spLCAhYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRIZWFkLmFy
Z3VtZW50KGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKICAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpCkBAIC03MTYsNiArNzI2LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gTG9hZFN0b3JlKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkg
eworICAgICAgICAgICAgICAgIGNoZWNrT3BlcmFuZCgKKyAgICAgICAgICAgICAgICAgICAgYmxv
Y2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRMb2NhbFBvc2l0aW9ucywgT3BlcmFuZDo6dG1wKGkp
KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewogICAgICAg
ICAgICAgICAgIGNoZWNrT3BlcmFuZCgKICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGdldExv
Y2FsUG9zaXRpb25zLCBzZXRMb2NhbFBvc2l0aW9ucywgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnRJbmNsdWRpbmdUaGlzKGkpKTsKQEAgLTk0NCw3ICs5NTksNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBjaGVja09wZXJhbmQoCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrLCBPcGVyYW5kczxz
aXplX3Q+JiBnZXRMb2NhbFBvc2l0aW9ucywKLSAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0
TG9jYWxQb3NpdGlvbnMsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgICAgICBPcGVyYW5k
czxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0aW9ucywgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAg
ICAgICAgaWYgKGdldExvY2FsUG9zaXRpb25zLm9wZXJhbmQob3BlcmFuZCkgPT0gbm90U2V0KQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpp
bmRleCA0YThiMWU1ODE0NDFmZGE2ODc2ZTY1MmM5ODQ2MDFhMmIzYjc5ZDM0Li45NGRlMzhjYjcx
Njc4YWQ4NmFiYWM2YjdjNjI4NzljMTZiMTBjODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgpAQCAtMTM3LDYgKzEzNyw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJH
ZXRCeUlkTWV0YWRhdGEuaCIKICNpbmNsdWRlICJHZXRCeVZhbEhpc3RvcnkuaCIKICNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2lu
Y2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQ
dXRCeUlkRmxhZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvTWV0YWRhdGEucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRh
LnJiCmluZGV4IDdjZDE1ZDMxNWQ2MzkwYWJhMjYzNWU5NjM1OWY4OTBlMmViNzFhOTUuLmMwNzc1
ZDhlMWIxMDUwMmRmMDFhNzRhZjBjNmRlYjRhODc1Y2M2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgpAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBNZXRh
ZGF0YQogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXRhZGF0YSk7CiAKICAgICBwdWJs
aWM6CisgICAgICAgICN7b3Aub3Bjb2RlSUR9CiAgICAgICAgIE1ldGFkYXRhKGNvbnN0ICN7b3Au
Y2FwaXRhbGl6ZWRfbmFtZX0mI3siIF9fb3AiIGlmIGluaXRzfSkje2luaXRzfSB7IH0KIAogI3tm
aWVsZHN9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rp
b24ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXgg
OWI1ZWU5MDk2ZWU3MWIxYjBkM2VkN2Y3Y2QxOGRiMDZmY2IzNWZjZi4uNmI1YTk0MmYwODIzOWE1
MmUwNjllODA5ZGEyNzdhNGVmOGU2Njk4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvU2VjdGlvbi5yYgpAQCAtNTMsNyArNTMsMTcgQEAgY2xhc3MgU2VjdGlvbgogICBlbmQK
IAogICBkZWYgc29ydCEKLSAgICAgIEBvcGNvZGVzID0gQG9wY29kZXMuc29ydCB7IHxhLCBifCBh
Lm1ldGFkYXRhLmVtcHR5PyA/IGIubWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEgOiAtMSB9CisgICAg
ICBAb3Bjb2RlcyA9IEBvcGNvZGVzLnNvcnQgeyB8YSwgYnwKKyAgICAgICAgICByZXN1bHQgPSBu
aWwKKyAgICAgICAgICBpZiBhLmNoZWNrcG9pbnRzIG9yIGIuY2hlY2twb2ludHMKKyAgICAgICAg
ICAgICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFk
YXRhOiAje2EubmFtZX0iIGlmIGEuY2hlY2twb2ludHMgYW5kIGEubWV0YWRhdGEuZW1wdHk/Cisg
ICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMgd2l0aCBjaGVja3BvaW50cyBzaG91bGQgaGF2
ZSBtZXRhZGF0YTogI3tiLm5hbWV9IiBpZiBiLmNoZWNrcG9pbnRzIGFuZCBiLm1ldGFkYXRhLmVt
cHR5PworICAgICAgICAgICAgICByZXN1bHQgPSBhLmNoZWNrcG9pbnRzID8gYi5jaGVja3BvaW50
cyA/IDAgOiAtMSA6IDEKKyAgICAgICAgICBlbHNpZgorICAgICAgICAgICAgICByZXN1bHQgPSBh
Lm1ldGFkYXRhLmVtcHR5PyA/IGIubWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEgOiAtMSAKKyAgICAg
ICAgICBlbmQKKyAgICAgICAgICByZXN1bHQKKyAgICAgIH0KICAgICAgIEBvcGNvZGVzLmVhY2go
JjpjcmVhdGVfaWQhKQogICBlbmQKIApAQCAtNzMsNiArODMsMTggQEAgY2xhc3MgU2VjdGlvbgog
ICAgICAgZW5kCiAKICAgICAgIGlmIGNvbmZpZ1s6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdCisgICAg
ICAgICAgaSA9IDAKKyAgICAgICAgICB3aGlsZSB0cnVlCisgICAgICAgICAgICAgIGlmICFvcGNv
ZGVzW2ldLmNoZWNrcG9pbnRzCisgICAgICAgICAgICAgICAgICBvdXQgPDwgIlxuIgorICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIE5VTUJFUl9PRl8je2NvbmZpZ1s6bWFjcm9fbmFt
ZV9jb21wb25lbnRdfV9XSVRIX0NIRUNLUE9JTlRTICN7aX1cbiIKKyAgICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgIGkgKz0gMQorICAgICAg
ICAgIGVuZAorICAgICAgICAgIG91dCA8PCAiXG4iCisKICAgICAgICAgICBvdXQud3JpdGUoIiNk
ZWZpbmUgRk9SX0VBQ0hfI3tjb25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFf
U0laRShtYWNybykgXFxcbiIpCiAgICAgICAgICAgaSA9IDAKICAgICAgICAgICB3aGlsZSB0cnVl
CkBAIC04Nyw2ICsxMDksOCBAQCBjbGFzcyBTZWN0aW9uCiAgICAgICAgICAgZW5kCiAgICAgICAg
ICAgb3V0IDw8ICJcbiIKIAorCisKICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VB
Q0hfI3tjb25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFfQUxJR05NRU5UKG1h
Y3JvKSBcXFxuIikKICAgICAgICAgICBpID0gMAogICAgICAgICAgIHdoaWxlIHRydWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggNjQ1
MzkxMjdiOGM3NGM4MjAyOWIyYmI2MTgwZTY5Njk3MWE2NGJjOC4uM2ZmOTJiNDUzYTcyOTI2ZGM3
NGVjYmRjZjZlMzE0YmNmYjM2OGUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTQzLDEzOSArNDMsMTM5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0gICAgY2xhc3MgQ29kZUJsb2NrOwotICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxl
OwotICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBWTTsKLSAgICBjbGFz
cyBKU0Z1bmN0aW9uOwotICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIEpTTW9k
dWxlRW52aXJvbm1lbnQ7Ci0gICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7Ci0gICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwotICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwotICAgIGNs
YXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwotICAgIGNsYXNzIFJlZ2lzdGVyOwotICAgIGNs
YXNzIEpTU2NvcGU7Ci0gICAgY2xhc3MgU291cmNlQ29kZTsKLSAgICBjbGFzcyBTdGFja0ZyYW1l
OwotICAgIHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJlOwotICAgIHN0cnVjdCBIYW5kbGVySW5mbzsK
LSAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci0gICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOwotCi0g
ICAgZW51bSBEZWJ1Z0hvb2tUeXBlIHsKLSAgICAgICAgV2lsbEV4ZWN1dGVQcm9ncmFtLAotICAg
ICAgICBEaWRFeGVjdXRlUHJvZ3JhbSwKLSAgICAgICAgRGlkRW50ZXJDYWxsRnJhbWUsCi0gICAg
ICAgIERpZFJlYWNoRGVidWdnZXJTdGF0ZW1lbnQsCi0gICAgICAgIFdpbGxMZWF2ZUNhbGxGcmFt
ZSwKLSAgICAgICAgV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsCi0gICAgICAgIFdpbGxFeGVjdXRlRXhw
cmVzc2lvbiwKLSAgICB9OwotCi0gICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgewotICAgICAg
ICBTdGFja0ZyYW1lR2xvYmFsQ29kZSwKLSAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAotICAg
ICAgICBTdGFja0ZyYW1lTW9kdWxlQ29kZSwKLSAgICAgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29k
ZSwKLSAgICAgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKLSAgICB9OwotCi0gICAgY2xhc3MgSW50
ZXJwcmV0ZXIgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZENhbGw7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBWTTsKLQotICAgIHB1YmxpYzoKLSAgICAgICAgSW50ZXJwcmV0ZXIoVk0gJik7Ci0gICAgICAg
IH5JbnRlcnByZXRlcigpOwotICAgICAgICAKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEV2YWxF
eGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CitjbGFzcyBK
U0Z1bmN0aW9uOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBKU01vZHVsZUVudmlyb25t
ZW50OworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CitjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OworY2xhc3MgUmVnaXN0ZXI7CitjbGFzcyBKU1Njb3BlOworY2xhc3MgU291cmNlQ29kZTsKK2Ns
YXNzIFN0YWNrRnJhbWU7CitzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZTsKK3N0cnVjdCBIYW5kbGVy
SW5mbzsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBQcm90b0NhbGxGcmFtZTsKKworZW51
bSBEZWJ1Z0hvb2tUeXBlIHsKKyAgICBXaWxsRXhlY3V0ZVByb2dyYW0sCisgICAgRGlkRXhlY3V0
ZVByb2dyYW0sCisgICAgRGlkRW50ZXJDYWxsRnJhbWUsCisgICAgRGlkUmVhY2hEZWJ1Z2dlclN0
YXRlbWVudCwKKyAgICBXaWxsTGVhdmVDYWxsRnJhbWUsCisgICAgV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsCisgICAgV2lsbEV4ZWN1dGVFeHByZXNzaW9uLAorfTsKKworZW51bSBTdGFja0ZyYW1lQ29k
ZVR5cGUgeworICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAorICAgIFN0YWNrRnJhbWVFdmFsQ29k
ZSwKKyAgICBTdGFja0ZyYW1lTW9kdWxlQ29kZSwKKyAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2Rl
LAorICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCit9OworCitjbGFzcyBJbnRlcnByZXRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7
CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICBmcmllbmQgY2xh
c3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBWTTsKKworcHVibGljOgorICAgIEludGVycHJldGVy
KFZNICYpOworICAgIH5JbnRlcnByZXRlcigpOworICAgIAogI2lmIEVOQUJMRShDX0xPT1ApCi0g
ICAgICAgIENMb29wU3RhY2smIGNsb29wU3RhY2soKSB7IHJldHVybiBtX2Nsb29wU3RhY2s7IH0K
KyAgICBDTG9vcFN0YWNrJiBjbG9vcFN0YWNrKCkgeyByZXR1cm4gbV9jbG9vcFN0YWNrOyB9CiAj
ZW5kaWYKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShP
cGNvZGVJRCk7CisgICAgCisgICAgc3RhdGljIGlubGluZSBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29k
ZUlEKTsKIAotICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29k
ZSk7CisgICAgc3RhdGljIGlubGluZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOwogCiAj
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgc3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsK
KyAgICBzdGF0aWMgYm9vbCBpc09wY29kZShPcGNvZGUpOwogI2VuZGlmCiAKLSAgICAgICAgSlNW
YWx1ZSBleGVjdXRlUHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiwgSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogdGhpc09iaik7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVsZVByb2dyYW0o
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJv
bm1lbnQqKTsKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKLSAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1
Y3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNv
bnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwot
ICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKik7Ci0KLSAgICAgICAgdm9pZCBnZXRBcmd1bWVu
dHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRl
ckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7Ci0KLSAgICAgICAgTkVWRVJfSU5M
SU5FIEhhbmRsZXJJbmZvKiB1bndpbmQoVk0mLCBDYWxsRnJhbWUqJiwgRXhjZXB0aW9uKik7Ci0g
ICAgICAgIHZvaWQgbm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSosIEV4Y2VwdGlvbiopOwotICAgICAgICBORVZFUl9JTkxJ
TkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tUeXBlKTsKLSAgICAgICAgc3RhdGlj
IFN0cmluZyBzdGFja1RyYWNlQXNTdHJpbmcoVk0mLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4m
KTsKLQotICAgICAgICB2b2lkIGdldFN0YWNrVHJhY2UoSlNDZWxsKiBvd25lciwgVmVjdG9yPFN0
YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gMCwgc2l6ZV90IG1heFN0
YWNrU2l6ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgZW51bSBFeGVjdXRpb25GbGFnIHsgTm9ybWFsLCBJbml0aWFsaXplQW5k
UmV0dXJuIH07Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgSlNWYWx1ZSBjaGVja2VkUmV0dXJu
KEpTVmFsdWUgcmV0dXJuVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXR1
cm5WYWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHN0YXRpYyBKU09iamVjdCogY2hlY2tlZFJldHVybihKU09iamVjdCog
cmV0dXJuVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXR1cm5WYWx1ZSk7
Ci0gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBD
YWxsRnJhbWVDbG9zdXJlIHByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSos
IENhbGxGcmFtZSosIFByb3RvQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgSlNTY29wZSosIGNvbnN0IEFyZ0xpc3QmKTsKLQotICAgICAgICBK
U1ZhbHVlIGV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3VyZSYpOwotCi0gICAgICAgIFZNJiBtX3ZtOwor
ICAgIEpTVmFsdWUgZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIHRoaXNPYmopOworICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVsZVByb2dy
YW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52
aXJvbm1lbnQqKTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBD
b25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKKyAgICBK
U1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
dGhpc1ZhbHVlLCBKU1Njb3BlKik7CisKKyAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZy
YW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lz
dGVyKiYgYXJndiwgaW50JiBhcmdjKTsKKworICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyog
dW53aW5kKFZNJiwgQ2FsbEZyYW1lKiYsIEV4Y2VwdGlvbiopOworICAgIHZvaWQgbm90aWZ5RGVi
dWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oVk0mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSosIEV4Y2VwdGlvbiopOworICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSos
IERlYnVnSG9va1R5cGUpOworICAgIHN0YXRpYyBTdHJpbmcgc3RhY2tUcmFjZUFzU3RyaW5nKFZN
JiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7CisKKyAgICB2b2lkIGdldFN0YWNrVHJhY2Uo
SlNDZWxsKiBvd25lciwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgZnJhbWVz
VG9Ta2lwID0gMCwgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOworCitwcml2YXRlOgorICAgIGVudW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1h
bCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OworICAgIAorICAgIHN0YXRpYyBKU1ZhbHVlIGNoZWNr
ZWRSZXR1cm4oSlNWYWx1ZSByZXR1cm5WYWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXR1
cm5WYWx1ZSk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisgICAgCisgICAg
c3RhdGljIEpTT2JqZWN0KiBjaGVja2VkUmV0dXJuKEpTT2JqZWN0KiByZXR1cm5WYWx1ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChyZXR1cm5WYWx1ZSk7CisgICAgICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKKyAgICB9CisKKyAgICBDYWxsRnJhbWVDbG9zdXJlIHByZXBhcmVGb3JSZXBlYXRDYWxs
KEZ1bmN0aW9uRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFByb3RvQ2FsbEZyYW1lKiwgSlNGdW5j
dGlvbiosIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSlNTY29wZSosIGNvbnN0IEFy
Z0xpc3QmKTsKKworICAgIEpTVmFsdWUgZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJik7CisKKyAg
ICBWTSYgbV92bTsKICNpZiBFTkFCTEUoQ19MT09QKQotICAgICAgICBDTG9vcFN0YWNrIG1fY2xv
b3BTdGFjazsKKyAgICBDTG9vcFN0YWNrIG1fY2xvb3BTdGFjazsKICNlbmRpZgotICAgICAgICAK
KyAgICAKICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogI2lmICFFTkFCTEUoTExJ
TlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCBBU1NFUlRfRU5BQkxFRAotICAgICAgICBzdGF0aWMg
SGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiYgb3Bjb2RlSURUYWJsZSgpOyAvLyBNYXBzIE9wY29k
ZSA9PiBPcGNvZGVJRC4KKyAgICBzdGF0aWMgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiYgb3Bj
b2RlSURUYWJsZSgpOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRC4KICNlbmRpZiAvLyAhRU5B
QkxFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKICNlbmRpZiAv
LyBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQotICAgIH07Ci0KLSAgICBKU1ZhbHVlIGV2
YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7Ci0KLSAgICBpbmxpbmUg
Q2FsbEZyYW1lKiBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVu
c2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykKLSAgICB7Ci0gICAgICAgIC8vIFdlIHdhbnQgdGhlIG5ldyBmcmFtZSB0byBiZSBhbGxv
Y2F0ZWQgb24gYSBzdGFjayBhbGlnbmVkIG9mZnNldCB3aXRoIGEgc3RhY2sKLSAgICAgICAgLy8g
YWxpZ25lZCBzaXplLiBBbGlnbiB0aGUgc2l6ZSBoZXJlLgotICAgICAgICBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKLSAgICAgICAgICAgIHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAtIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotCi0gICAgICAgIC8vIEFsaWduIHRoZSBmcmFtZSBvZmZz
ZXQgaGVyZS4KLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2YoCi0gICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpLAotICAgICAgICAgICAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKLSAgICAgICAgcmV0
dXJuIENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxs
ZWVGcmFtZU9mZnNldCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAweDEwMDAw
OwotICAgIHVuc2lnbmVkIHNpemVGcmFtZUZvclZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqLCBWTSYsIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90
cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHVuc2lnbmVkIHNpemVGcmFtZUZv
ckZvcndhcmRBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTSYsIHVuc2ln
bmVkIG51bVVzZWRTdGFja1Nsb3RzKTsKLSAgICB2b2lkIGxvYWRWYXJhcmdzKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSogZmlyc3RFbGVtZW50RGVzdCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQzMl90
IG9mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKLSAgICB2b2lkIHNldHVwVmFyYXJnc0ZyYW1lKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMy
X3QgbGVuZ3RoKTsKLSAgICB2b2lkIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwotICAgIHZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRz
RnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSog
ZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3RoKTsKLSAgICB2b2lkIHNldHVwRm9yd2FyZEFyZ3Vt
ZW50c0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxl
ciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdWludDMyX3QgbGVu
Z3RoKTsKK307CisKK0pTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVD
TUFNb2RlKTsKKworaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxG
cmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCit7CisgICAgLy8gV2Ugd2FudCB0aGUgbmV3IGZyYW1l
IHRvIGJlIGFsbG9jYXRlZCBvbiBhIHN0YWNrIGFsaWduZWQgb2Zmc2V0IHdpdGggYSBzdGFjawor
ICAgIC8vIGFsaWduZWQgc2l6ZS4gQWxpZ24gdGhlIHNpemUgaGVyZS4KKyAgICBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKKyAgICAgICAgc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKKyAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykgLSBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVyczsKKworICAgIC8vIEFsaWduIHRoZSBmcmFtZSBvZmZzZXQgaGVyZS4K
KyAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZigKKyAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKKyAgICAgICAgbnVt
VXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUoY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKK30KKwordW5z
aWduZWQgc2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYXJndW1lbnRzLCB1
aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1h
eEFyZ3VtZW50cyA9IDB4MTAwMDA7Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQg
bnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKK3Vuc2lnbmVk
IHNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBWTSYsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzKTsKK3ZvaWQgbG9hZFZhcmFyZ3MoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBmaXJzdEVsZW1lbnREZXN0LCBKU1ZhbHVlIHNvdXJjZSwg
dWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwordm9pZCBzZXR1cFZhcmFyZ3NGcmFt
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVj
Q2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVp
bnQzMl90IGxlbmd0aCk7Cit2b2lkIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwordm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFt
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVj
Q2FsbGVlLCB1aW50MzJfdCBsZW5ndGgpOwordm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFt
ZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxG
cmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IGM2ZTYxYjg5YmY5YTFhMTk1YzNlODM4NjRjMWNhMTc4NDA4YTViMGYuLjhiM2EyMzhhNGRhZjFm
YzY3OTE0MGQ4YmJlYzc3MDliODU2OGJiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIG1fbGFiZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKV0gPSBsYWJlbCgpOwogCiAg
ICAgICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigi
T2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0
ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGlu
ZSBKSVQgZW1pdHRpbmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAi
LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKIAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtNDM4LDYgKzQzOCw5IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9p
bnRlcm5hbF9maWVsZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9pbnRlcm5hbF9maWVsZCkK
IAorICAgICAgICBERUZJTkVfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5FX09Q
KG9wX2l0ZXJhdG9yX25leHQpCisKICAgICAgICAgREVGSU5FX09QKG9wX3JldCkKICAgICAgICAg
REVGSU5FX09QKG9wX3JzaGlmdCkKICAgICAgICAgREVGSU5FX09QKG9wX3Vuc2lnbmVkKQpAQCAt
NTI1LDcgKzUyOCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgICAgICByYXJlQ2FzZVByb2ZpbGUgPSAmcmFyZUNhc2VQcm9maWxlcy5hdChieXRlY29kZUNv
dW50SGF2aW5nU2xvd0Nhc2UpOwogCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2dMbigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIs
IG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9y
ICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7
CiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9kaXNhc3NlbWJs
ZXItPnNldEZvckJ5dGVjb2RlU2xvd1BhdGgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBsYWJl
bCgpKTsKQEAgLTU4OSw2ICs1OTIsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfdG9fc2NvcGUpCiAKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9pdGVyYXRvcl9uZXh0KQorCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHVu
c2lnbmVkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChpbmMpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9TTE9XX09QKGRlYykKQEAgLTYyNiw4ICs2MzIsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJBdCAiLCBmaXJzdFRvLCAiIHNsb3c6ICIsIGl0ZXIg
LSBtX3Nsb3dDYXNlcy5iZWdpbigpLCAiXG4iKTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvICE9IGl0ZXIt
PnRvLCAiTm90IGVub3VnaCBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvID09IChpdGVyIC0gMSkt
PnRvLCAiVG9vIG1hbnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQo
KSB8fCBmaXJzdFRvLm9mZnNldCgpICE9IGl0ZXItPnRvLm9mZnNldCgpLCAiTm90IGVub3VnaCBq
dW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvLm9mZnNldCgpID09IChpdGVyIC0gMSktPnRvLm9mZnNl
dCgpLCAiVG9vIG1hbnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGFk
ZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKCZyYXJlQ2FzZVByb2ZpbGUtPm1f
Y291bnRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzA3MzU1YzZkNzExODJhYTA3
MjlhMjc0OTEwMDRmNDVlMWVhNmFjMS4uODNhZTFhN2I2OThkNjkzM2RiYjhhMDM3MTkwNDllYzIy
NTgxOGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yOTcsNiArMjk3LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRs
ZXJzKCk7CiAKKyAgICAgICAgdm9pZCBjaGVja3BvaW50UmVhY2hlZCgpOworICAgICAgICB2b2lk
IGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKKwogICAgICAgICB2b2lkIGFk
ZFNsb3dDYXNlKEp1bXApOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKGNvbnN0IEp1bXBMaXN0
Jik7CiAgICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoKTsKQEAgLTY3Niw2ICs2NzksMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rp
b24pOwogCisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworCiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRS
aWdodFNoaWZ0U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIApAQCAtOTExLDYgKzkxOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOwogICAg
ICAgICBWZWN0b3I8TGFiZWw+IG1fbGFiZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5k
ZXgsIExhYmVsPiBtX2NoZWNrcG9pbnRMYWJlbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlk
R2VuZXJhdG9yPiBtX2dldEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlWYWxHZW5lcmF0
b3I+IG1fZ2V0QnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cAppbmRleCBlMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNiMjBiODY2Li4wOTFlZTkz
ODUzMDVkMzc5N2MyYWRlYjZhMzYxMGJlMDM1OWIxMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBVU0UoSlNWQUxVRTY0KQogI2lu
Y2x1ZGUgIkpJVC5oIgogCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCisjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVm
Zmxlci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIK
QEAgLTQyLDggKzQ0LDggQEAKICNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgogI2luY2x1
ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCi0jaW5j
bHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUxLDcgKzUzLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6ZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmIGJ5
dGVjb2RlKQogewogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBt
X2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKSwgcmVnVDApOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTYxLDIwICs2MywyMSBAQCBzdGQ6OmVuYWJs
ZV9pZl90PAogLCB2b2lkPgogSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNv
ZGUsIENhbGxMaW5rSW5mbyopCiB7CisgICAgdW5zaWduZWQgY2hlY2twb2ludCA9IG1fYnl0ZWNv
ZGVJbmRleC5jaGVja3BvaW50KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgaW50IGFyZ0NvdW50ID0gYnl0ZWNvZGUubV9hcmdjOwot
ICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJn
dik7CisgICAgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50KTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSAtc3RhdGljX2Nhc3Q8aW50PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29k
ZSwgY2hlY2twb2ludCkpOwogCiAgICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKFZp
cnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJ
bmNsdWRpbmdUaGlzKDApKSwgcmVnVDApOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5v
dENlbGwocmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRhZGF0
YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVy
ZUlEKCkpOworICAgICAgICBzdG9yZTMyKHJlZ1QwLCBhcnJheVByb2ZpbGVGb3IobWV0YWRhdGEs
IGNoZWNrcG9pbnQpLmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgIGRv
bmUubGluayh0aGlzKTsKICAgICB9CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVy
T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNh
bGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzKSwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9h
ZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogfQogCiAKQEAgLTIwNyw3ICsy
MTAsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogewogICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gT3A6Om9wY29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+
KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2FsbGVlOworICAg
IFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpOwogCiAgICAgLyogQ2FsbGVyIGFsd2F5czoKICAgICAgICAgLSBV
cGRhdGVzIGNhbGxGcmFtZVJlZ2lzdGVyIHRvIGNhbGxlZSBjYWxsRnJhbWUuCkBAIC0yMzQsOSAr
MjM3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAgICAgc3RvcmU2NChy
ZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogCi0gICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpIHsKKyAgICBp
ZiAoY29tcGlsZUNhbGxFdmFsKGJ5dGVjb2RlKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIERhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIEp1bXAg
c2xvd0Nhc2UgPSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZM
aW5rZWRGdW5jdGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKQEAgLTM4MCw2ICsz
ODIsMTg0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgY29tcGlsZU9wQ2FsbFNsb3dD
YXNlPE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZv
SW5kZXgrKyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlv
bi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAo
KSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkpIHsKKyAgICAgICAgY2Fz
ZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PE5hcnJvdz47CisgICAgICAg
IGNhc2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+OworICAg
ICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTMyPjsK
KyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQorICAgIH0pKCk7CisgICAgc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9u
KT4oaW5zdHJ1Y3Rpb24sICZtZXRhZGF0YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayh0cnlGYXN0RnVuY3Rpb24pOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RF
cXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBjb21waWxlT3BDYWxs
PE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAg
ICBjaGVja3BvaW50UmVhY2hlZCgpOworICAgIC8vIGNhbGwgcmVzdWx0IChpdGVyYXRvcikgaXMg
aW4gcmVnVDAKKworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJnZtKCkucHJvcGVydHlO
YW1lcy0+bmV4dDsKKyAgICAKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAp
OworCisgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9n
ZXRCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fbmV4dCk7CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck9w
ZW4+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisKKyAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRv
ck9wZW4+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIG5leHRWUmVnID0gYnl0ZWNvZGUubV9uZXh0
OworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4
dC5pbXBsKCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21f
Z2V0QnlJZEluZGV4KytdOworICAgIAorICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9
IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAg
ICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+Owor
ICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTE2
PjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdp
ZGUzMj47CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9KSgpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX25leHQsIHJlZ1QwKTsKKyAgICBKdW1wIGdlbmVyaWNDYXNlID0gYnJhbmNoSWZOb3RFbXB0
eShyZWdUMCk7CisgICAgc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9uKT4o
aW5zdHJ1Y3Rpb24sICZtZXRhZGF0YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayh0cnlGYXN0RnVuY3Rpb24pOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVh
bCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBnZW5lcmljQ2FzZS5saW5r
KHRoaXMpOworICAgIG9yOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oSXRlcmF0
aW9uTW9kZTo6R2VuZXJpYykpLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1faXRlcmF0aW9u
TWV0YWRhdGEuc2Vlbk1vZGVzKSk7CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yTmV4dD4o
aW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNo
ZWQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoeyBkb25lLCB2YWx1ZSB9IEpTT2JqZWN0KSBpbiBy
ZWdUMAorCisgICAgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIGl0ZXJSZXN1
bHRHUFIgPSByZWdUMjsKKyAgICBHUFJSZWcgZG9uZUdQUiA9IHJlZ1QxOworICAgIC8vIGl0ZXJS
ZXN1bHRHUFIgd2lsbCBnZXQgdHJhc2hlZCBieSB0aGUgZmlyc3QgZ2V0IGJ5IGlkIGJlbG93Lgor
ICAgIG1vdmUodmFsdWVHUFIsIGl0ZXJSZXN1bHRHUFIpOworCisgICAgeworICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoaXRlclJlc3VsdEdQUik7CisKKyAgICAgICAgUmVnaXN0
ZXJTZXQgcHJlc2VydmVkUmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKTsKKyAgICAgICAgcHJlc2VydmVkUmVncy5hZGQodmFsdWVHUFIpOworICAgICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVz
LT5uZXh0LmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhk
b25lR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKG1ldGFkYXRhKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RvbmUsIGRvbmVHUFIpOworICAgICAgICBjaGVja3BvaW50UmVhY2hlZCgpOworICAgIH0K
KworCisgICAgeworICAgICAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKKyAgICAgICAgR1BS
UmVnIHNjcmF0Y2gyID0gcmVnVDM7CisgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gZmFsc2U7CisgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRv
bmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEs
IHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CisKKyAgICAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQ
UiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUdQUik7CisKKyAgICAgICAgaXRlcmF0
aW9uRG9uZS5saW5rKHRoaXMpOworICAgIH0KKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxP
cEl0ZXJhdG9yTmV4dD4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICBhdXRv
IGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIHsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRvbmVWUmVnID0gYnl0ZWNvZGUubV9kb25lOworICAgICAg
ICBHUFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QyOworCisgICAgICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CisgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKKyAgICAgICAgbm90T2JqZWN0
LmFwcGVuZChicmFuY2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikpOworICAgICAgICBub3RPYmpl
Y3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKKworICAgICAgICBV
bmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgp
OworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJ
ZEluZGV4KytdOworICAgICAgICAKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25l
VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGRvbmVWUmVnLCByZWdUMSk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV92YWx1ZSwgcmVnVDApOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZv
ckNoZWNrcG9pbnQoanVtcCgpKTsKKworICAgICAgICBub3RPYmplY3QubGluayh0aGlzKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmpl
Y3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQor
CisgICAgeyAgIAorICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmFsdWVWUmVnID0gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgR1BSUmVn
IGl0ZXJSZXN1bHRHUFIgPSByZWdUMDsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRl
bnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgICAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3
Qml0cygpKTsKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworICAgIH0KKworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
aW5kZXggOTA2OTZjYmVjMTBlMzkzYjk5NzBmMGViMjAxMThkMjE5NzRjMzUyNS4uZDE0MGFhYzli
ZTJkNTQwM2QxYmMwZDk5MTJhZTllMTA1ZjgwZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMzY2LDYgKzM2NiwyNiBAQCB2b2lkIEpJVDo6Y29t
cGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRQogICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklU
OjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3
NTY1NTMzZjQuLjI3YTU3ZjRlZTM2MTY0YWNlOGUzOWYzNjhjZTc2NWJmMTVkZGZjN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yNiw3ICsyNiw5IEBACiAjcHJh
Z21hIG9uY2UKIAogI2lmIEVOQUJMRShKSVQpCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9y
LmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDUsNyAr
MTA3LDcgQEAgQUxXQVlTX0lOTElORSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWRUYWlsQ2FsbChD
b2RlUHRyPE5vUHRyVGFnPiB0YXJnZXQpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OnVwZGF0
ZVRvcENhbGxGcmFtZSgpCiB7Ci0gICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLmJpdHMoKTsKKyAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMg
PSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkuYml0cygpOwogICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIAogICAgIC8vIEZJWE1FOiBJdCdzIG5v
dCBjbGVhciB0aGF0IHRoaXMgaXMgbmVlZGVkLiBKSVRPcGVyYXRpb25zIHRlbmQgdG8gdXBkYXRl
IHRoZSB0b3AgY2FsbCBmcmFtZSBvbgpAQCAtMTgzLDYgKzE4NSwyNSBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgSklUOjpoYXNBbnlTbG93Q2FzZXMoVmVjdG9yPFNsb3dDYXNlRW50cnk+JiBzbG93Q2Fz
ZXMsIFZlY3RvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgSklUOjpjaGVj
a3BvaW50UmVhY2hlZCgpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5k
ZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBh
dGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9i
eXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1f
Ynl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9j
aGVja3BvaW50TGFiZWxzLmFkZChtX2J5dGVjb2RlSW5kZXgsIGxhYmVsKCkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpJ
VDo6ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXAganVtcCkKK3sKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0
ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSAr
IDEpOworCisgICAgYXV0byBpdGVyID0gbV9jaGVja3BvaW50TGFiZWxzLmZpbmQobV9ieXRlY29k
ZUluZGV4KTsKKyAgICBBU1NFUlQoaXRlciAhPSBtX2NoZWNrcG9pbnRMYWJlbHMuZW5kKCkpOwor
ICAgIGp1bXAubGlua1RvKGl0ZXItPnZhbHVlLCB0aGlzKTsKK30KKwogQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6YWRkU2xvd0Nhc2UoSnVtcCBqdW1wKQogewogICAgIEFTU0VSVChtX2J5dGVjb2Rl
SW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9j
b2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0LgpAQCAt
MzE5LDcgKzM0MCw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShN
ZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgaWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLm1fcHJv
ZmlsZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh2YWx1ZVByb2ZpbGVGb3IobWV0YWRh
dGEsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpKTsKIH0KIAogaW5saW5lIHZvaWQgSklU
OjplbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3Rl
cklEIGluZGV4aW5nVHlwZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA3YWUxNTBjYzY2MTA3NjJi
YWNjOGJlNDIyMDczYWFkNjRhYjMxMTkxLi5hNWUyYTI0N2NmMTU0ZGE0NmViMzNkZmJiZjBlMzM2
MGQzNmY1NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTEzNCw2ICsxMzQsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBBU1NF
UlQodm0udGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpOworfQorCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IDhlZmI1YjVhYzk4MGFlZTZjNTUyMzQ0MzdjOTAyODk1ODkwMjI2NjUuLjlm
Y2M0MWRlYzQ1ODJjOTY1MjkyMzY1NWRhOGYzMDI2OTVkZjcwMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoVk0qKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZy
b21DYWxsZXJGcmFtZShWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WTUhhbmRsZUV4Y2VwdGlvbihWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9i
amVjdCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0l0
ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CiAK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDb2Rl
QmxvY2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4ZGVhN2YyNzhlNzY2
MmU1MDMxNGNlYjliMDgzMzlmODdiZmRhNDk3Li44YmIxOGMyMWY0MmE5ZjU3Y2RjMDUzZmRkZThj
NDUwMWQ0OGUzYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
UHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNoZWNrcG9p
bnRPU1JFeGl0U2lkZVN0YXRlLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5o
IgpAQCAtODIsNiArODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KTsgXAogICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsgXAogICAgIFNsb3dQYXRoRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCisgICAgZGF0YUxvZ0xuSWYoTExJTlRfVFJB
Q0lORyAmJiBPcHRpb25zOjp0cmFjZUxMSW50U2xvd1BhdGgoKSwgIkNhbGxpbmcgc2xvdyBwYXRo
ICIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOyBcCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBOREVCVUcKQEAgLTY5Myw3ICs2OTUsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKIH0KIAogCi1z
dGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
biogcGMsIE9wR2V0QnlJZDo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorc3RhdGljIHZvaWQg
c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBHZXRC
eUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90
JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogCkBAIC03NDEsNDQgKzc0MywzOSBAQCBz
dGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIENvZAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgIGlmIChzbG90LmlzVW5zZXQoKSkK
LSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0VW5zZXRNb2RlKHN0cnVjdHVyZSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBv
ZmZzZXQsIHNsb3Quc2xvdEJhc2UoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRQcm90b0xv
YWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiB9CiAKLQotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZv
cm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAg
ICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeUlkPigp
OwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5n
ZXQoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7Ci0gICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZHN0KSA9IHJlc3VsdDsK
LSAgICAKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKICAgICBp
ZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVwogICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxs
KCkKICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCiAgICAgICAgICYmICFzbG90LmlzVW5z
ZXQoKSkgewogICAgICAgICB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJ
RDsKLSAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSkgewor
ICAgICAgICAgICAgc3dpdGNoIChtZXRhZGF0YS5tb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEdl
dEJ5SWRNb2RlOjpEZWZhdWx0OgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlVu
c2V0OgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVy
ZUlEID0gbWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOgotICAgICAgICAg
ICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2Fk
TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gMDsK
QEAgLTc5OSwzNSArNzk2LDEwOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0
X2J5X2lkKQogICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09
IGJhc2VWYWx1ZSkgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0
IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5jbGVh
clRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmNsZWFy
VG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwogCiAgICAgICAgICAgICAvLyBQcmV2ZW50IHRo
ZSBwcm90b3R5cGUgY2FjaGUgZnJvbSBldmVyIGhhcHBlbmluZy4KLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYg
IXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7Ci0gICAgICAgICAg
ICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBz
dHJ1Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQo
KTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFko
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgc2xvdC5p
c1ZhbHVlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEuaGl0Q291
bnRGb3JMTEludENhY2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NF
UlQoc2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSk7CiAKLSAgICAgICAgICAgIGlmICghKC0t
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQorICAgICAg
ICAgICAgaWYgKCEoLS1tZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCiAgICAgICAg
ICAgICAgICAgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoZ2xvYmFsT2JqZWN0LCB2bSwgY29k
ZUJsb2NrLCBwYywgbWV0YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVudCk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgaXNKU0FycmF5KGJh
c2VWYWx1ZSkgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhN
b2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1v
ZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUodm0pKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwor
ICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZl
U3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgIH0K
ICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICB9CiAKLSAgICBM
TElOVF9QUk9GSUxFX1ZBTFVFKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeUlkPigpOworICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX2Jhc2UpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBj
LCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQpOworfQorCitM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25l
eHQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25l
eHQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNs
b3cgb3Blbl9nZXRfbmV4dCIpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJh
dG9yT3Blbj4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2l0ZXJhdG9yKTsKKyAgICBSZWdpc3RlciYgbmV4dFJlZ2lzdGVyID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBl
cmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwg
dm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0
X2dldF9kb25lIik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0
PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
KyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUg
c2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29p
bmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgUmVnaXN0ZXImIGRvbmVS
ZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworCisgICAg
aWYgKCFpdGVyYXRvclJldHVybi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiJfcykpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRH
ZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnBy
b3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZG9uZVJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgbmV4
dF9nZXRfdmFsdWUiKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5l
eHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
OworICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1
ZSB0bXAgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0
J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVy
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIEpTVmFsdWUg
aXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKKworICAgIEpTVmFsdWUg
cmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1
ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgdmFsdWVS
ZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fdmFs
dWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIExM
SU5UX0VORCgpOwogfQogCisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE1NjMsNyArMTYzNCw3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIENvZGVT
cGVjaWFsaXphdGlvbktpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IDApCiB7CiAgICAgLy8gVGhp
cyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCkBAIC0xNTcxLDE2ICsx
NjQyLDE2IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgLy8gLSBJZiBwb3NzaWJsZSwg
bGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KICAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9m
IG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KICAg
ICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV9jYWxsZWUpOworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBjYWxsZWVGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIAot
ICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBieXRlY29kZS5tX2FyZ3Y7
CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAtIHN0YWNrT2Zmc2V0SW5S
ZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpOwogICAgIAotICAgIGNh
bGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhieXRlY29kZS5tX2FyZ2Mp
OworICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAgICAg
Y2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJhbWUo
Y2FsbEZyYW1lKTsKICAgICAKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwgY2Fs
bGVlQXNWYWx1ZSwgJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBD
YWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmY2FsbExpbmtJbmZvRm9yKG1l
dGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NhbGwpCkBAIC0xNjA0LDYgKzE2NzUsMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NvbnN0cnVjdCkKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
Z2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcENvbnN0cnVjdD4oKSwg
Q29kZUZvckNvbnN0cnVjdCkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaXRlcmF0b3Jfb3Blbl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG9w
ZW5fY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWND
YWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCksIENvZGVG
b3JDYWxsLCBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCkpOworfQorCitMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCk7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dM
bigiQ2FsbGluZyBzbG93IG5leHRfY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVy
YXRvck5leHQ+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpKTsK
K30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFy
Z3MpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE5OTAsNiArMjA4Myw0NCBAQCBzdGF0aWMg
dm9pZCBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0dsb2JhbE9iamVjdAogICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2Rz
dCkgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9p
bnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgT3BJdGVyYXRvck9wZW4mIGJ5dGVjb2RlKQoreworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBpZiAo
IWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBKU1ZhbHVlIG5leHQgPSBpdGVy
YXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihieXRlY29kZS5tX25leHQpID0gbmV4dDsKK30KKworc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0
b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJhdG9yTmV4dCYgYnl0ZWNvZGUsIENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlJiBzaWRlU3RhdGUpCit7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IHNp
ZGVTdGF0ZS5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKKworICAgIGF1dG8mIHZhbHVlUmVn
aXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgYXV0
byBpdGVyYXRvclJlc3VsdE9iamVjdCA9IHNpZGVTdGF0ZS50bXBzW09wSXRlcmF0b3JOZXh0Ojpu
ZXh0UmVzdWx0XTsKKyAgICBhdXRvIG5leHQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNv
ZGUubV9uZXh0KS5qc1ZhbHVlKCk7ICAgIAorCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKG5leHQsICJXZSBzaG91bGQgbm90IE9TUiBleGl0IHRvIGEgY2hlY2twb2ludCBmb3IgZmFz
dCBjYXNlcy4iKTsKKworICAgIGF1dG8mIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX2RvbmUpOworICAgIGlmIChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVy
YXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAgZG9uZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1
bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorCisgICAgc2Nv
cGUucmVsZWFzZSgpOworICAgIGlmIChkb25lUmVnaXN0ZXIuanNWYWx1ZSgpLnRvQm9vbGVhbihn
bG9iYWxPYmplY3QpKQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0ganNVbmRlZmluZWQoKTsKKyAg
ICBlbHNlCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVjdC5nZXQo
Z2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSk7Cit9CisKIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKIHsKICAgICBSRUxFQVNFX0FTU0VSVCgh
Y29kZUJsb2NrLT52bSgpLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7CkBAIC0yMDY2LDYgKzIx
OTcsMTUgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX2NoZWNrcG9p
bnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAgICAgaGFuZGxlVmFyYXJnc0No
ZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BUYWlsQ2FsbFZh
cmFyZ3M+KCksICpzaWRlU3RhdGUuZ2V0KCkpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50
KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAg
ICAgICBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCAqc2lkZVN0YXRlLmdldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTAzLDYgKzIyNDMsMTIgQEAgZXh0
ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNDZWxsKiBjZWxsKQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCitl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7Citl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBkYXRhTG9nTG4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7Cit9CisKIGV4dGVybiAiQyIg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50X2NyYXNoKCkKIHsKICAgICBDUkFTSCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjZGFmYTRmOTNjM2E5ZjA5ODA1NzFjODE3NjdjMWEuLmY5
YTM0ZGFiMzZkOWZhNTI3NTZhMTk4YjJkNzRmNzUyYzUzOGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEwMzIs
NyArMTAzMiw3IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBz
aXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdpZGUzMiwg
bWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAotbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykK
K21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwg
Y2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENh
bGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVsc2UKQEAgLTEwNDUsMTEgKzEwNDUsMTEgQEAgbWFj
cm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIGNhbGxlZSwgY2FsbFAKICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4
ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKICAgICAgICAgIyBjcmFzaGVzLgogICAg
ICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICAgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVn
aXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAogICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChv
cGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3JvIHByZXBhcmVGb3JSZWd1bGFy
Q2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCkBAIC0xMTE3LDcg
KzExMTcsMTEgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAy
LCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCiBlbmQKIAot
bWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK21hY3JvIHNsb3dQYXRoRm9yQ29tbW9uQ2Fs
bChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJl
cGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkK
K2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbENhbGxTbG93UGF0aCgKICAgICAgICAgc2xvd1Bh
dGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIwIGFuZCByMQpAQCAtMTEyNiw3ICsxMTMwLDcgQEAg
bWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXIKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIs
IHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRo
UHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1
bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBj
YWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVv
cGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCiAgICAg
ICAgIGVuZCkKIGVuZAogCkBAIC0yMDE2LDcgKzIwMjAsNyBAQCBtYWNybyBkb0NhbGxWYXJhcmdz
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGZyYW1lU2xvd1BhdGgs
IHNsbwogICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiAgICAg
ICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1Bh
dGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gs
IHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVuZAogCiAKQEAgLTIwNzksNyArMjA4Myw3IEBAIGVu
ZCkKICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KIAogX2xs
aW50X29wX2NhbGxfZXZhbDoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JD
b21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAogICAgICAgICBuYXJyb3cs
CiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDg4LDcgKzIwOTIsNyBAQCBfbGxpbnRfb3BfY2Fs
bF9ldmFsOgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9jYWxs
X2V2YWxfd2lkZTE2OgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1v
bkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCiAgICAgICAgIHdpZGUxNiwKICAg
ICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwOTcsNyArMjEwMSw3IEBAIF9sbGludF9vcF9jYWxsX2V2
YWxfd2lkZTE2OgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9j
YWxsX2V2YWxfd2lkZTMyOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNv
bW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCiAgICAgICAgIHdpZGUzMiwK
ICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIxMDcsNyArMjExMSw3IEBAIF9sbGludF9vcF9jYWxs
X2V2YWxfd2lkZTMyOgogCiAKIGNvbW1vbk9wKGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50LCBt
YWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9w
Q2FsbEV2YWwsIG1hY3JvICgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BDYWxsRXZh
bCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8gKCkKICAgICAgICAgZGlzcGF0Y2hPcChzaXplLCBv
cF9jYWxsX2V2YWwpCiAgICAgZW5kKQogZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA4MTg5MWMy
MmU2MTgzYzgwNDJhYmRmY2U4ZDQzOTExYWY0MWY2NTRhLi43NGM0ODBkZjIxMjE3MTY1NTBjNWZk
NGYwODQ0YWIxMTA4ZmRjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjcsNyArNjcsNyBAQCBt
YWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNw
YXRjaCwgZm4pCiAgICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAogICAgICAgICBtZXRhZGF0YSh0
NSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQ1LCB0MSwgdDApCisg
ICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MCkK
ICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCkBA
IC03NywxNiArNzcsMTcgQEAgZW5kCiAKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVj
b2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1tYWNybyBkaXNw
YXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFjcm8gZGlzcGF0
Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgotICAg
IGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MykKKyAgICBnZXQoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQzKQogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAg
ICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQogICAgIGRpc3BhdGNoKCkKKwogZW5kCiAK
IG1hY3JvIGNDYWxsMihmdW5jdGlvbikKQEAgLTYzMiw5ICs2MzMsOSBAQCBtYWNybyB3cml0ZUJh
cnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVlRmllbGROYW1l
KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
bWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQogICAgIHN0b3JlaSB0YWcsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFtt
ZXRhZGF0YV0KLSAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X3Byb2ZpbGUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KKyAgICBzdG9yZWkg
cGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0
cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCiBlbmQKIAogCkBAIC0xMzc4LDcgKzEzNzksNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0
YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDNdLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3Qs
IHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxl
LCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93
OgpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQs
IE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBiaW5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2Fk
cCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hl
ZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0
MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQw
LCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgpAQCAtMTQxMyw3ICsxNDE0LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNd
LCB0MAogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6
dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJ
ZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgSW50MzJUYWcsIHQwKQorICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKICAg
ICByZXR1cm4oSW50MzJUYWcsIHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CkBAIC0xNDIxLDcgKzE0
MjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0
YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BH
ZXRCeUlkU2xvdykKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9w
R2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgVW5kZWZpbmVkVGFn
LCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5l
ZFRhZywgMCkKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVs
dDoKQEAgLTE0MzAsNyArMTQzMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lk
LCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9h
ZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hl
ZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEs
IC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMs
IHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQorICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4o
dDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE0NDAsNyArMTQ0MSw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhp
dFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAog
ZW5kKQpAQCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAg
ICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNl
dFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1bHRQYXlsb2FkLCBQYXlsb2Fk
T2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQogICAgICAgICBk
aXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1MjcsNyArMTUyOCw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAgICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gzCiAgICAg
ICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCiAgICAgICAg
IHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQotICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKKyAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3Jh
dGNoMikKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTcyLDcgKzE1NzMsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9wR2V0QnlWYWxOb3RFbXB0eToKICAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIsIHQxKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCiAgICAg
ZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU4NSw3ICsx
NTg2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBn
ZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBt
ZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQyLCByMSwgcjAp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKICAg
ICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xOTU3LDEwICsxOTU4LDEwIEBAIG1hY3JvIGNv
bW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2Fs
bCwgcHJvbG9ndWUpCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRb
dDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCiAgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRy
VGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRh
ZykKIAogICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQor
ICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBt
X3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGVu
ZCkKIGVuZAogCkBAIC0yMjg4LDcgKzIyODksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Ywog
ICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1l
dGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2Nv
cGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBA
IC0yMjk3LDcgKzIyOTgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3Bl
LCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2Fk
cCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwgdDIK
ICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9t
U2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAg
ICBlbmQKIApAQCAtMjMwNSw3ICsyMzA2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
ZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAg
ICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0Mwog
ICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRb
dDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFi
bGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQog
ICAgIGVuZAogCkBAIC0yNTk0LDYgKzI1OTUsMTUgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0
X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMK
ICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogZW5kKQogCitsbGludE9wKG9wX2l0ZXJhdG9yX29w
ZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZp
bmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKKyAgICBicmVhawor
ZW5kKQorCitsbGludE9wKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRl
cmF0b3JfbmV4dCwgc2l6ZSkKKyAgICBicmVhaworZW5kKQogCiBsbGludE9wV2l0aFByb2ZpbGUo
b3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwgdDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IGFlMmUzNzczZmZkY2M0MDY3NGM3YWFjMGMxZDRmZTZjZDBmYjc4NTkuLjg2MTM2ZTg1N2M5Zjc4
MjJiMjQ0NmM2MjZiZmRjN2EzZGZiYjJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02OCwyNiArNjgsMjYg
QEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwg
ZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwg
dDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCB0MSwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJv
ZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMs
IFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3Jv
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEg
dmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0c1ttZXRh
ZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRh
ZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFkYXRhXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGlu
ZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1
c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2FkUEMoKQogICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Rz
dCwgdDEpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0
MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29k
ZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMCkK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjAp
CiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTEzNDAsNyArMTM0MCw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAg
IGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlJZERpcmVjdCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJl
Y3QsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZERpcmVj
dFNsb3c6CkBAIC0xMzQ4LDUzICsxMzQ4LDU5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwg
T3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
KyMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCittYWNybyBwZXJmb3JtR2V0QnlJ
REhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUs
IHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0YSh0MiwgdDEp
Ci0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9kZVt0Ml0s
IHQxCi0gICAgZ2V0KG1fYmFzZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
c2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKIAogLm9wR2V0QnlJZERl
ZmF1bHQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9w
R2V0QnlJZFByb3RvTG9hZAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQx
Ci0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cK
LSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisg
ICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwg
dDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5
SWRQcm90b0xvYWQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9M
b2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MwotICAgIGJpbmVxIHQzLCB0MSwgLm9w
R2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRh
dGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQotICAgIGxvYWRwIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0s
IHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFt
ZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCisgICAgYmluZXEgdDMsIHQxLCBz
bG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRwICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUu
Y2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJu
KHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBH
ZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQw
Ci0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCi0gICAgYnRpeiB0MCwgSXNB
cnJheSwgLm9wR2V0QnlJZFNsb3cKLSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgLm9w
R2V0QnlJZFNsb3cKKyAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
bW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0
NSkKKyAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKKyAgICBidGl6IHQwLCBJbmRleGlu
Z1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKLSAgICBiaWx0
IHQwLCAwLCAub3BHZXRCeUlkU2xvdworICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAogICAgIG9y
cSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAg
ICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1l
dGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAu
b3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBWYWx1ZVVuZGVm
aW5lZCkKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFO
YW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xv
d0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
dDIsIFZhbHVlVW5kZWZpbmVkKQogICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAorZW5kCisK
K2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQwKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNs
b3cpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwg
bV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKwogLm9w
R2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lk
KQogICAgIGRpc3BhdGNoKCkKQEAgLTE0MDIsNyArMTQwOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBv
aW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1f
cHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTQ5Nyw3ICsxNTAz
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChy
ZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3Rv
cmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIHQ1LCByZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCByZXN1bHQpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU1
OCw3ICsxNTY0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogLm9wR2V0QnlWYWxEb25l
OgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
dDIpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAt
MTU3MSw3ICsxNTc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2lu
dDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6
ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1
LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCiAg
ICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xOTQ4LDYgKzE5NTQsMzAgQEAgbWFjcm8gYXJyYXlQ
cm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAuZG9uZToKIGVuZAogCittYWNybyBj
YWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykKKyAgICBtZXRhZGF0YSh0NSwgdDApCisgICAgZ2V0Q2FsbGVlKHQwKQorCisg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxl
ZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCB0MCwgdDMpCisgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdworCisg
ICAgZ2V0QXJndW1lbnRTdGFydCh0MykKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgbmVncCB0Mwor
ICAgIGFkZHAgY2ZyLCB0MworICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQorICAgIGdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKQorICAgIHN0b3JlUEMoKQorICAgIHN0b3JlaSB0Miwg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIG1vdmUg
dDMsIHNwCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRh
ZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVd
LCBKU0VudHJ5UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFs
UmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKwogbWFjcm8g
Y29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVD
YWxsLCBwcm9sb2d1ZSkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTE5NTYsMjQgKzE5ODYsMTkgQEAgbWFjcm8gY29t
bW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxs
LCBwcm9sb2d1ZSkKICAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAotICAgICAgICBnZXQobV9jYWxsZWUs
IHQwKQotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKLSAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCi0gICAgICAgIGJxbmVxIHQzLCB0
MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwg
dDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMKLSAgICAgICAgbmVncCB0MwotICAgICAgICBhZGRw
IGNmciwgdDMKLSAgICAgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCi0gICAgICAgIGdldHUoc2l6
ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQyKQotICAgICAgICBzdG9yZVBDKCkKLSAgICAgICAg
c3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNd
Ci0gICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0
MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFn
KQotCi0gICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisg
ICAgICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgICAgICBnZXQobV9jYWxsZWUsIHQw
KQorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBnZXRBcmd1bWVudFN0YXJ0KGRzdCkKKyAg
ICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIGRzdCkKKyAgICAgICAg
ZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRDb3VudChkc3QpCisgICAgICAgICAgICBn
ZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCBkc3QpCisgICAgICAgIGVuZAorCisgICAg
ICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgbV9wcm9m
aWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2Fs
bGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50KQogICAgIGVuZCkKIGVuZAog
CkBAIC0yMjc2LDcgKzIzMDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Nj
b3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3Jv
IGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQx
LCB0MCwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQyKQog
ICAgICAgICByZXR1cm4odDIpCiAgICAgZW5kCiAKQEAgLTIyODQsMTQgKzIzMDksMTQgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFk
YXRhOjptX29wZXJhbmRbdDVdLCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0
ZHpDaGVja0lmTmVjZXNzYXJ5KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2Nv
cGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2Zp
bGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0
Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9v
cGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFi
bGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
dDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwg
dDUsIHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAgLTI1NTEsNyArMjU3Niw2
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV9jb250cm9sX2Zsb3csIE9wUHJvZmls
ZUNvbnRyb2xGbG93LCBtYWNybyAoc2l6ZSwKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLQogbGxp
bnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAr
IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MApAQCAt
MjU2Nyw2ICsyNTkxLDE0NyBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgs
IE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQogCiAKK2xs
aW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKGEy
LCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2
KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNikK
KyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9p
dGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJy
b3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkK
KworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNp
bmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRp
b25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3BhdGNoKCkKKwor
Lml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVja3BvaW50KCkK
KyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxl
ZShkc3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAgZW5kCisKKyAg
ICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUo
c2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAg
IG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAx
LCBkc3QKKyAgICBlbmQKKworCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9vcGVuLCBfbGxp
bnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCwgT3BJdGVyYXRvck9wZW4sIG1faXRlcmF0
b3JQcm9maWxlLCBtX2l0ZXJhdG9yLCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9H
ZXRCeUlkQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRp
bmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0QnlJZFN0
YXJ0OgorICAgIG1hY3JvIHN0b3JlTmV4dEFuZERpc3BhdGNoKHZhbHVlKQorICAgICAgICBtb3Zl
IHZhbHVlLCB0MgorICAgICAgICBnZXQobV9uZXh0LCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBb
Y2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgbG9hZFZhcmlh
YmxlKGdldCwgbV9pdGVyYXRvciwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRl
cmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJ
dGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVu
R2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gp
CisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKKyAgICBkaXNwYXRjaCgpCisK
K2VuZCkKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9y
TmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAg
ICBsb2FkVmFyaWFibGUoZ2V0LCBtX25leHQsIHQwKQorICAgIGJ0cW56IHQwLCB0MCwgLml0ZXJh
dG9yTmV4dEdlbmVyaWMKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJv
dygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cp
CisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChf
aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdp
ZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRl
MzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMy
LCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQg
ZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4K
KyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9y
TmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck5leHRHZW5lcmljOgorICAg
IG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0
CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9uZXh0
LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFy
dChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck5leHQsIG1fc3RhY2tPZmZzZXQs
IGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50
KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgICMgVXNlIG1fdmFsdWUg
c2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisg
ICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9uZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9y
X25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQsIG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUs
IHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldERvbmVDaGVja3BvaW50LCBtZXRh
ZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1l
bnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXREb25lU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVE
b25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFsdWUpCisgICAgICAgICMgdXNlIHQwIGJlY2F1c2Ug
cGVyZm9ybUdldEJ5SURIZWxwZXIgdXN1YWxseSBwdXRzIHRoZSBkb25lVmFsdWUgdGhlcmUgYW5k
IG9mZmxpbmVhc20gd2lsbCBlbGlkZSB0aGUgc2VsZiBtb3ZlLgorICAgICAgICBtb3ZlIGRvbmVW
YWx1ZSwgdDAKKyAgICAgICAgZ2V0KG1fZG9uZSwgdDEpCisgICAgICAgIHN0b3JlcSB0MCwgW2Nm
ciwgdDEsIDhdCisgICAgICAgIGptcCAuZ2V0VmFsdWVTdGFydAorICAgIGVuZAorCisKKyAgICBs
b2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ss
IC5nZXREb25lU2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBt
X2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0
YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQorICAg
IGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
KQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDApCisKKyAgICAjIHN0b3JlRG9uZUFu
ZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUgZG9uZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0
OgorICAgICMgQnJhbmNoIHRvIHNsb3cgaWYgbm90IG1pc2MgcHJpbWl0aXZlLgorICAgIGJ0cW56
IHQwLCB+MHhmLCAuZ2V0VmFsdWVTbG93CisgICAgYnRpeiB0MCwgMHgxLCAubm90RG9uZQorICAg
IGRpc3BhdGNoKCkKKworLm5vdERvbmU6CisgICAgbWFjcm8gc3RvcmVWYWx1ZUFuZERpc3BhdGNo
KHYpCisgICAgICAgIG1vdmUgdiwgdDIKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgICAg
ICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudCh0MCwgMHhiYWRkYjAxZSkKKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAg
IyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1h
eSBoYXZlIGNsb2JiZXJlZCB0My4KKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykK
KyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBh
IGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KKyAg
ICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0
YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZh
bHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0Y2goKQorZW5k
KQorCisKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50
ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX2Jhc2UsIHQxKQogICAgIGdldHUoc2l6ZSwgT3BHZXRJbnRlcm5hbEZp
ZWxkLCBtX2luZGV4LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Ry
YW5zZm9ybS5yYgppbmRleCA4ZDc2NzExNmMwNTRlNWVhNjY0ZWY0MDYyYzU2ZjI2MDVlMGQ4YjQ1
Li41ODlhZTBlMGYzZWQzNGI2NjFlODU2MmJjYTI5ODAyZWMxMGU1YjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCkBAIC02MjksNyArNjI5LDcg
QEAgZW5kCiAKIGNsYXNzIE5vZGUKICAgICBkZWYgdmFsaWRhdGUKLSAgICAgICAgcmFpc2UgIlVu
cmVzb2x2ZWQgI3tkdW1wfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICByYWlzZSAi
VW5yZXNvbHZlZCAnI3tkdW1wfScgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICBlbmQKICAg
ICAKICAgICBkZWYgdmFsaWRhdGVDaGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjhkZTk2NTU4MmY3ZDkxMjcxMzM3
ZDU0MzE5MDNlODMxOGMyNmY0Ny4uZTE5ZGZiOTllM2VhNDZjMjJiNDFhYzE3MmMxMTNkYWE0MTUx
Y2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNs
dWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE1Myw4
ICsxNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFJFVFVSTl9QUk9GSUxFRCh2YWx1
ZV9fKSBcCiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHZhbHVlX18sIFBST0ZJTEVfVkFMVUUo
cmV0dXJuVmFsdWVfXykpCiAKLSNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8geyBcCi0g
ICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9wcm9maWxlLm1fYnVja2V0c1sw
XSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1
ZV9fKSBcCisgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUpCisKKyNkZWZp
bmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAorICAgICAgICBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZv
aWQgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpAQCAtOTY1LDYgKzk2OSwxMjggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmpl
Y3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKSk7CiB9CiAKK3RlbXBsYXRlPE9wY29kZVNpemUg
d2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0
YWRhdGFQdHIpCit7CisgICAgLy8gRG9uJ3Qgc2V0IFBDOyB3ZSBjYW4ndCB0aHJvdyBhbmQgaXQn
cyByZWxhdGl2ZWx5IHNsb3cuCisgICAgQkVHSU5fTk9fU0VUX1BDKCk7CisKKyAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yT3Blbiwgd2lkdGg+KCk7CisgICAg
YXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yT3Blbjo6TWV0YWRh
dGEqPihtZXRhZGF0YVB0cik7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IEdFVF9DKGJ5dGVjb2Rl
Lm1faXRlcmFibGUpLmpzVmFsdWUoKTsKKyAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhYmxlLCBt
X2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdFVF9DKGJ5
dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBhdXRvJiBpdGVyYXRvciA9
IEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKworICAgIGF1dG8gcHJlcGFyZUZvckZhc3RBcnJh
eUl0ZXJhdGlvbiA9IFsmXSB7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBUaGlzIGlzIGNvcnJl
Y3QgYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgdmFsaWQu
CisgICAgICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICBpZiAoIXN5bWJv
bEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2Vu
ZXJpYzsgCisKKyAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uKCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFdlIHNob3VsZCBi
ZSBnb29kIHRvIGdvLgorICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5N
b2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9u
TW9kZTo6RmFzdEFycmF5OworICAgICAgICBHRVQoYnl0ZWNvZGUubV9uZXh0KSA9IEpTVmFsdWUo
KTsKKyAgICAgICAgYXV0byogaXRlcmF0ZWRPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihpdGVy
YWJsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9y
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBpdGVy
YXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgfQorICAgICAgICBQ
Uk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2ZpbGUpOwor
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgIH07CisKKyAgICBp
ZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7CisgICAgICAgIGlmIChwcmVwYXJl
Rm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KQorICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
SXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRvIHRo
ZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0
aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVu
TW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
cGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30K
KworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25h
cnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBt
ZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxOYXJyb3c+
KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1
cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRh
UHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwordGVtcGxhdGU8T3Bj
b2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4
dF90cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2
b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck5leHQsIHdpZHRoPigpOworICAgIGF1dG8mIG1l
dGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck5leHQ6Ok1ldGFkYXRhKj4obWV0
YWRhdGFQdHIpOworCisgICAgQVNTRVJUKCFHRVQoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCkp
OworICAgIEpTT2JqZWN0KiBpdGVyYXRvciA9IGpzQ2FzdDxKU09iamVjdCo+KEdFVChieXRlY29k
ZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCkpOzsKKyAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5
dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKKyAgICBpZiAoYXV0byBhcnJh
eUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3Ip
KSB7CisgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0s
IGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2Jz
ZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKworICAgICAgICAgICAgbWV0
YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlv
bk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAgICAg
ICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQoSlNBcnJh
eUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOworICAgICAgICAgICAgaW50NjRfdCBpbmRleCA9IGlu
ZGV4U2xvdC5nZXQoKS5hc0FueUludCgpOworICAgICAgICAgICAgQVNTRVJUKDAgPD0gaW5kZXgg
JiYgaW5kZXggPD0gbWF4U2FmZUludGVnZXIoKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWU7CisgICAgICAgICAgICBib29sIGRvbmUgPSBpbmRleCA+PSBhcnJheS0+bGVuZ3RoKCk7Cisg
ICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV9kb25lKSA9IGpzQm9vbGVhbihkb25lKTsKKyAgICAg
ICAgICAgIGlmICghZG9uZSkgeworICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFy
cmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAg
ICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsg
MSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFycmF5LT5nZXRJbmRleChnbG9i
YWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpOworICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICBQ
Uk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBtX3ZhbHVlUHJvZmlsZSk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1
c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xv
dC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKG1heFNhZmVJbnRlZ2VyKCkpKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFsdWU7
CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRl
Y29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMg
fCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0
YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+KGNhbGxG
cmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFU
SCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRl
cmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsK
K30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lk
KiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRl
MzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4ZGI1
ZjU1OGZhNzg1MDRjYWIwOTY0M2M2MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRjZDhi
MmVlMGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKQEAgLTI0Niw2ICsyNDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2lzX29iamVjdF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
aXNfZnVuY3Rpb24pOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CisvLyBTTE9XX1BB
VEhfSElEREVOX0RFQ0woaXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhfSElE
REVOX0RFQ0woaXRlcmF0b3JfbmV4dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
dHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpA
QCAtMjgzLDYgKzI4NSwxOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJheV93aXRoX3NwcmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwog
Cit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
U0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFt
ZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMy
KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCit0
ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1df
UEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSos
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENh
bGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1c2lu
ZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShDYWxs
RnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDM1MzU5MDkwNDkx
Y2UwYWZkY2Q4YmJiNGY4NzViYjM4MThjMjJkM2UuLjY4NzRlYzc5MDM3NThjZjlkZjQ0MzlhNjIz
OTA2MWNmMjcwNTg5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmNwcApAQCAtMzMwLDYgKzMzMCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKElu
dHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFsPEl0
ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5z
aWMpCit7CisgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVzSW50
cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoK
KyAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0
aW9uS2luZDo6S2V5czsKKyAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBjYXNl
IFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2lu
ZDo6RW50cmllczsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJk
N2Q4YWMyMDU0MmU4YThkN2UxOGM0MmJhZTkuLjcxYmEzYWFkMzU5Njk1NmFmYzJkMGFiZmM2ZmQx
ZGUxN2FmMWVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
CkBAIC0xODcsNiArMTg3LDggQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBEYXRh
Vmlld1NldEZsb2F0NjQsCiB9OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9u
S2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1l
KEludHJpbnNpYyk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZk
NGQ3ZmEzNGJiOThhOTY4N2VjNjA5Li40ZmQwYTExNjUyNWNkYzUzMmE1M2QwYjhiNWFjYjUzMzg3
YThkYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRl
cmF0b3IuaApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRl
ZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQo
RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5SXRl
cmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwg
SlNWYWx1ZSBraW5kKTsKKyAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRp
b25LaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUs
IGl0ZXJhdGVkT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsK
KyAgICB9CiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1
ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1
NGZhNjBjOWY0ODFlZC4uZDMwMmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBmZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1LDYg
KzIyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBib29s
IGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlw
ZSYsIENhbGxEYXRhJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERh
dGEmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFkODBh
ZjcuLjYyZjlkMjRmMTVkMDcyNDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODI3
LDYgKzgyNywxMyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29u
c3QKICAgICByZXR1cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1bnVz
ZWRUeXBlOworICAgIENhbGxEYXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFibGUo
dm0sIHVudXNlZFR5cGUsIHVudXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0NhbGxhYmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEp
IGNvbnN0CiB7CiAgICAgaWYgKCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDYXN0LmgKaW5kZXggZThiMjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzExYi4u
YjI1MDM1NjljODQyMjU2MDExNDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8ganND
YXN0KEpTVmFsdWUgZnJvbSkKIC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmluZSBG
T1JfRUFDSF9KU19EWU5BTUlDX0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAgIG1h
Y3JvKEpTSW1tdXRhYmxlQnV0dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlw
ZSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0FycmF5
SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRl
cmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmlu
Z0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3Jv
KEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8o
SlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmpl
Y3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwg
SlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpT
VHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUp
IFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVk
QXJyYXlUeXBlKSBcCisgICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJ
dGVyYXRvclR5cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpT
QXJyYXlCdWZmZXIsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVmZmVy
VHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlUeXBl
LCBMYXN0VHlwZWRBcnJheVR5cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6SlNQ
cm9taXNlVHlwZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYz
ZTNjOGZmNjIwOGY2MjVmNTcwMzY4NzNmMC4uMTE3M2FhMDg4ZGNiNzZjMDRmZTRiNWZjMGIxYTQ5
MzkzMzkxZTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtNTU5LDEwICs1NTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBp
bml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
aW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwg
YXJyYXlQcm90b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKICAgICAgICAgfSk7Ci0gICAg
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5
TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVz
SW50cmluc2ljKSk7Ci0gICAgICAgIH0pOworICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
LnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVl
c0ludHJpbnNpYykpOwogCiAgICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVy
KAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAg
LTE3NDksNyArMTc0Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNl
SW50RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0
RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9T
dHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9l
dmFsRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3
NGIyMTc2NDcxYTlmMDUxMy4uMGFjZGZhZWQ5ZTlhZGZjMjM4YWI3YzIzNDJlMzU0OTMwYWE2OTIz
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC0yOTksNyArMjk5LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247CiAKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rp
b247Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJh
eVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9u
OwpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1
bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiog
YXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9U
b1N0cmluZ0Z1bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
LmdldCh0aGlzKTsgfQorICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAg
SlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
dGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3
UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21p
c2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rp
b24uZ2V0KHRoaXMpOyB9CkBAIC02MTksNiArNjE5LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rp
b24qIG51bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldEluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
LmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25z
dDsKKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKTsgfQogICAgIEpTT2Jq
ZWN0KiByZWdFeHBQcm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdF
eHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJv
dG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaAppbmRleCA5OTY5NGQwMTI3YmFlMWNlYTVjZjYzZmE5Y2RkOTc3MDAwY2I3
YWE0Li5mYjQwZmM5NTA3NmFjNTBhMGEzOTRmNThjNTNlYjFjYmRiMDZmYzdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTExOSw2ICsxMTksOCBA
QCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwog
ICAgIHYoVW5zaWduZWQsIHNoYWRvd0NoaWNrZW5Mb2dTaXplLCAxMDAwLCBOb3JtYWwsIG51bGxw
dHIpIFwKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTWF4VGFpbERlbGV0ZWRGcmFtZXNT
aXplLCAxMjgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKKyAgICB2KEJvb2wsIHVzZUl0ZXJh
dGlvbkludHJpbnNpY3MsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKICAgICB2KEJv
b2wsIHVzZU9TTG9nLCBmYWxzZSwgTm9ybWFsLCAiTG9nIGRhdGFMb2coKXMgdG8gb3NfbG9nIGlu
c3RlYWQgb2Ygc3RkZXJyIikgXAogICAgIC8qIGR1bXBEaXNhc3NlbWJseSBpbXBsaWVzIGR1bXBE
RkdEaXNhc3NlbWJseS4gKi8gXAogICAgIHYoQm9vbCwgZHVtcERpc2Fzc2VtYmx5LCBmYWxzZSwg
Tm9ybWFsLCAiZHVtcHMgZGlzYXNzZW1ibHkgb2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24g
Y29tcGlsYXRpb24iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAppbmRleCA3NjRhZDA2NWFjMDExZTMzYzMyMzhjZDlkYTk1MzljMTU4MzkyM2U1Li45YzJj
ZTdhZmFlNmUzOGU3YTYwODAyNmY1MTc3MTEwZTNjODU1NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNjgsNiArMTI2OCw4IEBAIHZvaWQg
U3RydWN0dXJlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBj
b250ZXh0KSBjb25zdAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBCcmllZihQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIlIiwgc3Ry
aW5nLCAiOiIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIGlmIChpbmRleGluZ1R5cGUo
KSAmIEluZGV4aW5nU2hhcGVNYXNrKQorICAgICAgICBvdXQucHJpbnQoIiwiLCBJbmRleGluZ1R5
cGVEdW1wKGluZGV4aW5nVHlwZSgpKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wQ29udGV4
dEhlYWRlcihQcmludFN0cmVhbSYgb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW51
bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaCBiL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJh
dG9yT3ZlcmxvYWRzLmgKaW5kZXggMzU3YmEyZmEyZjc5MjlhNmE5OThhOWE0ZWYxNGQyYmU1NzU0
NjM3MS4uNTZhYmM0YjUzZWM5ZmFiNjA3NWJmNmQyZWJiYmVkMWYzM2NkZjllMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCkBAIC01OSwzICs1OSw5IEBA
CiAKICNkZWZpbmUgT1ZFUkxPQURfUkVMQVRJT05BTF9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1Nf
V0lUSF9JTlRFR1JBTFMoZW51bU5hbWUpIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZP
Ul9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHN0ZDo6aXNfaW50ZWdyYWxfdjxUPikKIAorI2Rl
ZmluZSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1O
YW1lLCBlbmFibGVFeHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1f
Q0xBU1NfV0hFTihlbnVtTmFtZSwgfCwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FE
X09QRVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsICYsIGVuYWJsZUV4cHJlc3Np
b24pIFwKKyAgICBPVkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1l
LCBeLCBlbmFibGVFeHByZXNzaW9uKSBcCisKKyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVS
QVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFUkdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9C
SVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2lu
dGVncmFsX3Y8VD4pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDlkYzk4OWM1NWI0MzRlZmY2ZmQzZWY0ZGEzYTUyM2M3ZmQ1NzNhYjIuLmI0
OWJlNTQwOTQ0ZDI4YjhhN2FiOThlYzBkMTc3MTBjYjc4ODY2NjUgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIw
MjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24gdHlwZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanM6CisgICAgICAgIChmb28pOgorICAgICAg
ICAqIHN0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzOgorICAgICAgICAoY2F0Y2gpOgorICAgICAg
ICAoaXRlci5yZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3QpOgor
ICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4pOgorICAgICAgICAoaXRl
cmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0
b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzOgorICAgICAgICAoZmluZCk6CisgICAgICAg
IChpLmxldC52Lm9mLmZpbmQpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmlu
Zy1mb3Itb2Ytb24tc2V0LmpzOgorICAgICAgICAoZmluZCk6CisgICAgICAgIChzZXQgYWRkKToK
KyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IGRvbmUpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3Ip
OgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3Mvb3Ny
LWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qczoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5l
eHQucmV0dXJuLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAg
ICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1
cm5zLW5vbi1vYmplY3QuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVy
YWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93
LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczoKKyAgICAgICAgKGkubGV0Lml0
ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuZ2V0IGRvbmUpOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ct
ZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICog
c3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCB2
YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorCiAyMDIwLTA0
LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgYWxs
IGxvdyBleGVjdXRhYmxlIG1lbW9yeSB3YXNtIHRlc3RzIG9uIGFybTY0CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcwpp
bmRleCA1NWVjYzBiZmNmOTE5Y2FjYWU3ZmQxNWRkYjQwYjE0ZmRjYTk0ZWRhLi4yMDEyYjkxMjg1
MGY1ODExNjdmYmQzMTA1MDU5Yjc2ZDc2NjNiNmQ4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCisrKyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMKQEAgLTMsMTAg
KzMsMTIgQEAgZnVuY3Rpb24gZm9vKCkgewogICAgIHZhciBhcnJheSA9IFtdOwogICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjUwMDA7IGkrKykKICAgICAgICAgYXJyYXkucHVzaChpKTsKLSAgICAK
KwogICAgIHZhciByZXN1bHQgPSAwOwotICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBhcnJh
eS5lbnRyaWVzKCkpCisgICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGFycmF5LmVudHJpZXMo
KSkgeworICAgICAgICBwcmludChrZXkgKyAiICIgKyAkdm0uaW5kZXhpbmdNb2RlKGFycmF5KSk7
CiAgICAgICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1ZSArIGFycmF5W2tleV07CisgICAgfQogICAg
IAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jdXN0
b20taXRlcmF0b3JzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcwppbmRl
eCBmZDY0MTNmZTNiNWU5MDNhZmZlMzgwM2ZkMDA0YzBjYjFmMWM2NGYzLi5kM2QxYmQ3ZTg1OGU4
NzRmYmQxMTNkODJmOTIxMWVhNGJkNWVmN2I1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9j
dXN0b20taXRlcmF0b3JzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMu
anMKQEAgLTIyLDcgKzIyLDcgQEAgZm9yICh2YXIgdmFsdWUgb2YgaXRlcikgewogICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwogfQogaWYgKHJldHVybkNhbGxlZCkK
LSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJy
b3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC01Myw3ICs1Myw3IEBAIHRyeSB7CiAg
ICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWlu
YXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246
ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhy
b3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAg
dHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9y
OiBsb29raW5nIHVwIG5leHQuIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhy
b3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAg
dGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJy
ZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHRyeSB7CiAgICAg
fQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1
cCByZXR1cm4uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsg
ZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIAogCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB0cnkgewog
ICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IG5leHQg
aXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiAr
IGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJF
cnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdh
cyBjYWxsZWQiKTsKIAogCiAKQEAgLTE4Myw3ICsxODMsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9
LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVl
OwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiAKQEAgLTE5Myw3
ICsxOTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUp
ICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0
dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAg
LTIxMCw3ICsyMTAsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rp
b24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJy
b3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4g
d2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiB0cnkgewpAQCAtMjE4LDggKzIxOCw4IEBAIHRyeSB7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0gY2F0Y2ggKGUpIHsKLSAgICBpZiAoU3RyaW5nKGUp
ICE9PSAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJl
dHVybiB3YXMgY2FsbGVkIikKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVk
KQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTI1NSwxMCAr
MjU1LDEwIEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KG5vdEl0ZXJhdG9y
UmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJp
bmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAi
ICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmIChyZXR1cm5DYWxsZWQp
Ci0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiB9CiAKIGZ1bmN0aW9uIGl0ZXJhdG9y
SW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CkBAIC0yODIsNyAr
MjgyLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4obm90SXRl
cmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYg
KFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0gICAgICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhy
b3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJv
cjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTMxMyw3ICszMTMsNyBAQCBmdW5jdGlvbiBp
dGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybihub3RJdGVyYXRvclJlc3VsdCkgewogICAg
ICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlw
ZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAg
ICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAg
ICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAoIXJldHVybkNhbGxlZCkKICAgICAgICAgdGhy
b3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4
YjdlZTgxNDI0YTJkMmY1MzhjZTdiMjA1OWQ4ZDZlNDU4ZTRiYQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanMKQEAg
LTAsMCArMSwxOCBAQAorZnVuY3Rpb24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQg
W2FycmF5XSBvZiBub2RlcykgeworICAgICAgICBpZiAoIWFycmF5LmZpbmQoKHYpID0+IHYgPT09
IHApKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHlpZWxkIGFycmF5OworICAgIH0K
K30KK25vSW5saW5lKGZpbmQpOworCitsZXQgbWFwID0gbmV3IE1hcCgpOworbm9JbmxpbmUobWFw
W1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kp
CisgICAgbWFwLnNldChbMSwyLDQsNSw1XSwge30pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDFl
NTsgKytpKSB7CisgICAgZm9yIChsZXQgdiBvZiBmaW5kKG1hcCwgaSAlIDIpKSB7IH0KK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1z
ZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQyZjMyNzM5MGQ3Mzc1YTIyMDJhZTU5YTExMjQ2NTY5OGNiNmVhYjYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1m
b3Itb2Ytb24tc2V0LmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBw
KQoreworICAgIGZvciAobGV0IGFycmF5IG9mIG5vZGVzKSB7CisgICAgICAgIGlmICghYXJyYXku
ZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgeWll
bGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUoZmluZCk7CisKK2xldCBzZXQgPSBuZXcgU2V0
KCk7Citub0lubGluZShzZXRbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQpOworZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTI7ICsraSkKKyAgICBzZXQuYWRkKFsxLDIsNCw1LDVdLCB7fSk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmb3IgKGxldCB2IG9mIGZpbmQoc2V0LCBp
ICUgMikpIHsKKyAgICAgICAgaWYgKGkgJSAyICE9PSAxKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJubyByZXN1bHQgc2hvdWxkIGhhdmUgYmVlbiBwcm9kdWNlZCBoZXJlIik7CisgICAg
ICAgIGlmICghKHYgaW5zdGFuY2VvZiBBcnJheSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoInJlc3VsdCB3YXMgbm90IGFuIGFycmF5Iik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJl
c3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNGM0OWM5M2Iy
OWZjYjBmNzEwYzZjODJkMWZkODgwMDFhMjJlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIuanMKQEAgLTAsMCArMSwyMyBAQAor
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBm
YWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgIGdldCBkb25lKCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNGaW5hbFRpZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlT1NS
KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgp
IHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1
ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9
CisgICAgfSBjYXRjaCB7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20t
Zm9yLW9mLXZhbHVlLWdldHRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12
YWx1ZS1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcwOTZlZTAzZTE1MjU3M2FlZGM2NGQwNDM5ZmIy
YmYyMmM2NDE1YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZv
ci1vZi12YWx1ZS1nZXR0ZXIuanMKQEAgLTAsMCArMSwyMSBAQAorZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTU7ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRl
cmFibGUgPSB7CisgICAgICAgIGRvbmU6IDAsCisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgIGRvbmU6IHRoaXMuZG9uZSsrLAorICAgICAgICAg
ICAgICAgIGdldCB2YWx1ZSgpIHsgaWYgKGlzRmluYWxUaWVyKCkpIEZvcmNlT1NSKCk7ICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7
IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7
IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQor
ICAgIH0gY2F0Y2ggeworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1v
Zi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1v
Zi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmJkMzJhZGQ3Y2MzYmEz
NDMyNTRkYTcxMDhlNTE5ZmY3NWIzMjUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzCkBAIC0wLDAgKzEsMTYg
QEAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVk
ID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4g
MTsgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAg
ICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkg
eworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgaWYgKGUgIT0gIlR5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiIpCisgICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKyAgICBpZiAocmV0
dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOGExNDJjOGE2YzU0ZjQ3NmVjMDM5YTE0ZTllMmQzZTdiOTZkZjFhCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1p
bi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9
IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1cm5DYWxsZWQ7CisgICAg
bGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAg
ICAgZ2V0IGRvbmUoKSB7CisgICAgICAgICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOwor
ICAgICAgICB9LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0s
CisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoYSBvZiBpdGVyYWJsZSkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBp
ZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2IxOTRmZDdjYTVhYzU5YWQ2OTYxOTQyZjg2MjdiNjBhNWFhMzAxOAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVy
LmpzCkBAIC0wLDAgKzEsMjQgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7Cisg
ICAgbGV0IGVycm9yOworICAgIGxldCByZXR1cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0g
eworICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3Io
KTsKKyAgICAgICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlz
OyB9LAorICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVl
OworICAgICAgICB9CisgICAgfTsKKyAgICBub0lubGluZShpdGVyYWJsZS5uZXh0KTsKKyAgICB0
cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJvcnIoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAg
ICAgICAgICAgIHRocm93IGU7CisgICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJv
dy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
dGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MDg3ODgzNThlNGVkMzA2MTJhY2M2ZjJlZjNhMzBkOGQ1NjY2NzlkCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRl
ci5qcwpAQCAtMCwwICsxLDI3IEBACitmb3IgKGxldCBpID0gMDsgaSA8PSAxZTU7ICsraSkgewor
ICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0
ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZG9u
ZTogZmFsc2UsCisgICAgICAgIGdldCB2YWx1ZSgpIHsKKyAgICAgICAgICAgIHRocm93IGVycm9y
ID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkg
eyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJu
Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9y
IChhIG9mIGl0ZXJhYmxlKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAo
ZSAhPT0gZXJyb3IpCisgICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1
cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396511</attachid>
            <date>2020-04-15 00:53:22 -0700</date>
            <delta_ts>2020-04-15 07:56:35 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-175454-20200415005321.patch</filename>
            <type>text/plain</type>
            <size>281600</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4zOTZmM2MxMTAwNjMzZTlh
MTlhOGY2NDNiMzY4ZmQwYjNhOTliZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MzMgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24g
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBidWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJh
eUl0ZXJhdG9yTmV4dEhlbHBlcik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZUlEKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2
YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRp
b25Gb3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25XaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmguCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
IChKU0M6OmlzU3VidHlwZVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25D
b250YWlucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgIChK
U0M6OlN1cGVyU2FtcGxlclNjb3BlOjpyZWxlYXNlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
T3Blbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y05leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6Zm9yQWxsVmFsdWVzKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6Om51bWJlck9mVG1wcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6dG1wKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpqc0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6d2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNG
R1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5o
OgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om51bWJl
ck9mVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpvcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnZhcmlhYmxlQXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6Okxh
enlKU1ZhbHVlOjpzcGVjdWxhdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
bGlkYXRlLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Y2xvb3BTdGFjayk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjaGVja2VkUmV0dXJu
KToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q2FsbFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrcG9pbnRSZWFj
aGVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZv
cm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNs
b3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X2R1bXBfdmFsdWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpvcjgpOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JOZXh0SGVscGVyKToKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2Vy
dmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
Ojp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
UHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6
CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFycmF5
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAgICAg
ICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVG
b3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNhbGxl
ZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAg
ICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAoSlND
OjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2Fs
bFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRC
eVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCYXNl
SW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
OjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6
YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWRl
MTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6
CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAgICAg
KiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVh
c2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9z
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAg
ICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXRU
YWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWls
QWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpB
dFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxB
YnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3
ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1hdGNo
aW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxv
Y2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFy
aWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2VlcE9w
ZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6
amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yQWxs
S2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxp
emUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Js
b2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgor
ICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlKU1Zh
bHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNv
bnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdlbmVy
YXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAq
IGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjbG9vcFN0YWNrKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpjYWxsZWVGcmFt
ZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRl
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgIChKU0M6
OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6
OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNp
Yy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
anM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JOZXh0SGVscGVyKToKKyAg
ICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9i
c2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1w
bCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAg
ICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNh
bGxlZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToK
KyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAo
SlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9H
ZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxM
SW50KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0
aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlv
bjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3
aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAg
ICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6
CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRl
Y29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJl
bGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JD
bG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAg
ICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRU
YWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRh
aWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
Ojp3ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFk
ZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1h
dGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjph
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
bGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
VmFyaWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFy
Z3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
b25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2Vl
cE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25Q
aGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9y
QWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFz
aWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNp
Y0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2Up
OgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6
OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlK
U1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBl
IGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdl
bmVyYXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAg
ICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjbG9vcFN0YWNrKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpjYWxsZWVG
cmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9p
dGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y2hlY2twb2lu
dFJlYWNoZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6
cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6c2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQpOgorICAgICAgICAoSlNDOjpMTEludDo6
bGxpbnRfZHVtcF92YWx1ZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVh
c20vdHJhbnNmb3JtLnJiOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUzMik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4
dF90cnlfZmFzdF93aWRlMzIpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjppbnRlcmF0
aW9uS2luZEZvckludHJpbnNpYyk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlND
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJsZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAyMDIwLTA0LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogYWRkIGEg
U3RlcCBuZXh0IHRoYXQgc3RlcHMgYnkgZXhwcmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlMDM5NGI3YmU1YjViYjAx
OGI0ZWZiY2M5ODVmNWI3OGRhMjI2ODZkLi5hYWEwMDFkYTg1MjY5YjY0MjYxMWE2YzQzZGQ2OTRj
ZTA1YWY0MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE1ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBp
dGVyYXRpb24gZm9yIGtub3duIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oOgorCiAy
MDIwLTA0LTE0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRv
cHQgaW50ZXJmYWNlIEFWQXVkaW9Sb3V0aW5nQXJiaXRlciBmb3IgTWFjCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25m
aWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUu
eGNjb25maWcKaW5kZXggNTJiNDZlY2M5ZTI4OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4u
NWE5YTBiNDQ0MTEwNzIzZDczOWEzMjUwMjg1ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZwpAQCAtNDAsOCArNDAsOCBAQCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltz
ZGs9bWFjb3N4Kl0gPSAtV2wsLW9yZGVyX2ZpbGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdD
Q19QUkVGSVhfSEVBREVSID0gSmF2YVNjcmlwdENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BS
SVZBVEVfRVhURVJOID0gWUVTOwotT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVt
LWhlYWRlci1wcmVmaXg9dW5pY29kZS87Ci1PVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJp
dGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChp
bmhlcml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNv
ZGUvOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9y
aXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhT
ID0gIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIg
JChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElO
U1RBTExfUEFUSCA9ICQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUwMTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4
MWNjMjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIy
MUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyog
SlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsKIAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8q
IFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmgg
Ki87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNE
ODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5
NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVBy
b2ZpbGVGb3IuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4
NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFE
REJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3
NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3
Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYs
OSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlE
IC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgx
RUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUz
RDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVz
ZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVz
ZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAw
MEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7
IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNENDQ0REQxREFGMDlBMDAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUu
Y3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUw
RTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJ
CQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgg
Ki8sCiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpc0lubGluZXMuaCAqLywKKwkJCQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNv
ZGVQcm9maWxlRm9yLmggKi8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVj
b2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZv
LmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8s
CkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJ
bnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8q
IEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjND
MDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5
MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIy
RUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3
IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdG
MSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVj
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5
dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJ
MEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0u
aCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRp
b25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyog
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcx
NkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDEx
M0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2Jm
NWJhNWViZWYwZWM4Li4xNTM5N2U4YjdmNDhhODRmYjI3ZjExZDJmMTM3MWUwZTJhMzAxY2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaApAQCAtNjg2LDYgKzY4NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3Rl
ZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dp
Y2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0u
bV92YWx1ZSk7CisgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAg
ICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9naWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9
CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBvcjY0KGRlc3QsIHNyYywgZGVzdCk7CkBAIC0xNjAzLDcgKzE2MTcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2Us
IG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJ
RCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNv
bnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CkBAIC0x
NjE4LDcgKzE2MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9y
ZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVz
dGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3Rl
ZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBp
ZiAoIWltbTgubV92YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDhjNjk3OWJiOWIyZmRlYjA0Y2Ew
MjZlNzY2ZDIwOGI3M2EwNjNmMmUuLjJhMWRkZWRlZTM2ZGJlM2NkZTU3MmY0ODYwNWE0NjRjODBi
NmU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6b3IxNjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4OwogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmxvYWQzMjsKQEAgLTk2LDYgKzk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgb3IxNihpbW0sIEFk
ZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVk
SW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAg
ICBvcjgoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9p
ZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5qcwppbmRleCA5OWE4YzE5MjNmMjVlNDQxMWQ2YjRmZjdlN2E1
OWIwNTkyMzhkODNlLi45NGIzN2ZkYTFkMWNlNmQ3MGE3OTFlN2JhNjFlZjI2M2Q1OWE1M2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlJdGVy
YXRvclByb3RvdHlwZS5qcwpAQCAtNDYsMjEgKzQ2LDE5IEBAIGZ1bmN0aW9uIGFycmF5SXRlcmF0
b3JOZXh0SGVscGVyKGFycmF5LCBraW5kKQogICAgIHZhciB2YWx1ZTsKIAogICAgIHZhciBpbmRl
eCA9IEBnZXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAYXJyYXlJdGVyYXRvckZp
ZWxkSW5kZXgpOwotICAgIGlmIChpbmRleCAhPT0gLTEpIHsKLSAgICAgICAgdmFyIGxlbmd0aCA9
IGFycmF5Lmxlbmd0aCA+Pj4gMDsKLSAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBAcHV0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQodGhpcywgQGFycmF5SXRlcmF0
b3JGaWVsZEluZGV4LCBpbmRleCArIDEpOwotICAgICAgICAgICAgZG9uZSA9IGZhbHNlOwotICAg
ICAgICAgICAgaWYgKGtpbmQgPT09IEBpdGVyYXRpb25LaW5kS2V5KQotICAgICAgICAgICAgICAg
IHZhbHVlID0gaW5kZXg7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YWx1
ZSA9IGFycmF5W2luZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlv
bktpbmRFbnRyaWVzKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFtpbmRleCwgdmFsdWVd
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIEBwdXRBcnJheUl0
ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAYXJyYXlJdGVyYXRvckZpZWxkSW5kZXgsIC0xKTsK
LSAgICB9CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICBpZiAoaW5k
ZXggPCBsZW5ndGgpIHsKKyAgICAgICAgQHB1dEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRo
aXMsIEBhcnJheUl0ZXJhdG9yRmllbGRJbmRleCwgaW5kZXggKyAxKTsKKyAgICAgICAgZG9uZSA9
IGZhbHNlOworICAgICAgICBpZiAoa2luZCA9PT0gQGl0ZXJhdGlvbktpbmRLZXkpCisgICAgICAg
ICAgICB2YWx1ZSA9IGluZGV4OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlID0g
YXJyYXlbaW5kZXhdOworICAgICAgICAgICAgaWYgKGtpbmQgPT09IEBpdGVyYXRpb25LaW5kRW50
cmllcykKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFtpbmRleCwgdmFsdWVdOworICAgICAgICB9
CisgICAgfSBlbHNlCisgICAgICAgIEBwdXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlz
LCBAYXJyYXlJdGVyYXRvckZpZWxkSW5kZXgsIEBNQVhfU0FGRV9JTlRFR0VSKTsKIAogICAgIHJl
dHVybiB7IHZhbHVlLCBkb25lIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4YzBlOGRl
MjM3YjIwMS4uOTQyNjU3YzYyZjA3NDljYTA1YzRlZWU0ZDY3Yjk1ZmU2NDU1ZDllNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApAQCAtMjA3LDEw
ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPdXRPZkJvdW5kcygpIHsgbV9vdXRPZkJv
dW5kcyA9IHRydWU7IH0KICAgICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJu
ICZtX291dE9mQm91bmRzOyB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0g
c3RydWN0dXJlLT5pZCgpOwotICAgIH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChTdHJ1
Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJ
RDsgfQorICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7IH0KIAogICAgIHZvaWQgY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9j
ayopOwogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMWY1
NjY5NGNlNzAwZmRlYmUxZmRjYmQwNDRmMmE4N2QwODhmN2VhMi4uNTg1Y2M1OGMzN2U4ODM4Njlh
NGU4Y2FiYzYwZmJkN2U0YjU2MmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVzIFsKICAgICA6R2V0
QnlWYWxIaXN0b3J5LAogICAgIDpHZXRQdXRJbmZvLAogICAgIDpJbmRleGluZ1R5cGUsCisgICAg
Okl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKICAgICA6SlNDZWxsLAogICAgIDpKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCwKICAgICA6SlNHbG9iYWxPYmplY3QsCkBAIC0xMTYyLDYgKzExNjMsNjQg
QEAgb3AgOmdldF9yZXN0X2xlbmd0aCwKICAgICAgICAgbnVtUGFyYW1ldGVyc1RvU2tpcDogdW5z
aWduZWQsCiAgICAgfQogCisjIFNlbWFudGljYWxseSwgdGhpcyBpcyBpdGVyYXRvciA9IHN5bWJv
bEl0ZXJhdG9yKGl0ZXJhYmxlKTsgbmV4dE9ySW5kZXggPSBpdGVyYXRvci5uZXh0OworIyBGb3Ig
YnVpbHRpbiBpdGVyYXRvcnMsIGhvd2V2ZXIsIHRoaXMgaGFzIHNwZWNpYWwgYmVoYXZpb3Igd2hl
cmUgaXRlcmF0b3IgYmVjb21lcyB0aGUgZW1wdHkgdmFsdWUKKyMgYW5kIG5leHRPckluZGV4IGlz
IHRoZSAiaW5kZXgiIG9mIHRoZSBpdGVyYXRvciAoaW50IGZvciBhcnJheXMvc3RyaW5ncyBhbmQg
YnVja2V0IGZvciBtYXAvc2V0KS4KK29wIDppdGVyYXRvcl9vcGVuLAorICAgIGFyZ3M6IHsKKyAg
ICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBzeW1ib2xJdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAg
ICBpdGVyYWJsZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWdu
ZWQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTog
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKKyAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAg
aXRlcmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0
QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgaXRlcmF0b3JPYmplY3Q6IEpTVmFsdWUsCisgICAg
fSwKKyAgICBjaGVja3BvaW50czogeworICAgICAgICBzeW1ib2xDYWxsOiBuaWwsCisgICAgICAg
IGdldE5leHQ6IG5pbCwKKyAgICB9CisKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIHRtcCA9IG5l
eHRPckluZGV4LmNhbGwoaXRlcmF0b3IpOyBkb25lID0gdG1wLmRvbmU7IHZhbHVlID0gZG9uZSA/
IHVuZGVmaW5lZCA6IHRtcC52YWx1ZTsKK29wIDppdGVyYXRvcl9uZXh0LAorICAgIGFyZ3M6IHsK
KyAgICAgICAgZG9uZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBpdGVyYWJsZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7Cisg
ICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAg
IGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExM
SW50Q2FsbExpbmtJbmZvLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBkb25lTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAg
ICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZU1vZGVNZXRhZGF0YTog
R2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgfSwKKyAgICB0bXBzOiB7CisgICAgICAgIG5leHRSZXN1bHQ6IEpTVmFsdWUsCisgICAg
ICAgIGlzRG9uZTogSlNWYWx1ZSwKKyAgICAgICAgdmFsdWU6IEpTVmFsdWUsCisgICAgfSwKKyAg
ICBjaGVja3BvaW50czogeworICAgICAgICBjb21wdXRlTmV4dDogbmlsLAorICAgICAgICBnZXRE
b25lOiBuaWwsCisgICAgICAgIGdldFZhbHVlOiBuaWwsCisgICAgfQorCiBvcCA6eWllbGQsCiAg
ICAgYXJnczogewogICAgICAgICBnZW5lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTEyOTAs
NiArMTM0OSw4IEBAIG9wIDpvcF9nZXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfZ2V0
X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24KIG9wIDpvcF9wdXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9u
CiBvcCA6b3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9vcGVu
X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uCiBv
cCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZQogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9f
dGxzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggYzZlZmUwZDhmZjZjNzk4OTZhZmQwMGUy
MGNjNDI3NzlkM2E0YjBjNy4uZDU4N2VlMDNmMjZkOGRmYjk0ZDA4ZDQ0MjA0MDhjYWM1MGEzOGVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTIzMSw2ICsyMzEsMTMgQEAgQml0bWFwPG1h
eE51bUNoZWNrcG9pbnRUbXBzPiB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoY29uc3QgQ29kZUJs
b2NrJiBjb2RlQmxvY2sKICAgICAgICAgICAgIHJlc3VsdC5zZXQoT3BDYWxsVmFyYXJnczo6YXJn
Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICByZXN1bHQuc2V0KE9wSXRlcmF0
b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMTRhYmQ5
MDU5YThiYTM3YjJhM2JlZmZkNzU1MGM0OWNmNmZiNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKQEAgLTAsMCAr
MSwxNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgorI2luY2x1ZGUgIkJ5dGVj
b2RlU3RydWN0cy5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworLy8gVE9ETzogTWFrZSB0aGlzIG9wdGlvbmFsLiBGaWd1cmUgb3V0IGhhc01lbWJlci4K
K3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBy
ZXR1cm4gJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlOworCisgICAgLy8g
SW5zZXJ0IHBlciBtZXRhZGF0YSBvdmVycmlkZXMgaGVyZSB3aGVuIHdlIG5lZWQgdGhlbS4KKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0
YT4KK2Jvb2wgaGFzQXJyYXlQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1
bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5UHJvZmlsZUZvcklt
cGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5
dGVjb2RlTWV0YWRhdGE+CitBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZUZvcihCeXRlY29kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VS
VChoYXNBcnJheVByb2ZpbGVGb3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJl
dHVybiAqYXJyYXlQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30K
KworLy8gVE9ETzogTWFrZSB0aGlzIG9wdGlvbmFsLiBGaWd1cmUgb3V0IGhhc01lbWJlci4KK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1ZVByb2ZpbGUqIHZhbHVlUHJv
ZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9p
bnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBj
b25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4p
IHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0
ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmls
ZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuICZtZXRhZGF0
YS5tX25leHRQcm9maWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZU1l
dGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIHN3aXRjaCAo
Y2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVO
ZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGU7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiAmbWV0YWRhdGEubV9kb25lUHJvZmlsZTsK
KyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiAmbWV0YWRhdGEu
bV92YWx1ZVByb2ZpbGU7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgCisgICAgICAgIHJldHVybiAmbWV0YWRhdGEu
bV9wcm9maWxlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorYm9v
bCBoYXNWYWx1ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVk
IGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9ySW1wbChtZXRh
ZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVN
ZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEm
IG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKGhhc1Zh
bHVlUHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CisgICAgcmV0dXJuICp2
YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK09wZXJhbmQgZGVzdGluYXRpb25Gb3IoY29uc3QgQnl0
ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgsIEpJVFR5cGUgdHlwZSA9
IEpJVFR5cGU6Ok5vbmUpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7Cisg
ICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3Blbikg
eworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRl
cmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gYnl0ZWNvZGUubV9pdGVyYXRvcjsKKyAgICAg
ICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsK
KyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2Rl
OjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2tw
b2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiB7
CisgICAgICAgICAgICBpZiAodHlwZSA9PSBKSVRUeXBlOjpERkdKSVQgfHwgdHlwZSA9PSBKSVRU
eXBlOjpERkdKSVQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhbmQ6OnRtcChPcEl0ZXJh
dG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV92YWx1
ZTsgLy8gV2UgcmV1c2UgdmFsdWUgYXMgYSB0ZW1wIGJlY2F1c2UgaXRzIGVpdGhlciBub3QgdXNl
ZCBvciB3cml0dGVuIGFzIHRoZSB0ZW1wIG9iamVjdCBkaWVzLgorICAgICAgICB9CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBieXRlY29kZS5tX2RvbmU7Cisg
ICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gYnl0ZWNvZGUubV92
YWx1ZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV9kc3Q7Cit9CisKKy8vIENhbGwtbGlrZSBvcGNvZGUgbG9jYXRpb25zCisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorVmlydHVhbFJlZ2lzdGVyIGNhbGxlZUZvcihjb25z
dCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBV
TlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2Rl
OjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3Bv
aW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcjsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRl
Y29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBBU1NFUlQoY2hl
Y2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7CisgICAgICAgIHJl
dHVybiBieXRlY29kZS5tX25leHQ7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29k
ZS5tX2NhbGxlZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+Cit1bnNpZ25lZCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0Zvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVu
c2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludElu
ZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRv
cl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9w
ZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgaWYgY29uc3Rl
eHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBB
U1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7Cisg
ICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9h
cmdjOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3B0cmRpZmZfdCBzdGFja09m
ZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVk
IGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsK
KyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVu
KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5
bWJvbENhbGwpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnMgLSBieXRlY29kZS5tX2l0ZXJhYmxlLm9mZnNldCgpOworICAgIH0gZWxzZSBpZiBjb25zdGV4
cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFT
U0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAg
ICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gYnl0ZWNvZGUu
bV9pdGVyYXRvci5vZmZzZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2Rl
Lm1fYXJndjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0xMSW50
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm9Gb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEs
IHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2lu
dEluZGV4KTsKKyAgICByZXR1cm4gbWV0YWRhdGEubV9jYWxsTGlua0luZm87Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYy
NmMxMy4uYTVhNTA3ZWQyZTkyZGNlZTNmYzE1MWJkZWIyYTYyNzI3M2MyMjc1MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0y
NTksNiArMjU5LDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1
YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKIAogICAgIFVTRVMoT3BZaWVs
ZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKIAorICAgIFVTRVMoT3BJdGVyYXRvck9wZW4sIHN5bWJv
bEl0ZXJhdG9yLCBpdGVyYWJsZSkKKyAgICBVU0VTKE9wSXRlcmF0b3JOZXh0LCBpdGVyYXRvciwg
bmV4dCwgaXRlcmFibGUpCisKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NwcmVhZDoKICAg
ICAgICAgaGFuZGxlTmV3QXJyYXlMaWtlKGluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5V2l0aFNw
cmVhZD4oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw2ICs0ODksOSBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydQogCiAgICAgREVGUyhPcENhdGNoLCBleGNlcHRpb24sIHRocm93blZhbHVl
KQogCisgICAgREVGUyhPcEl0ZXJhdG9yT3BlbiwgaXRlcmF0b3IsIG5leHQpCisgICAgREVGUyhP
cEl0ZXJhdG9yTmV4dCwgZG9uZSwgdmFsdWUpCisKICAgICBjYXNlIG9wX2VudGVyOiB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bVZhcnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9y
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDI5ZjYwZTk0MjgyMjU5MTk0Nzc2ODU1
N2VhODdhNjU3ZjIzYTYwYi4uOTE1Y2M2MzFkYmQyODQ1ZWU5MTM4ZTEzOWViNjllOTYzNDE3NTEy
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAKQEAgLTQwLDE4ICs0MCwzNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQ2FsbExpbmtJbmZvOjpD
YWxsVHlwZSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKE9wY29kZUlEIG9wY29kZUlEKQogewot
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkK
KyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoK
KyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKKyAgICAgICAgcmV0dXJu
IFRhaWxDYWxsVmFyYXJnczsgICAgICAgIAorCisgICAgY2FzZSBvcF9jYWxsOgorICAgIGNhc2Ug
b3BfY2FsbF9ldmFsOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNlIG9wX2l0
ZXJhdG9yX25leHQ6CiAgICAgICAgIHJldHVybiBDYWxsOwotICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsX3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICAgICAgcmV0
dXJuIENhbGxWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3QpCisKKyAg
ICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdDsKLSAgICBpZiAo
b3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2NvbnN0cnVj
dF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ29uc3RydWN0VmFyYXJnczsKLSAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfdGFpbF9jYWxsKQorCisgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAg
IHJldHVybiBUYWlsQ2FsbDsKLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3Zh
cmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKTsKLSAg
ICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENh
bGw7CiB9CiAKIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGYxM2QxNzM0YTAy
YzU4YTMyMTc1OTI1ZDI4ODU1YTJhMjYwMDE4MTguLmI5MGY4MjQ2ZmM2MTExMzc4YWViZWY5MDI1
NmYxMTVlZjE3ZTNiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtODEsNiArODEsMTMgQEAgQ2FsbExpbmtTdGF0dXMgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q29kZUIKICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FsbExpbmtJbmZvID0gJmlu
c3RydWN0aW9uLT5hczxPcFRhaWxDYWxsPigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2Fs
bExpbmtJbmZvOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46Cisg
ICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCku
bWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2Nh
bGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gQ2FsbExpbmtTdGF0dXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0OTIwYjZhODc4MTU3ZTYxNjBiNjUzZTdh
NGU3MzA0YjIuLmE0YTdjNWFhYmYwNTZiMzgzMTQ0ODQxOGY5MWRhODg1NGY3YmE3YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1
ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIK
QEAgLTk3LDYgKzk4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51
bWJlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCisKICNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAj
ZW5kaWYKQEAgLTU4Myw2ICs1ODUsMjAgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgTElOSyhPcENhdGNoKQogICAgICAgICBMSU5LKE9wUHJvZmlsZUNvbnRyb2xGbG93KQogCisg
ICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICAgICAgSU5JVElBTElaRV9N
RVRBREFUQShPcEl0ZXJhdG9yT3BlbikKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgICAgIElOSVRJQUxJWkVf
TUVUQURBVEEoT3BJdGVyYXRvck5leHQpCisKKyAgICAgICAgICAgIG1fbnVtYmVyT2ZOb25Bcmd1
bWVudFZhbHVlUHJvZmlsZXMgKz0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CiAgICAgICAgICAgICBJTklUSUFMSVpF
X01FVEFEQVRBKE9wUmVzb2x2ZVNjb3BlKQogCkBAIC0xMjI0LDYgKzEyNDAsMzMgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQxOAogICAgICAgICAv
LyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9o
b2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2NvcGUgcmVzb2x1dGlv
bi4KIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JPcGVuPihbJl0gKGF1
dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
bW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYgKCFvbGRTdHJ1
Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdl
dChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIGl0ZXJhdG9yIG9wZW4gTExJbnQgcHJvcGVydHkgYWNjZXNzLlxuIik7CisgICAgICAg
ICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFy
TExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgICAgICB9KTsK
KworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0
byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8gY2xlYXJJZk5lZWRlZCA9IFsmXSAoR2V0
QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgaWYgKG1v
ZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQg
PSBtb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAg
aWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2xlYXJpbmcgaXRlcmF0b3IgbmV4dCBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAgICAg
ICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsK
KyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7
CisgICAgICAgIH0pOworCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMjMxLDcgKzEyNzQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElu
bGluZUNhY2hlcygpCiAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAu
aXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAg
ICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpj
bGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhKTsKKyAgICAgICAgICAgIExMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNo
ZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkRGlyZWN0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CkBA
IC0xMzI2LDkgKzEzNjksMjcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMoKQogICAgICAgICBhdXRvIGNsZWFyID0gWyZdICgpIHsKICAgICAgICAgICAgIGF1dG8m
IGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoc3RkOjpnZXQ8MT4ocGFpci5rZXkpKTsK
ICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwot
ICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBvcF9nZXRfYnlfaWQpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogewogICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExM
SW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKSk7CisgICAgICAgICAgICAg
ICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxM
SW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEodGhp
cykubV9tb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgaXRlcmF0
b3Igb3BlbiBwcm9wZXJ0eSBhY2Nlc3MuIik7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hl
KGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVN
ZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBuZXh0IHBy
b3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgcmVh
bGx5IHdhbnQgdG8gY2xlYXIgYm90aCBjYWNoZXMgaGVyZSBidXQgaXQncyBraW5kYSBhbm5veWlu
ZyB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZSB0aGlzIGlzIHJlZmVycmluZyB0by4uLgorICAgICAg
ICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0
PigpLm1ldGFkYXRhKHRoaXMpOworICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0
YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRh
ZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTMw
NDEsNiArMzEwMiwxMSBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjbwogCiAjdW5kZWYgQ0FTRQog
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAgICByZXR1cm4gJnZhbHVlUHJvZmls
ZUZvcihpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEodGhpcyksIGJ5
dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6Cisg
ICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
TmV4dD4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCmluZGV4IDIyZTc2YjE4NWVi
OWViYTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEuLjUzNjIyODkwN2U4NGM0OTMzY2QyOTNkZjM1
MDE3YmY3OWRlNzRmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzksMTIgKzM5LDI0IEBAIHZvaWQgQ29kZUJsb2NrOjpm
b3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiAKICAgICBpZiAobV9tZXRh
ZGF0YSkgewogI2RlZmluZSBWSVNJVChfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxz
ZSk7IH0pOworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAogI3VuZGVmIFZJU0lU
Ci0gICAgfQorCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsgCisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmFi
bGVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmF0b3JQ
cm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUs
IGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0
ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgZnVuYyhtZXRh
ZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFk
YXRhLm1fZG9uZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV92
YWx1ZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgfSAgIAogCiB9CiAKQEAgLTY4
LDYgKzgwLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1
bmN0b3ImIGZ1bmMpCiAKICN1bmRlZiBWSVNJVDEKICN1bmRlZiBWSVNJVDIKKworICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
U3RhdHVzLmNwcAppbmRleCA5M2YyMjcwYWNhNjUyYmYxOWMyYzk1NTkxZWRhZTUxNjc3YTI4OGMy
Li4yODJjZjhmNDI3YzFmYmVhYjI5NmEzNTgzYjA3OTk0MWRhMTBlZjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTg2LDYgKzg2LDM1
IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJbmRlCiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgogICAg
ICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogCisgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIEFTU0VSVChieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKSA9PSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dCk7CisgICAgICAgIGF1dG8mIG1ldGFk
YXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHByb2ZpbGVk
QmxvY2spOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGp1c3QgYmFpbCBpZiB3
ZSBzZWUgYSBnZXRfYnlfaWRfcHJvdG9fbG9hZC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAzOQorICAgICAgICBpZiAobWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIHJl
dHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgIHN0cnVjdHVy
ZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7Cisg
ICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+bmV4dDsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHBy
b2ZpbGVkQmxvY2spOworICAgICAgICBpZiAoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgPT0g
T3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX2Rv
bmVNb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICAg
ICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUu
c3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZGVudGlmaWVyID0gJnZtLnByb3BlcnR5TmFtZXMt
PmRvbmU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV92YWx1
ZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAg
ICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAg
ICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUu
c3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZGVudGlmaWVyID0gJnZtLnByb3BlcnR5TmFtZXMt
PnZhbHVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBHZXRCeVN0
YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IDA4NWFlOGQxOTk3NmI4ODZmMDAxOWY4NWZhNjdiMDJi
ZTE0Y2RhNWUuLjNkNzBjZDU0M2VjZmFlOTAyMjUwMjk2MDFhMGQ0MDVlYzY3MWIyZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC0zMiw3ICsz
Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgSlNPcGNvZGVUcmFpdHMgewogICAgIHVz
aW5nIE9wY29kZUlEID0gOjpKU0M6Ok9wY29kZUlEOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bj
b2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPSBzdGF0aWNfY2FzdDxPcGNv
ZGVJRD4oTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfQ0hFQ0tQT0lOVFMpOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEpOworICAgIHN0
YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZC
eXRlY29kZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lk
ZTE2ID0gb3Bfd2lkZTE2OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTMyID0g
b3Bfd2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxl
bmd0aHMgPSA6OkpTQzo6b3Bjb2RlTGVuZ3RoczsKQEAgLTQxLDcgKzQzLDkgQEAgc3RydWN0IEpT
T3Bjb2RlVHJhaXRzIHsKIAogc3RydWN0IFdhc21PcGNvZGVUcmFpdHMgewogICAgIHVzaW5nIE9w
Y29kZUlEID0gV2FzbU9wY29kZUlEOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVt
YmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVN
QkVSX09GX1dBU01fV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNv
ZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0PE9wY29kZUlE
PihOVU1CRVJfT0ZfV0FTTV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJl
ck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFk
YXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9IHdhc21fd2lkZTE2
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTMyID0gd2FzbV93aWRlMzI7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3RocyA9IHdhc21P
cGNvZGVMZW5ndGhzOwpAQCAtOTgsMTIgKzEwMiwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTMy
OwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRz
PgorICAgIE9wY29kZVNpemUgd2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzV2lk
ZTMyPFRyYWl0cz4oKSkKKyAgICAgICAgICAgIHJldHVybiBPcGNvZGVTaXplOjpXaWRlMzI7Cisg
ICAgICAgIHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkgPyBPcGNvZGVTaXplOjpXaWRlMTYgOiBP
cGNvZGVTaXplOjpOYXJyb3c7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRz
ID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVj
b2Rlc1dpdGhNZXRhZGF0YTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICBib29sIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0
ZWNvZGVzV2l0aENoZWNrcG9pbnRzOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRy
YWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGludCBzaXplU2hpZnRBbW91bnQoKSBjb25zdAog
ICAgIHsKQEAgLTEzNyw2ICsxNTUsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVDo6ZGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpKTsKICAgICB9CiAKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRoLCB0eXBlbmFtZSBUcmFpdHMgPSBK
U09wY29kZVRyYWl0cz4KKyAgICBUIGFzS25vd25XaWR0aCgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAgICByZXR1cm4gVChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHR5cGVuYW1lIFR5cGVCeVNpemU8d2lkdGg+Ojp1bnNpZ25lZFR5cGUqPih0
aGlzICsgKHdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdyA/IDEgOiAyKSkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgog
ICAgIFQqIGNhc3QoKQogICAgIHsKQEAgLTE2MSw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgewog
CiAgICAgICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+KCkpOwotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qPihiaXR3aXNlX2Nh
c3Q8dWludHB0cl90Pih0aGlzKSArIDEpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qPih0aGlzICsgMSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CkBAIC0xNjksMTQg
KzE5NCwxNiBAQCBwdWJsaWM6CiAgICAgewogCiAgICAgICAgIEFTU0VSVChpc1dpZGUzMjxUcmFp
dHM+KCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29k
ZVNpemU6OldpZGUzMj4qPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIDEpOworICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUz
Mj4qPih0aGlzICsgMSk7CiAgICAgfQogfTsKIAogc3RydWN0IEluc3RydWN0aW9uIDogcHVibGlj
IEJhc2VJbnN0cnVjdGlvbjxPcGNvZGVJRD4gewogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKElu
c3RydWN0aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0
aCIpOwogCiBzdHJ1Y3QgV2FzbUluc3RhbmNlIDogcHVibGljIEJhc2VJbnN0cnVjdGlvbjxXYXNt
T3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtSW5zdGFuY2UpID09IDEs
ICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0
ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0
ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZDY5MTkzMWM2Yzc5NDhlNTU3ZTRm
NTY5MjNhZTM0OTBmZWI5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBJdGVyYXRpb25Nb2RlIDogdWludDhfdCB7
CisgICAgR2VuZXJpYyA9IDEgPDwgMCwKKyAgICBGYXN0QXJyYXkgPSAxIDw8IDEsCit9OworCitj
b25zdGV4cHIgdWludDhfdCBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzID0gMjsKKworT1ZFUkxPQURf
QklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFUkdSQUxTKEl0ZXJhdGlv
bk1vZGUpOworCitzdHJ1Y3QgSXRlcmF0aW9uTW9kZU1ldGFkYXRhIHsKKyAgICB1aW50OF90IHNl
ZW5Nb2RlcyB7IDAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzZWVuTW9k
ZXMpKSA9PSBzaXplb2YoSXRlcmF0aW9uTW9kZSkpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuY3BwCmluZGV4IDJkMTQzYjljZjY3NDMwNWQ0MGM5MWViMGFlMzUxMzMxMjU2OTQ0MWYuLmJi
ZTFmNjdmZmJlZmU4ZThiYjEzNjdlYjZjN2VkNjdjYmFhOGFiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBAIC02MCwx
NCArNjAsMzEgQEAgdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEYKICAgICB9CiAKICAgICBhdXRvJiBp
bnN0cnVjdGlvbiA9IG1fb3duZXItPmluc3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVPZmZzZXQu
Z2V0KCkpOwotICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
QnlJZD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKSk7CisgICAgc3dpdGNoIChpbnN0cnVjdGlv
bi0+b3Bjb2RlSUQoKSkgeworICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjbGVhckxM
SW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEobV9v
d25lci5nZXQoKSkubV9tb2RlTWV0YWRhdGEpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVj
dGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkubV9tb2Rl
TWV0YWRhdGEpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDog
eworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4
dD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRD
YWNoZShtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgICAgICBjbGVhckxMSW50R2V0
QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKLXZvaWQgTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0
QnlJZDo6TWV0YWRhdGEmIG1ldGFkYXRhKQordm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0QnlJZE1vZGVN
ZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgLy8gS2VlcCBoaXRDb3VudEZvckxMSW50Q2FjaGlu
ZyB2YWx1ZS4KLSAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVX
aXRob3V0Q2FjaGUoKTsKKyAgICBtZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2Fj
aGUoKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRleCAyMjBmZmYzZTNiZjU0MzQx
ZTk2MWM4MmRmOGM0ZThjOTAwMDczNGJlLi4xZDU5NTdlZmY4MTA5MmExZGFiZGVlNTAyNWNhYzVl
NmYzODY3ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5z
dGFsbChWTSYpOwogCi0gICAgc3RhdGljIHZvaWQgY2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdl
dEJ5SWQ6Ok1ldGFkYXRhJik7CisgICAgc3RhdGljIHZvaWQgY2xlYXJMTEludEdldEJ5SWRDYWNo
ZShHZXRCeUlkTW9kZU1ldGFkYXRhJik7CiAKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oCmluZGV4IDE4NTFiNjNjN2NhNmFlZjJmYjM2YmYyZjg3ZTkyYTE5
ZTBkNDBjMTguLmFhODg1OWFkZDYyODYwZmZkYWRiNGQyMjI4N2MzNGIwN2NlNWIzMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4T3Bjb2RlTGVuZ3RoID0gV1RG
OjpnZXRNU0JTZXRDb25zdGV4cHIobQogICAgIG1hY3JvKE9wVGFpbENhbGwpIFwKICAgICBtYWNy
byhPcENhbGxFdmFsKSBcCiAgICAgbWFjcm8oT3BDb25zdHJ1Y3QpIFwKKyAgICBtYWNybyhPcEl0
ZXJhdG9yT3BlbikgXAorICAgIG1hY3JvKE9wSXRlcmF0b3JOZXh0KSBcCisKIAogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggNWRiMThjNjQ4MmQ3NmQ0ZmE3YjQ2ZTk4
YjlmOTcwMGRjMzg2MzBmNC4uOTQ2NThiMDk2YmYxOTNjODdjZmQ3MWE5ZjViZGUxNWY2MTMzMmE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmgKQEAgLTEyMCw2ICsxMjAsMTYgQEAgaW5saW5lIGJvb2wgaXNBbnlTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5saW5lIGJvb2wgaXNTdWJ0eXBl
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIGNhdGVnb3J5
KQoreworICAgIHJldHVybiAhKHZhbHVlICYgfmNhdGVnb3J5KSAmJiB2YWx1ZTsKK30KKworaW5s
aW5lIGJvb2wgc3BlY3VsYXRpb25Db250YWlucyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3Vs
YXRlZFR5cGUgY2F0ZWdvcnkpCit7CisgICAgcmV0dXJuICEhKHZhbHVlICYgY2F0ZWdvcnkpICYm
IHZhbHVlOworfQorCiBpbmxpbmUgYm9vbCBpc0NlbGxTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQ2VsbCkgJiYgISh2YWx1ZSAm
IH5TcGVjQ2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmgKaW5kZXggOTYxMGRjZTVjZGJjM2VjMDljZTMzYjFkNmJjYzRiM2ZmOGE2YzNjOC4uZTli
Zjk1MzFmN2JhNTk1NzMxMTBlMzFhN2E0NGNkMjI4Yjc1NzEwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaApAQCAtNDgsNiArNDgsMTMgQEAgcHVi
bGljOgogICAgICAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOwogICAgIH0KIAorICAgIHZv
aWQgcmVsZWFzZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9kb1NhbXBsZSk7CisgICAgICAg
IGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKKyAgICAgICAgbV9kb1NhbXBsZSA9IGZhbHNlOworICAg
IH0KKwogcHJpdmF0ZToKICAgICBib29sIG1fZG9TYW1wbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA2M2QzNjJjYWMxOWQ0OTM5ODk0Nzc3YmVkYTdjMGFjMmQ2MzYwNjNmLi44ZmVkZTYyYjUz
MGViZDEwMWZlZGE2MWFiYWI5NDlhM2YzYjM1OWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDAx
NiwxNCArNDAxNiwxNSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNl
cHRpb25JZk5lZWRlZChjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxs
QmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRh
YmxlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBj
b25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4m
IGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3lt
Ym9sVGFibGUpCiB7CiAgICAgYm9vbCBpc0ZvckF3YWl0ID0gZm9yTG9vcE5vZGUgPyBmb3JMb29w
Tm9kZS0+aXNGb3JBd2FpdCgpIDogZmFsc2U7Ci0gICAgQVNTRVJUKCFpc0ZvckF3YWl0IHx8IChp
c0ZvckF3YWl0ICYmIGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkpKTsKKyAg
ICBhdXRvIHNob3VsZEVtaXRBd2FpdCA9IGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVt
aXRBd2FpdDo6Tm87CisgICAgQVNTRVJUKCFpc0ZvckF3YWl0IHx8IGlzQXN5bmNGdW5jdGlvblBh
cnNlTW9kZShwYXJzZU1vZGUoKSkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1YmplY3Qg
PSBuZXdUZW1wb3JhcnkoKTsKICAgICBlbWl0Tm9kZShzdWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9k
ZSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gaXNGb3JBd2FpdCA/IGVtaXRH
ZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKHN1
YmplY3QuZ2V0KCksIG5vZGUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGlz
Rm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKSA6IGVt
aXRHZXRHZW5lcmljSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSk7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0
b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAogICAgIFJlZjxMYWJlbD4gbG9vcERv
bmUgPSBuZXdMYWJlbCgpOwpAQCAtNDEzMCw3ICs0MTMxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHBy
ZXNzaW8KICAgICAgICAgfQogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5l
eHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBub2RlLCBp
c0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgICAg
IGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBp
dGVyYXRvci5nZXQoKSwgbm9kZSwgc2hvdWxkRW1pdEF3YWl0KTsKIAogICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9w
ZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsKICAgICAgICAgICAgIGVtaXRHZXRC
eUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAg
LTQxNDMsNyArNDE0NCwxNDUgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0
aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICAgICAgcG9w
RmluYWxseUNvbnRyb2xGbG93U2NvcGUoKTsKICAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5k
KSB7CiAgICAgICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBj
b250cm9sIGZsb3cuCi0gICAgICAgICAgICBlbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQo
KSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObyk7Cisg
ICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUs
IHNob3VsZEVtaXRBd2FpdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZW1pdExhYmVsKGxvb3BE
b25lLmdldCgpKTsKK30KKworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0
Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9y
TG9vcFN5bWJvbFRhYmxlKQoreworICAgIGlmICghT3B0aW9uczo6dXNlSXRlcmF0aW9uSW50cmlu
c2ljcygpIHx8IGlzMzJCaXQoKSB8fCAoZm9yTG9vcE5vZGUgJiYgZm9yTG9vcE5vZGUtPmlzRm9y
QXdhaXQoKSkpIHsKKyAgICAgICAgZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihub2RlLCBzdWJqZWN0
Tm9kZSwgY2FsbEJhY2ssIGZvckxvb3BOb2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhYmxlID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5vZGUoaXRlcmFibGUuZ2V0KCksIHN1YmplY3ROb2RlKTsK
KworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclN5bWJvbCA9IGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCBpdGVyYWJsZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3lt
Ym9sKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE9ySW5kZXggPSBuZXdUZW1wb3Jhcnko
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBuZXdUZW1wb3JhcnkoKTsKKyAg
ICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIsIDApOworICAgIG1vdmUoYXJncy50
aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUuZ2V0KCkpOworICAgIGVtaXRJdGVyYXRvck9wZW4oaXRl
cmF0b3IuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBpdGVyYXRvclN5bWJvbC5nZXQoKSwgYXJn
cywgbm9kZSk7CisKKyAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKKyAgICBS
ZWY8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gZmlu
YWxseVZpYVRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gZmluYWxseUxh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGNhdGNoTGFiZWwgPSBuZXdMYWJlbCgp
OworICAgIFJlZjxMYWJlbD4gZW5kQ2F0Y2hMYWJlbCA9IG5ld0xhYmVsKCk7CisKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0TG9hZCh2YWx1
ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAvLyBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRl
cmF0b3IncyBsaWZldGltZSBtdXN0IGJlIGxvbmdlciB0aGFuIEl0ZXJhdG9yQ2xvc2VDb250ZXh0
LgorICAgIEZpbmFsbHlDb250ZXh0IGZpbmFsbHlDb250ZXh0KCp0aGlzLCBmaW5hbGx5TGFiZWwu
Z2V0KCkpOworICAgIHB1c2hGaW5hbGx5Q29udHJvbEZsb3dTY29wZShmaW5hbGx5Q29udGV4dCk7
CisKKyAgICB7CisgICAgICAgIFJlZjxMYWJlbFNjb3BlPiBzY29wZSA9IG5ld0xhYmVsU2NvcGUo
TGFiZWxTY29wZTo6TG9vcCk7CisKKyAgICAgICAgUmVmPExhYmVsPiBsb29wU3RhcnQgPSBuZXdM
YWJlbCgpOworICAgICAgICBlbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgZW1p
dExhYmVsKCpzY29wZS0+Y29udGludWVUYXJnZXQoKSk7CisgICAgICAgIGVtaXRMb29wSGludCgp
OworCisgICAgICAgIGlmIChmb3JMb29wTm9kZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZm9yTG9vcE5vZGUtPmlzRm9yT2ZOb2RlKCkpOworICAgICAgICAgICAgcHJlcGFyZUxleGlj
YWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0aW9uKGZvckxvb3BOb2RlLCBmb3JMb29wU3ltYm9s
VGFibGUpOworICAgICAgICAgICAgZW1pdERlYnVnSG9vayhmb3JMb29wTm9kZS0+bGV4cHIoKSk7
CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZG9uZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJn
cygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgICAgICAgICBtb3ZlKG5leHRBcmdzLnRoaXNSZWdp
c3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHQo
ZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGl0ZXJhYmxlLmdldCgpLCBuZXh0T3JJbmRleC5nZXQo
KSwgbmV4dEFyZ3MsIG5vZGUpOworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQo
KSwgbG9vcERvbmUuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgZW1pdExhYmVsKHRyeVN0
YXJ0TGFiZWwuZ2V0KCkpOworICAgICAgICBUcnlEYXRhKiB0cnlEYXRhID0gcHVzaFRyeSh0cnlT
dGFydExhYmVsLmdldCgpLCBmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6
OlN5bnRoZXNpemVkRmluYWxseSk7CisgICAgICAgIGNhbGxCYWNrKCp0aGlzLCB2YWx1ZS5nZXQo
KSk7CisgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgLy8gSXRl
cmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYWJydXB0IGNvbXBsZXRpb25zLgorICAgICAgICB7Cisg
ICAgICAgICAgICAvLyBGaW5hbGx5IGJsb2NrIGZvciB0aGUgZW51bWVyYXRpb24uCisgICAgICAg
ICAgICBlbWl0TGFiZWwoZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAg
cG9wVHJ5KHRyeURhdGEsIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAg
ICAgUmVmPExhYmVsPiBmaW5hbGx5Qm9keUxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3Jh
cnkoKTsKKworICAgICAgICAgICAgZW1pdE91dE9mTGluZUZpbmFsbHlIYW5kbGVyKGZpbmFsbHlD
b250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRp
b25UeXBlUmVnaXN0ZXIoKSwgdHJ5RGF0YSk7CisgICAgICAgICAgICBtb3ZlKGZpbmFsbHlFeGNl
cHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlvblZhbHVlUmVnaXN0
ZXIoKSk7CisgICAgICAgICAgICBlbWl0SnVtcChmaW5hbGx5Qm9keUxhYmVsLmdldCgpKTsKKwor
ICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBt
b3ZlRW1wdHlWYWx1ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAg
ICAgICAvLyBGaW5hbGx5IGZhbGwgdGhyb3VnaCBjYXNlLgorICAgICAgICAgICAgZW1pdExhYmVs
KGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgcmVzdG9yZVNjb3BlUmVnaXN0
ZXIoKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiBmaW5hbGx5RG9uZSA9IG5ld0xhYmVsKCk7
CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1
cm5LZXl3b3JkKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChu
ZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZmluYWxseURvbmUuZ2V0KCkpOwor
CisgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVybkNhbGxUcnlTdGFydCA9IG5ld0xhYmVsKCk7
CisgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuQ2FsbFRyeVN0YXJ0LmdldCgpKTsKKyAgICAg
ICAgICAgIFRyeURhdGEqIHJldHVybkNhbGxUcnlEYXRhID0gcHVzaFRyeShyZXR1cm5DYWxsVHJ5
U3RhcnQuZ2V0KCksIGNhdGNoTGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZENh
dGNoKTsKKworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMs
IG51bGxwdHIpOworICAgICAgICAgICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCBy
ZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBu
b2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVn
Z2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVj
dChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisgICAg
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iX3MpOworCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseURvbmUu
Z2V0KCkpOworICAgICAgICAgICAgZW1pdEZpbmFsbHlDb21wbGV0aW9uKGZpbmFsbHlDb250ZXh0
LCBlbmRDYXRjaExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgcG9wVHJ5KHJldHVybkNhbGxU
cnlEYXRhLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAgICAgICAgICAgIC8vIENhdGNoIGJsb2Nr
IGZvciBleGNlcHRpb25zIHRoYXQgbWF5IGJlIHRocm93biB3aGlsZSBjYWxsaW5nIHRoZSByZXR1
cm4KKyAgICAgICAgICAgIC8vIGhhbmRsZXIgaW4gdGhlIGVudW1lcmF0aW9uIGZpbmFsbHkgYmxv
Y2suIFRoZSBvbmx5IHJlYXNvbiB3ZSBuZWVkIHRoaXMKKyAgICAgICAgICAgIC8vIGNhdGNoIGJs
b2NrIGlzIGJlY2F1c2UgaWYgZW50ZXJlZCB0aGUgYWJvdmUgZmluYWxseSBibG9jayBkdWUgdG8g
YSB0aHJvd24KKyAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiwgdGhlbiB3ZSB3YW50IHRvIHJlLXRo
cm93IHRoZSBvcmlnaW5hbCBleGNlcHRpb24gb24gZXhpdGluZworICAgICAgICAgICAgLy8gdGhl
IGZpbmFsbHkgYmxvY2suIE90aGVyd2lzZSwgd2UnbGwgbGV0IGFueSBuZXcgZXhjZXB0aW9uIHBh
c3MgdGhyb3VnaC4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwoY2F0
Y2hMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhj
ZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3V0
T2ZMaW5lRmluYWxseUhhbmRsZXIoZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlDb250
ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgcmV0dXJuQ2FsbFRyeURhdGEpOworICAgICAg
ICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBzeW50aGVzaXplZCBjYXRjaCBibG9jayBhbmQg
d2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBuZWVkCisgICAgICAgICAgICAgICAgLy8gdG8gcmVz
b2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBzY29wZSwgd2UgY2FuIHNraXAgcmVzdG9yaW5nIHRo
ZSBzY29wZQorICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGhlcmUuCisKKyAgICAgICAgICAg
ICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc0VtcHR5KG5ld1RlbXBvcmFyeSgpLCBmaW5hbGx5RXhjZXB0
aW9uUmVnaXN0ZXIuZ2V0KCkpLCB0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBt
b3ZlKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0
KCkpOworCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGVtaXRUaHJvdyhleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAg
ICAgICAgICAgICBlbWl0TGFiZWwoZW5kQ2F0Y2hMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBib29sIGJyZWFrTGFiZWxJc0JvdW5kID0gc2NvcGUtPmJy
ZWFrVGFyZ2V0TWF5QmVCb3VuZCgpOworICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpCisg
ICAgICAgICAgICBlbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOworICAgICAgICBwb3BG
aW5hbGx5Q29udHJvbEZsb3dTY29wZSgpOworICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQp
IHsKKyAgICAgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNv
bnRyb2wgZmxvdy4KKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRv
ci5nZXQoKSwgbm9kZSwgRW1pdEF3YWl0OjpObyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZW1p
dExhYmVsKGxvb3BEb25lLmdldCgpKTsKQEAgLTQyNjUsNTYgKzQ0MDQsNiBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzRW1wdHkoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMpCiAgICAgT3BJc0VtcHR5OjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKICAgICByZXR1
cm4gZHN0OwogfQotICAgIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3Rl
cklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRB
d2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFy
Z3VtZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2Qs
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+
ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotCi0g
ICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKLSAgICAgICAgICAgIGVt
aXRBd2FpdChkc3QpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2Jq
ZWN0ID0gbmV3TGFiZWwoKTsKLSAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5l
d1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgICAgICBlbWl0VGhy
b3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4i
X3MpOwotICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGRzdDsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9k
LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBu
ZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50
cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4
dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgp
LCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpO
byk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRzdDsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQpCi17Ci0gICAgUmVm
PExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5h
bWVzKCkucmV0dXJuS2V5d29yZCk7Ci0gICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVk
KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBkb25lLmdldCgpKTsKLQotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgIENhbGxBcmd1
bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKLSAgICBtb3ZlKHJldHVybkFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgIGVtaXRDYWxsKHZhbHVlLmdl
dCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1l
bnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCks
IERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0
OjpZZXMpCi0gICAgICAgIGVtaXRBd2FpdCh2YWx1ZS5nZXQoKSk7Ci0KLSAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwgZG9uZS5nZXQo
KSk7Ci0gICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIl9zKTsKLSAgICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7Ci19CiAKIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBs
b2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyKQogewpAQCAtNDU1NSw3ICs0
NjQ0LDM1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBd2FpdChSZWdpc3RlcklEKiB2
YWx1ZSkKICAgICBtb3ZlKHZhbHVlLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVy
SUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRvciwgQ2FsbEFyZ3VtZW50
cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAg
IC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdp
c3RlcklEPiwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBjYWxsRnJhbWU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6Omhl
YWRlclNpemVJblJlZ2lzdGVyczsgKytpKQorICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1Rl
bXBvcmFyeSgpKTsKKworICAgIGlmIChzaG91bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBl
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsK
KworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0
KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIE9wSXRlcmF0b3JPcGVuOjplbWl0KHRoaXMsIGl0
ZXJhdG9yLCBuZXh0T3JJbmRleCwgc3ltYm9sSXRlcmF0b3IsIGl0ZXJhYmxlLnRoaXNSZWdpc3Rl
cigpLCBpdGVyYWJsZS5zdGFja09mZnNldCgpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiB2YWx1ZSwg
UmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBDYWxsQXJndW1l
bnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7Cisg
ICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJl
Z2lzdGVySUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9y
T3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3
VGVtcG9yYXJ5KCkpOworCisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAg
IGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkp
OworCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3Rh
cnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck5leHQ6OmVtaXQodGhpcywg
ZG9uZSwgdmFsdWUsIGl0ZXJhYmxlLCBuZXh0T3JJbmRleCwgaXRlcmF0b3IudGhpc1JlZ2lzdGVy
KCksIGl0ZXJhdG9yLnN0YWNrT2Zmc2V0KCkpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0
ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5h
bWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGVtaXRDYWxsSXRlcmF0b3IoaXRlcmF0b3IuZ2V0
KCksIGFyZ3VtZW50LCBub2RlKTsKQEAgLTQ1NjMsNiArNDY4MCw1NyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBU
aHJvd2FibGVFeAogICAgIHJldHVybiBpdGVyYXRvci5nZXQoKTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQpCit7Cisg
ICAgeworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIp
OworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsK
KyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5l
eHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2
b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICBpZiAoZG9FbWl0QXdhaXQg
PT0gRW1pdEF3YWl0OjpZZXMpCisgICAgICAgICAgICBlbWl0QXdhaXQoZHN0KTsKKyAgICB9Cisg
ICAgeworICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlw
ZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciBy
ZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgZW1pdExhYmVs
KHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUpCit7CisgICAgeworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRo
aXMsIG51bGxwdHIsIDEpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGl0ZXJhdG9yKTsKKyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0
ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3Rh
cnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZHN0OworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JH
ZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQpCit7CisgICAgUmVmPExhYmVsPiBk
b25lID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0g
ZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkucmV0
dXJuS2V5d29yZCk7CisgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBv
cmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBkb25lLmdldCgpKTsKKworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIENhbGxBcmd1bWVudHMgcmV0
dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1
cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2Rl
LT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2Fi
bGVDYWxsOjpObyk7CisKKyAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCisg
ICAgICAgIGVtaXRBd2FpdCh2YWx1ZS5nZXQoKSk7CisKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0
SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7CisgICAg
ZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIl9zKTsKKyAgICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7Cit9CisKKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQs
IHByb3BlcnR5TmFtZXMoKS5hc3luY0l0ZXJhdG9yU3ltYm9sKTsKQEAgLTQ1NzUsNyArNDc0Myw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcihS
ZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhCiAgICAgZW1pdEp1bXAoYXN5bmNJdGVyYXRvckZv
dW5kLmdldCgpKTsKICAgICBlbWl0TGFiZWwoYXN5bmNJdGVyYXRvck5vdEZvdW5kLmdldCgpKTsK
IAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25JdGVyYXRvciA9IGVtaXRHZXRJdGVyYXRv
cihhcmd1bWVudCwgbm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9y
ID0gZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CiAgICAgbW92ZShpdGVy
YXRvci5nZXQoKSwgY29tbW9uSXRlcmF0b3IuZ2V0KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKQEAgLTQ2MDQsNyArNDc3Miw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVt
cG9yYXJ5KCk7CiAgICAgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBw
YXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBl
bWl0R2V0QXN5bmNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3IoYXJn
dW1lbnQsIG5vZGUpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBwYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBlbWl0
R2V0QXN5bmNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSkgOiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9y
KGFyZ3VtZW50LCBub2RlKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2Qg
PSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFt
ZXMoKS5uZXh0KTsKIAogICAgICAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsK
QEAgLTQ2NDIsNyArNDgxMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCks
IHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2RGb3VuZC5nZXQoKSk7CiAKICAgICAgICAg
ICAgICAgICAgICAgRW1pdEF3YWl0IGVtaXRBd2FpdEluSXRlcmF0b3JDbG9zZSA9IHBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IEVtaXRBd2Fp
dDo6WWVzIDogRW1pdEF3YWl0OjpObzsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9y
Q2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGVtaXRBd2FpdEluSXRlcmF0b3JDbG9zZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQo
KSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKIAogICAgICAgICAgICAgICAgICAg
ICBlbWl0VGhyb3dUeXBlRXJyb3IoIkRlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBh
ICd0aHJvdycgbWV0aG9kLiJfcyk7CiAKQEAgLTQ3MDMsNyArNDg3MSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVu
dCwgVGhyb3dhYmxlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0
RWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKHZh
bHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCks
IG5vZGUpOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUodmFs
dWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwg
bm9kZSk7CiAKICAgICAgICAgICAgIGVtaXRMYWJlbChicmFuY2hPblJlc3VsdC5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAppbmRleCBkNTM0Y2Q4MjhhYWMzZDE0MGI0ZjQ2Yzg2ODc2ODA5MTRlMGRlMzI1
Li42YjcwOGU5NmFiMTQ2MGRhNmEwYWUwY2I5NTM2OGE3OWRjZjhlZmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CkBAIC04MjgsNiArODI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5
TmFtZVJlZ2lzdGVyLAogICAgICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVn
aXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNp
Z25lZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOwogCisgICAgICAgIHZvaWQgZW1p
dEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25O
b2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lk
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSog
PSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRyKTsKICAg
ICAgICAgdm9pZCBlbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1l
cmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1i
ZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JP
Zk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0
cik7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFRlbXBsYXRlT2JqZWN0KFJlZ2lzdGVy
SUQqIGRzdCwgVGFnZ2VkVGVtcGxhdGVOb2RlKik7CkBAIC04OTgsOSArODk5LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNEZXJpdmVkQXJyYXkoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShk
c3QsIHNyYywgRGVyaXZlZEFycmF5VHlwZSk7IH0KICAgICAgICAgdm9pZCBlbWl0UmVxdWlyZU9i
amVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvcik7CiAK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVtaXRBd2FpdDo6
Tm8pOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3Is
IFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7
Ci0gICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgPSBFbWl0QXdhaXQ6
Ok5vKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgUmVnaXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENh
bGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwor
ICAgICAgICB2b2lkIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJ
RCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0ZXJhYmxlLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwg
Q2FsbEFyZ3VtZW50cyYgaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7
CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihSZWdpc3RlcklE
KiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdl
dEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0
QXdhaXQ6Ok5vKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRX
aXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3Rl
cklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBF
bWl0QXdhaXQgPSBFbWl0QXdhaXQ6Ok5vKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVz
dFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51bVBhcmFtZXRlcnNUb1Nr
aXApOwogCkBAIC05NTAsOSArOTU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdFB1c2hDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKICAgICAgICAgdm9pZCBl
bWl0UG9wQ2F0Y2hTY29wZShWYXJpYWJsZUVudmlyb25tZW50Jik7CiAKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldEl0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklE
KiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLQogICAgICAgICB2b2lkIGVtaXRBd2FpdChS
ZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdEdldFNjb3BlKCk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIG9iamVjdFNjb3BlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApp
bmRleCBkNGZkYjRkZDU0ZDQ5MmY5MGQyZDcyMWZkN2RhYzEyZmY3ZDJmODUwLi4yYjE1Y2FhNDcx
M2E4ODU2NWM0Y2QwOTUyNmY5MGMyNDVmNjNhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC00NTcyLDcgKzQ1NzIs
NyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRN
ZXRob2QgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBp
dGVyYXRvci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAogICAgIGlm
IChtX3RhcmdldFBhdHRlcm5zLmlzRW1wdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdEl0
ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDU4OCw3ICs0NTg4LDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2Rl
OjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhz
KQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBp
dGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9y
LmdldCgpLCB0aGlzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQo
KSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00NjI0LDcgKzQ2MjQsNyBA
QCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KGxvb3BTdGFydC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQo
KSwgdGhpcyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQo
dmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Eb25lLmdldCgpKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDY0Miw3ICs0NjQyLDcgQEAgdm9pZCBB
cnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogcmhzKQogCiAgICAgUmVmPExhYmVsPiBpdGVyYXRvckNsb3NlZCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgp
LCBpdGVyYXRvckNsb3NlZC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckNsb3Nl
KGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGl0
ZXJhdG9yQ2xvc2VkLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDBhNGExMWY5
YjQwZTZiMTNjNTk2NDIyOGU0MTEyODlmMWQ5ZWU4NjYuLjE4ZGFlMDA0YzcyMmNkNmZkY2Y4OTEy
YmM1YzQyMTNhNDMxYjI0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQzOTgsMTAgKzQzOTgs
OCBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxW
YWx1ZXMoCiAgICAgICAgICAgICAgICAgZnVuY3Rvcihmb3JOb2RlKG5vZGUpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5udW1iZXJPZkFyZ3VtZW50cygp
OyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUuYXJndW1lbnQoaSkpOwotICAgIGZvciAo
c2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mTG9jYWxzKCk7IGktLTspCi0gICAgICAgIGZ1bmN0
b3IobV9zdGF0ZS5sb2NhbChpKSk7CisgICAgZm9yIChzaXplX3QgaSA9IG1fc3RhdGUuc2l6ZSgp
OyBpLS07KQorICAgICAgICBmdW5jdG9yKG1fc3RhdGUuYXRJbmRleChpKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaAppbmRleCA4OTdjNzBkZmZiYTA2NmI2
NDljYWZkY2MxZWYwOTMzNzY4MTA0ZDEzLi40MzhlMTZkZTg1OTU5MjU0ZDk1NTcyMWI2ZjA4ZGI5
NTgxNGZkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFp
bEFic3RyYWN0U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFp
bEFic3RyYWN0U3RhdGUuaApAQCAtMTM3LDExICsxMzcsMTUgQEAgcHVibGljOgogICAgICAgICBt
YWtlSGVhcFRvcEZvck5vZGUoZWRnZS5ub2RlKCkpOwogICAgIH0KICAgICAKKyAgICB1bnNpZ25l
ZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLnNpemUoKTsgfQog
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+
dmFsdWVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJP
ZkxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkxv
Y2FscygpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZUbXBzKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1wcygpOyB9CisgICAgQWJzdHJhY3RWYWx1ZSYg
YXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5hdChp
bmRleCk7IH0KICAgICBBYnN0cmFjdFZhbHVlJiBvcGVyYW5kKE9wZXJhbmQgb3BlcmFuZCkgeyBy
ZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm9wZXJhbmQob3BlcmFuZCk7IH0KICAgICBBYnN0
cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0
VGFpbC5sb2NhbChpbmRleCk7IH0KICAgICBBYnN0cmFjdFZhbHVlJiBhcmd1bWVudChzaXplX3Qg
aW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpbmRleCk7IH0K
KyAgICBBYnN0cmFjdFZhbHVlJiB0bXAoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52
YWx1ZXNBdFRhaWwudG1wKGluZGV4KTsgfQogICAgIAogICAgIHZvaWQgY2xvYmJlclN0cnVjdHVy
ZXMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggMDk5N2JhYjA1MjUyNjRlNmYxNjQ4NTQyNDJkOTRjZTNiNTdlMzZkYy4u
ZDAxMGVlMTI3ZGY0ZWFmM2NlN2QyMzAyZTMyNTZhYzk3MDE2MTE1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZv
ci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRl
bnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtMTU3LDcg
KzE1OCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIZWxwZXIgZm9yIG1pbiBhbmQgbWF4LgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVNaW5NYXgo
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlw
ZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgCiAgICAgdm9pZCByZWZp
bmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCk7CiAgICAgLy8g
QmxvY2tzIGNhbiBlaXRoZXIgYmUgdGFyZ2V0YWJsZSAoaS5lLiBpbiB0aGUgbV9ibG9ja0xpbmtp
bmdUYXJnZXRzIG9mIG9uZSBJbmxpbmVTdGFja0VudHJ5KSB3aXRoIGEgd2VsbC1kZWZpbmVkIGJ5
dGVjb2RlQmVnaW4sCkBAIC0xNzQsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBIYW5kbGUg
Y2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJvdW5kaW5nIGlubGluaW5nIGFuZCBpbnRy
aW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBUZXJtaW5hbCwgTm9uVGVybWluYWwgfTsK
ICAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVj
dGlvblNpemUsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgICAgIE5vZGUqIGNh
bGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBDYWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTg4LDI3ICsxODksMjcgQEAgcHJp
dmF0ZToKICAgICBib29sIGhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGVtaXRGdW5jdGlvbkNoZWNrSWZOZWVk
ZWQpOwogICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlO
VF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBp
bnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1
cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxs
LgotICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rl
ck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFy
Z3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRsZVZhcmFyZ3NJbmxpbmlu
ZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3Rh
dHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBW
aXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNl
dCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwogICAgIHVuc2lnbmVk
IGdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOwogICAgIGVudW0gY2xhc3MgQ2FsbE9wdGltaXphdGlvblJlc3VsdCB7IE9wdGlt
aXplZFRvSnVtcCwgSW5saW5lZCwgRGlkTm90aGluZyB9OwotICAgIENhbGxPcHRpbWl6YXRpb25S
ZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdp
c3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNv
ZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKLSAgICBDYWxsT3B0aW1pemF0
aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwg
VmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIENhbGxPcHRpbWl6
YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJh
bmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2Rl
SW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVh
dGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSk7CisgICAgQ2FsbE9wdGltaXphdGlv
blJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1
bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVn
aXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVj
b2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tzRnVuY3Rvcj4KLSAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQg
cmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgLy8g
SGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwg
ZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVl
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVET01KSVRD
YWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBPcGVy
YW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihP
cGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZh
cmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
Ci0gICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihPcGVy
YW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRs
ZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgPSBHZXRCeU9mZnNldCk7Ci0gICAg
Ym9vbCBoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIo
T3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05vZGUsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAg
IGJvb2wgaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBT
cGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMpOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQnl0ZWNvZGU+CkBAIC0zMTgsMTUgKzMxOSwxNSBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gZ2V0TG9jYWxPclRtcChvcGVyYW5kKTsKICAgICB9CiAKLSAgICBOb2RlKiBnZXQo
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgTm9kZSogZ2V0KE9wZXJhbmQgb3BlcmFuZCkK
ICAgICB7CiAgICAgICAgIGlmIChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAg
dW5zaWduZWQgY29uc3RhbnRJbmRleCA9IG9wZXJhbmQudG9Db25zdGFudEluZGV4KCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIo
KS50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9sZFNpemUgPSBtX2Nv
bnN0YW50cy5zaXplKCk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXpl
IHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOwot
ICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQob3Bl
cmFuZCk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbihvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2Nr
LmdldENvbnN0YW50KG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAg
IFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gPSBjb2Rl
QmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3BlcmFuZC52aXJ0dWFsUmVn
aXN0ZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0gb2xkU2l6ZSkg
ewogICAgICAgICAgICAgICAgICAgICBtX2NvbnN0YW50cy5ncm93KGNvbnN0YW50SW5kZXggKyAx
KTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkU2l6ZTsgaSA8IG1f
Y29uc3RhbnRzLnNpemUoKTsgKytpKQpAQCAtMzQ3LDEwICszNDgsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZSgpLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0gaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlZUNvbnN0YW50KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKQorICAg
ICAgICAgICAgICAgIGlmIChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha0pTQ29uc3RhbnQoY2Fs
bGVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kLm9mZnNldCgp
ID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgeworICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQg
PT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpIHsKICAgICAgICAgICAg
IC8vIFdlIGhhdmUgdG8gZG8gc29tZSBjb25zdGFudC1mb2xkaW5nIGhlcmUgYmVjYXVzZSB0aGlz
IGVuYWJsZXMgQ3JlYXRlVGhpcyBmb2xkaW5nLiBOb3RlCiAgICAgICAgICAgICAvLyB0aGF0IHdl
IGRvbid0IGhhdmUgc3VjaCB3YXRjaHBvaW50LWJhc2VkIGZvbGRpbmcgZm9yIGlubGluZWQgdXNl
cyBvZiBDYWxsZWUsIHNpbmNlIGluIHRoYXQKICAgICAgICAgICAgIC8vIGNhc2UgaWYgdGhlIGZ1
bmN0aW9uIGlzIGEgc2luZ2xldG9uIHRoZW4gd2UgYWxyZWFkeSBrbm93IGl0LgpAQCAtNDEwLDcg
KzQxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5zaHJpbmsoMCk7CiAg
ICAgfQogCi0gICAgTm9kZSogc2V0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1
ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQorICAgIE5vZGUqIHNldChPcGVyYW5kIG9w
ZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewog
ICAgICAgICByZXR1cm4gc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChv
cGVyYW5kKSwgdmFsdWUsIHNldE1vZGUpOwogICAgIH0KQEAgLTY5MSwxNSArNjkyLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKICAgICB9CiAKKyAgICBOb2RlKiBq
c0NvbnN0YW50KEZyb3plblZhbHVlKiBjb25zdGFudFZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGNvbnN0YW50VmFsdWUpKTsKKyAgICB9
CisKICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIGNvbnN0YW50IHNob3VsZCBiZSBzdHJvbmdseSBt
YXJrZWQuCiAgICAgTm9kZSoganNDb25zdGFudChKU1ZhbHVlIGNvbnN0YW50VmFsdWUpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9ncmFwaC5m
cmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIGpzQ29uc3RhbnQo
bV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpOwogICAgIH0KIAogICAgIE5vZGUq
IHdlYWtKU0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjb25zdGFu
dFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShjb25z
dGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBnZXQvc2V0
IHRoZSB0aGlzIHZhbHVlLgpAQCAtODUwLDcgKzg1Niw3IEBAIHByaXZhdGU6CiAgICAgfQogICAg
IAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5v
ZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9w
SW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBp
ZiAob3AgPT0gVGFpbENhbGwpIHsKQEAgLTk1OSw3ICs5NjUsMzMgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIHJldHVybiBnZXRQcmVkaWN0aW9uKG1fY3VycmVudEluZGV4KTsKICAgICB9Ci0g
ICAgCisKKyAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBxdWl0ZSBhIHRydWUgYm90dG9tIHZhbHVl
IGZvciBleGFtcGxlIGFueSBvYmplY3Qgc3BlY3VsYXRpb24gd2lsbCBub3cgYmUgT2JqZWN0fE90
aGVyIGFzIHRoaXMgcmV0dXJucyBudWxsLgorICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcyB3aGVu
IHdlIGNhbiBhbGxvY2F0ZSBvbiB0aGUgQ29tcGlsZXIgdGhyZWFkLgorICAgIEZyb3plblZhbHVl
KiBib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgc3BlYykKKyAg
ICB7CisgICAgICAgIGlmIChpc1N1YnR5cGVTcGVjdWxhdGlvbihzcGVjLCBTcGVjT3RoZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVsbCgpKTsKKworICAgICAgICBp
ZiAoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY0Jvb2xlYW4pKQorICAgICAgICAgICAg
cmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzQm9vbGVhbih0cnVlKSk7CisKKyAgICAgICAgaWYgKGlz
U3VidHlwZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNGdWxsTnVtYmVyKSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2dyYXBoLmZyZWV6ZShqc051bWJlcigwKSk7CisKKyAgICAgICAgaWYgKGlzU3VidHlw
ZVNwZWN1bGF0aW9uKHNwZWMsIFNwZWNCaWdJbnQpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3Jh
cGguZnJlZXplKG1fdm0tPmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKworICAgICAgICBpZiAo
aXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpKQorICAg
ICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPnNtYWxsU3RyaW5ncy5lbXB0eVN0
cmluZygpKTsKKworICAgICAgICBpZiAoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywgU3BlY0Nl
bGxPdGhlciB8IFNwZWNPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXpl
KGpzTnVsbCgpKTsKKworICAgICAgICBBU1NFUlQoaXNTdWJ0eXBlU3BlY3VsYXRpb24oc3BlYywg
U3BlY0VtcHR5KSB8fCBzcGVjID09IFNwZWNOb25lKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgu
ZnJlZXplKEpTVmFsdWUoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZShB
cnJheTo6QWN0aW9uIGFjdGlvbikKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrOwpAQCAtMTE3NCw3ICsxMjA2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gT3B0aW9uYWw6IGEgY29udGludWF0aW9uIGJsb2NrIGZv
ciByZXR1cm5zIHRvIGp1bXAgdG8uIEl0IGlzIHNldCBieSBlYXJseSByZXR1cm5zIGlmIGl0IGRv
ZXMgbm90IGV4aXN0LgogICAgICAgICBCYXNpY0Jsb2NrKiBtX2NvbnRpbnVhdGlvbkJsb2NrOwog
Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX3JldHVyblZhbHVlOworICAgICAgICBPcGVyYW5k
IG1fcmV0dXJuVmFsdWU7CiAgICAgICAgIAogICAgICAgICAvLyBTcGVjdWxhdGlvbnMgYWJvdXQg
dmFyaWFibGUgdHlwZXMgY29sbGVjdGVkIGZyb20gdGhlIHByb2ZpbGVkIGNvZGUgYmxvY2ssCiAg
ICAgICAgIC8vIHdoaWNoIGFyZSBiYXNlZCBvbiBPU1IgZXhpdCBwcm9maWxlcyB0aGF0IHBhc3Qg
REZHIGNvbXBpbGF0aW9ucyBvZiB0aGlzCkBAIC0xMTk0LDcgKzEyMjYsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgQ29kZUJsb2NrKiwKICAgICAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSwgLy8gTnVsbCBpZiB0aGlzIGlz
IGEgY2xvc3VyZSBjYWxsLgotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJldHVyblZhbHVl
VlIsCisgICAgICAgICAgICBPcGVyYW5kIHJldHVyblZhbHVlLAogICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0LAogICAgICAgICAgICAgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLApA
QCAtMTI2OSw2ICsxMzAxLDcgQEAgQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRl
VW50YXJnZXRhYmxlQmxvY2soKQogICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVm
KCpuZXcgQmFzaWNCbG9jayhCeXRlY29kZUluZGV4KCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxv
Y2FscywgbV9udW1UbXBzLCAxKSk7CiAgICAgQmFzaWNCbG9jayogYmxvY2tQdHIgPSBibG9jay5w
dHIoKTsKICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKKyAgICBWRVJC
T1NFX0xPRygiQWRkaW5nIG5ldyB1bnRhcmdldGFibGUgYmxvY2s6ICIsIGJsb2NrUHRyLT5pbmRl
eCwgIlxuIik7CiAgICAgcmV0dXJuIGJsb2NrUHRyOwogfQogCkBAIC0xMzAxLDggKzEzMzQsOCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlw
ZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxD
YWxsT3A+KCk7Ci0gICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChieXRlY29kZS5tX2NhbGxlZSk7
Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0ZWNvZGUubV9h
cmd2KTsKKyAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGNhbGxlZUZvcihieXRlY29kZSwgbV9j
dXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0
YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIG1f
Y3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkpOwogCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExp
bmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLApAQCAtMTMxMCw4
ICsxMzQzLDggQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm8KIAogICAgIElubGluZUNhbGxGcmFt
ZTo6S2luZCBraW5kID0gSW5saW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIAotICAg
IHJldHVybiBoYW5kbGVDYWxsKGJ5dGVjb2RlLm1fZHN0LCBvcCwga2luZCwgcGMtPnNpemUoKSwg
Y2FsbFRhcmdldCwKLSAgICAgICAgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgY2Fs
bExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CisgICAgcmV0dXJuIGhhbmRsZUNhbGwoZGVz
dGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSwgSklUVHlw
ZTo6REZHSklUKSwgb3AsIGtpbmQsIHBjLT5zaXplKCksIGNhbGxUYXJnZXQsCisgICAgICAgIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVj
a3BvaW50KCkpLCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24o
KSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtT
dGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFyZ2V0KQpAQCAtMTMyMSw3ICsxMzU0
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1
cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGwKIH0KIAogQnl0ZUNvZGVQYXJzZXI6OlRlcm1p
bmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAotICAgIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25TaXplLAorICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICBOb2Rl
KiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rl
ck9mZnNldCwKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cywgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbikKIHsKQEAgLTE2MzcsNyArMTY3MCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci12b2lkIEJ5dGVD
b2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFz
aWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcykKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQg
a2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcykKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5z
dHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25L
aW5kRm9yKGtpbmQpOwpAQCAtMTY3MSw3ICsxNzA0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
Q2EKICAgICBzaXplX3QgYXJndW1lbnRQb3NpdGlvblN0YXJ0ID0gbV9ncmFwaC5tX2FyZ3VtZW50
UG9zaXRpb25zLnNpemUoKTsKIAogICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQotICAgICAgICBy
ZXN1bHQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0KS52aXJ0dWFsUmVn
aXN0ZXIoKTsKKyAgICAgICAgcmVzdWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5k
KHJlc3VsdCk7CiAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVs
bHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewpAQCAtMTgyMyw3ICsxODU2
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EKICAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9
IHNhdmVkQ3VycmVudEluc3RydWN0aW9uOwogfQogCi1CeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGlt
aXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQm
IGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVl
ZHNUb0NoZWNrQ2FsbGVlKQorQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBP
cGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZp
cnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpCiB7CiAg
ICAgVkVSQk9TRV9MT0coIiAgICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsK
IApAQCAtMTkwMCw3ICsxOTMzLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25S
ZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKICAgICByZXR1
cm4gQ2FsbE9wdGltaXphdGlvblJlc3VsdDo6SW5saW5lZDsKIH0KIAotYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LAorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGlu
aW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwKICAgICBjb25zdCBDYWxs
TGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdp
c3RlciB0aGlzQXJndW1lbnQsCiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50
LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsCiAgICAgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQga2luZCkKQEAgLTIwNDQsNyArMjA3Nyw3IEBAIHVuc2lnbmVkIEJ5dGVD
b2RlUGFyc2VyOjpnZXRJbmxpbmluZ0JhbGFuY2UoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxM
aW5rU3RhdHVzCiB9CiAKIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3Rh
dHVzLAorICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAogICAgIGludCByZWdpc3Rlck9mZnNldCwgVmly
dHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsCiAgICAgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCkBAIC0y
MjIwLDcgKzIyNTMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENo
ZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
Citib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVU
eXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIEFTU0VSVChvcCA9
PSBBcml0aE1pbiB8fCBvcCA9PSBBcml0aE1heCk7CiAKQEAgLTIyNTAsNyArMjI4Myw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgaW50IHJlZ2lzCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxl
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJl
c3VsdCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBWRVJCT1NFX0xPRygiICAgICAgIFRo
ZSBpbnRyaW5zaWMgaXMgIiwgaW50cmluc2ljLCAiXG4iKTsKIApAQCAtMjM4OSwyNyArMjQyMiwx
MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxl
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50
cmluc2ljOiB7CiAgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAotICAgICAgICAgICAgSXRl
cmF0aW9uS2luZCBraW5kOwotICAgICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKLSAgICAg
ICAgICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVk
QXJyYXlWYWx1ZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktp
bmQ6OlZhbHVlczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJy
YXlLZXlzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNp
YzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6S2V5czsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlFbnRyaWVzSW50cmluc2ljOgot
ICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYzoKLSAgICAgICAgICAg
ICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6RW50cmllczsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIE9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGtpbmQgPSBpbnRlcmF0aW9uS2luZEZv
ckludHJpbnNpYyhpbnRyaW5zaWMpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFraW5k
KTsKIAogICAgICAgICAgICAgLy8gQWRkIHRoZSBjb25zdGFudCBiZWZvcmUgZXhpdCBiZWNvbWVz
IGludmFsaWQgYmVjYXVzZSB3ZSBtYXkgd2FudCB0byBpbnNlcnQgKHJlZHVuZGFudCkgY2hlY2tz
IG9uIGl0IGluIEZpeHVwLgotICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50
KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihraW5kKSkpOworICAgICAgICAgICAgTm9k
ZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90Pigq
a2luZCkpKTsKIAogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbiBleGlzdGluZyBlcnJv
ciBzdHJpbmcuCiAgICAgICAgICAgICB1bnNpZ25lZCBlcnJvclN0cmluZ0luZGV4ID0gVUlOVDMy
X01BWDsKQEAgLTM2NDcsNyArMzY2NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGlmIChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFyZ3VtZW50
Q291bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjY2LDcgKzM2ODMsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsCiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
LWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFu
dCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5k
IHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQm
IHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpCiB7CiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBl
ZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewpAQCAtMzc4MCw3ICszNzk3LDcgQEAgc3RhdGlj
IHZvaWQgYmxlc3NDYWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vZGUtPmNsZWFy
RmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFu
dCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01K
SVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBO
b2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlhbnQuZG9tQXR0cmlidXRlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTM4NTksNyArMzg3Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZU1vZHVsZU5hbWVzcGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3Vs
YXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAg
ICBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rl
ck9mZnNldCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlU
eXBlIHR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAo
IWlzVHlwZWRWaWV3KHR5cGUpKQpAQCAtMzkxNiw3ICszOTMzLDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5h
bEZ1bmN0aW9uKAotICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAg
IE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiog
ZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJP
U0VfTE9HKCIgICAgSGFuZGxpbmcgY29uc3RhbnQgaW50ZXJuYWwgZnVuY3Rpb24gIiwgSlNWYWx1
ZShmdW5jdGlvbiksICJcbiIpOwpAQCAtNjYwNCwyMCArNjYyMSw0MDkgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMp
OwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdF92
YXJhcmdzOiB7CiAgICAgICAgICAgICBoYW5kbGVWYXJhcmdzQ2FsbDxPcENvbnN0cnVjdFZhcmFy
Z3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29uc3RydWN0VmFyYXJncywgQ2FsbE1vZGU6OkNvbnN0
cnVjdCk7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0
aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkg
aGF2ZSBpbmxpbmVkIHRoZSBjYWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvbnN0cnVjdF92YXJhcmdzKTsKICAgICAgICAg
fQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKICAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2FsbEV2YWw+KCk7
CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtYnl0ZWNvZGUubV9hcmd2OwogICAg
ICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29k
ZS5tX2VjbWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCBy
ZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJf
dCBzZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKwor
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291
bnQoc2Vlbk1vZGVzKTsKKyAgICAgICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVz
IDw9IG51bWJlck9mSXRlcmF0aW9uTW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRD
YXNlID0gZmFsc2U7CisKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRD
b2RlT3JpZ2luKCkpOworICAgICAgICAgICAgQmFzaWNCbG9jayogZ2VuZXJpY0Jsb2NrID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBzdGFydEluZGV4
ID0gbV9jdXJyZW50SW5kZXg7CisKKyAgICAgICAgICAgIE5vZGUqIHN5bWJvbEl0ZXJhdG9yID0g
Z2V0RGlyZWN0KGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgYXV0byYg
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpOworCisgICAgICAgICAgICBpZiAoc2Vlbk1v
ZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5ICYmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBz
ZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9ucyB3ZSBuZWVkIGZvciBjb3JyZWN0bmVzcy4K
KyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KGFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworCisgICAgICAgICAgICAgICAgRnJvemVuVmFs
dWUqIGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBtX2dyYXBoLmZyZWV6ZShnbG9iYWxP
YmplY3QtPmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9PSAxKQorICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVu
Y3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJsb2NrID0gYWxsb2NhdGVVbnRhcmdl
dGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0
ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSoga25vd25J
dGVyRnVuY3Rpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcVB0ciwgT3BJbmZvKGZyb3plblN5bWJv
bEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGlzQXJyYXkgPSBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcEluZm8oQXJyYXlU
eXBlKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKworICAgICAgICAgICAgICAgICAgICBC
cmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJh
eUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFu
Y2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhbmRS
ZXN1bHQgPSBhZGRUb0dyYXBoKEFyaXRoQml0QW5kLCBpc0FycmF5LCBrbm93bkl0ZXJGdW5jdGlv
bik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgYml0IGFuZCBjYW5ub3Qg
aGF2ZSBlZmZlY3RzIHNvIGl0J3Mgb2sgdG8gZXhpdCBoZXJlLgorICAgICAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9L
KTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5j
aERhdGEpLCBhbmRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9j
azsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgYnJhbmNoIGFib3ZlIG1heSBoYXZlIG1hZGUgZXhp
dCBpbnZhbGlkIGJ1dCBpdCdzIGFjdHVhbGx5IG9rLgorICAgICAgICAgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAg
ICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVp
bnQzMl90PihJdGVyYXRpb25LaW5kOjpWYWx1ZXMpKSk7CisgICAgICAgICAgICAgICAgTm9kZSog
aXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0FycmF5SXRlcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSkp
OworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0
YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVj
dCkpLCBpdGVyYXRvciwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJf
dD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOwor
ICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2l0ZXJhdG9yLCBpdGVyYXRvcik7CisKKyAg
ICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCBqc0NvbnN0YW50KEpTVmFsdWUoKSkp
OworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQg
dG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2Rl
LgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJl
bnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0
T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworCisgICAgICAgICAgICBpZiAoc2Vlbk1v
ZGVzICYgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykgeworICAgICAgICAgICAgICAgIGlmIChnZW5l
cmljQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdlbmVyYXRlZENhc2UpOwor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGdlbmVyaWNCbG9jazsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFnZW5lcmF0ZWRDYXNlKTsKKworICAgICAgICAgICAg
ICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlQ2FsbDxPcEl0ZXJhdG9yT3Blbj4o
Y3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5hbGl0eSwgdGVybWluYWxpdHkgPT0gTm9uVGVybWlu
YWwpOworICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAg
ICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFy
Z2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaXNPYmplY3RCbG9j
ayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCcmFuY2hE
YXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAg
ICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNPYmplY3RCbG9jayk7Cisg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2Jq
ZWN0QmxvY2spOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJh
bmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yKSk7CisKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0Qmxv
Y2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIGJlIGEgdHlwZSBlcnJvci4uLgorICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFRocm93LCBqc0NvbnN0YW50KGpzTnVsbCgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNP
YmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAg
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsK
KworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0
b3IpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBuZXh0SW1wbCA9IG1fdm0tPnByb3BlcnR5
TmFtZXMtPm5leHQuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShuZXh0SW1wbCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsK
KyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3Ry
dWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlT
dGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworCisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9uZXh0LCBwcmVkaWN0aW9uLCBi
YXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKG5l
eHRJbXBsKSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0
aCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0
IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBi
eXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUlu
ZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExv
Y2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5m
byhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7Cisg
ICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9uZXh0LCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBs
b2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92
ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9
IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rp
b24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9j
YWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29u
dGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFy
Q2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX29wZW4pOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4o
KTsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0
aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJl
bWFpbmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNT
RVJUKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7Cisg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8m
IGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGdlbmVyaWNCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51
YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIGlmIChz
ZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZp
cnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3Ru
ZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAo
bnVtYmVyT2ZSZW1haW5pbmdNb2RlcyAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGhhc05leHQgPSBhZGRUb0dyYXBoKElzRW1wdHksIGdldChieXRlY29kZS5tX25leHQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9j
aygpOworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hE
YXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJn
ZXQoZ2VuZXJpY0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gs
IE9wSW5mbyhicmFuY2hEYXRhKSwgaGFzTmV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJD
YWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVy
YXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2xvYmFs
T2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSwgaXRlcmF0b3IpOworCisgICAgICAg
ICAgICAgICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJs
b2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZG9Mb2FkQmxvY2sgPSBhbGxvY2F0
ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBBcnJheTo6UmVh
ZCk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhv
dXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0
b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0
YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcElu
Zm8oU3BlY0ludDUyQW55KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogaXRlcmFibGUgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSk7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGJ1dHRlcmZseSA9IGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5
LCBpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IGFkZFRvR3Jh
cGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBpdGVyYWJsZSwg
YnV0dGVyZmx5KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNEb25lID0gYWRkVG9HcmFw
aChDb21wYXJlR3JlYXRlckVxLCBpbmRleCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOyAvLyBUaGUgYWJvdmUgY29tcGFyZSBkb2Vzbid0IHByb2R1Y2UgZWZm
ZWN0cyBzaW5jZSB3ZSBrbm93IGluZGV4IGFuZCBsZW5ndGggYXJlIHVpbnQzMnMuCisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBC
cmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzRG9uZUJs
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hU
YXJnZXQoZG9Mb2FkQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5j
aCwgT3BJbmZvKGJyYW5jaERhdGEpLCBpc0RvbmUpOworICAgICAgICAgICAgICAgICAgICBmbHVz
aEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGRvTG9hZEJsb2NrOworICAgICAg
ICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBp
bmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVp
bnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMy
T25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIG9uZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSkpOworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBuZXdJbmRleCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQsIGluZGV4LCBvbmUp
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZmFsc2VOb2RlID0ganNDb25zdGFudChqc0Jv
b2xlYW4oZmFsc2UpKTsKKworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3Vs
ZCBjb25zaWRlciBtYWtpbmcgdGhpcyBub3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5IHVzZXMgdGhy
ZWUgY2hpbGQKKyAgICAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCisgICAgICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIKKyAg
ICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUp
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoaW5kZXgpOworICAgICAgICAg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkg
c3RvcmFnZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0QnlWYWwgPSBhZGRUb0dyYXBo
KE5vZGU6OlZhckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcElu
Zm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1
ZSwgZ2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCBm
YWxzZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmll
bGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6
SW5kZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBuZXdJbmRleCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91
ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChF
eGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisg
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikp
OworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgLy8gUm9sbCBiYWNrIHRoZSBjaGVja3BvaW50LgorICAg
ICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc0RvbmVCbG9jazsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogdHJ1ZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGRvbmVJbmRleCA9IGpzQ29uc3RhbnQoanNOdW1iZXIobWF4U2FmZUlu
dGVnZXIoKSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBib3R0b21Ob2RlID0ganNDb25z
dGFudChib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbikpOworCisgICAg
ICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBib3R0b21Ob2RlKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgdHJ1ZU5vZGUpOworICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgZ2V0KGJ5dGVjb2Rl
Lm1faXRlcmF0b3IpLCBkb25lSW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91
ciBzZXQgbG9jYWxzLgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVj
b2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
U2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwg
T3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1p
bmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5k
ZXggPSBzdGFydEluZGV4OworICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9k
ZTo6R2VuZXJpYykgeworICAgICAgICAgICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGdlbmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jayA9IGdlbmVyaWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFnZW5lcmF0ZWRDYXNlKTsKKworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRl
cm1pbmFsaXR5ID0gaGFuZGxlQ2FsbDxPcEl0ZXJhdG9yTmV4dD4oY3VycmVudEluc3RydWN0aW9u
LCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RCh0ZXJtaW5hbGl0eSwgdGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAg
ICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogbm90T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRh
YmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3REb25lQmxvY2sgPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICBPcGVyYW5kIG5l
eHRSZXN1bHQgPSBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3JSZXN1bHQg
PSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5j
aERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNPYmplY3RCbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdE9iamVj
dEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhi
cmFuY2hEYXRhKSwgYWRkVG9HcmFwaChJc09iamVjdCwgaXRlcmF0b3JSZXN1bHQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBu
b3RPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAg
ICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUgZXJyb3JTdHJpbmcgPSBMYXp5SlNWYWx1ZTo6bmV3
U3RyaW5nKG1fZ3JhcGgsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmpl
Y3QuIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFw
aC5tX2xhenlKU1ZhbHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogZXJyb3JNZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5SlNDb25zdGFudCwgaW5mbyk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVy
cm9yVHlwZTo6VHlwZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAg
Zmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGF1dG8gdmFsdWVQcmVkaWNpdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChCeXRl
Y29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFs
dWUpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGlzT2JqZWN0Qmxv
Y2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGJvdHRvbVZhbHVlID0ganNDb25zdGFudChib3R0b21WYWx1ZU1h
dGNoaW5nU3BlY3VsYXRpb24odmFsdWVQcmVkaWNpdGlvbikpOworCisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8qIGRvbmVJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKCkuZW5zdXJlKGRvbmVJbXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBl
IHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAg
ICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRl
Rm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNl
bGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0
ZWNvZGUubV9kb25lLCBwcmVkaWN0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGRvbmVJbXBsKSwgaWRlbnRpZmllck51bWJlciwgZ2V0
QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIC8vIFNl
dCBhIHZhbHVlIGZvciBtX3ZhbHVlIHNvIHdlIGRvbid0IHRoaW5rCisgICAgICAgICAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBib3R0b21WYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgICAgIEJy
YW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hU
YXJnZXQobm90RG9uZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFu
Y2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgZ2V0KGJ5dGVjb2RlLm1fZG9uZSkpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdERv
bmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAg
ICAgICBhdXRvKiB2YWx1ZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKCkuZW5zdXJlKHZhbHVlSW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAg
QWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1
czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVH
ZXRCeUlkKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlUHJlZGljaXRpb24sIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodmFsdWVJbXBsKSwgaWRl
bnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghZ2VuZXJhdGVkQ2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IGpzQ29uc3RhbnQoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZv
cmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgcmVzdWx0KTsKKworICAg
ICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBv
dXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAg
ICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7Cisg
ICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJy
ZW50SW5kZXggPSBzdGFydEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250
aW51YXRpb247CisgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9pdGVyYXRvcl9uZXh0KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
am5lcV9wdHI6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5Qb2lu
dGVyID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2st
PmdldENvbnN0YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIpKTsKQEAgLTcxMDcsNyArNzUx
Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAvLyBsb2FkcyBmcm9tIHRoZSBzY29wZSByZWdpc3RlciBsYXRlciwgYXMgdGhh
dCB3b3VsZCBwcmV2ZW50IHRoZSBERkcgZnJvbSB0cmFja2luZyB0aGUKICAgICAgICAgICAgIC8v
IGJ5dGVjb2RlLWxldmVsIGxpdmVuZXNzIG9mIHRoZSBzY29wZSByZWdpc3Rlci4KICAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0U2NvcGU+KCk7
Ci0gICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsK
KyAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgICAgICBp
ZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNG
dW5jdGlvbio+KCptX3ZtKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSB3ZWFrSlNDb25zdGFu
dChmdW5jdGlvbi0+c2NvcGUoKSk7CkBAIC03NDg2LDcgKzc4OTIsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywKICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssCiAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlLCAvLyBOdWxsIGlmIHRoaXMgaXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgVmlydHVhbFJl
Z2lzdGVyIHJldHVyblZhbHVlVlIsCisgICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLApAQCAtNzQ5NSw3
ICs3OTAxLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkoCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxv
Y2socHJvZmlsZWRCbG9jaykKICAgICAsIG1fY29udGludWF0aW9uQmxvY2soY29udGludWF0aW9u
QmxvY2spCi0gICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIpCisgICAgLCBtX3JldHVy
blZhbHVlKHJldHVyblZhbHVlKQogICAgICwgbV9jYWxsZXIoYnl0ZUNvZGVQYXJzZXItPm1faW5s
aW5lU3RhY2tUb3ApCiB7CiAgICAgewpAQCAtNzU2MSw3ICs3OTY3LDcgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIC8vIE1hY2hp
bmUgY29kZSBibG9jayBjYXNlLgogICAgICAgICBBU1NFUlQoY29kZUJsb2NrID09IGJ5dGVDb2Rl
UGFyc2VyLT5tX2NvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVCghY2FsbGVlKTsKLSAgICAgICAg
QVNTRVJUKCFyZXR1cm5WYWx1ZVZSLmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVCghcmV0dXJu
VmFsdWUuaXNWYWxpZCgpKTsKICAgICAgICAgQVNTRVJUKCFpbmxpbmVDYWxsRnJhbWVTdGFydC5p
c1ZhbGlkKCkpOwogCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gMDsKQEAgLTc5NzYsNyAr
ODM4Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAKICAgICAgICAgICAgICAgICBhdXRvIG5vZGVB
bmRJbmRleCA9IGJsb2NrLT5maW5kVGVybWluYWwoKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CisgICAgICAg
ICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlQW5kSW5kZXgubm9kZSwgbm9kZUFuZElu
ZGV4Lm5vZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUpOwogICAgICAgICAgICAgICAgIGJsb2NrLT5y
ZXNpemUobm9kZUFuZEluZGV4LmluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCBlN2Y2ZTc2MjQ2NjliMzAxZjVhMDIwNDhj
MjVkNDgxNWMzYTEzMzlkLi42MTBkN2QyMGVmNjUzNWY3YThlOTViY2VhMTIxZWYzYjhhYjQwMmFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxp
ZmljYXRpb25QaGFzZS5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9j
aywgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Js
b2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVP
cmlnaW4sIE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIE5vZGUqIGxpdmVuZXNzTm9k
ZSA9IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7CiAg
ICAgICAgIGlmICghbGl2ZW5lc3NOb2RlKQpAQCAtMzAyLDExICszMDIsOSBAQCBwcml2YXRlOgog
ICAgIAogICAgIHZvaWQgamV0dGlzb25CbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9j
ayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbikKICAgICB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJs
ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAga2VlcE9wZXJh
bmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZM
b2NhbHMoKTsgKytpKQotICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlz
b25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkp
KTsKLSAgICAgICAgCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJs
b2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBrZWVwT3BlcmFu
ZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgamV0dGlz
b25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpKTsKKwogICAgICAg
ICBmaXhKZXR0aXNvbmVkUHJlZGVjZXNzb3JzKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2spOwogICAg
IH0KICAgICAKQEAgLTM1MiwxMSArMzUwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRp
bWUgdG8gaW5zZXJ0IGdob3N0aWVzIGZvciB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGtlcHQgYWxp
dmUgaW4gY2FzZSB3ZSBPU1IKICAgICAgICAgICAgIC8vIGV4aXQgcHJpb3IgdG8gaGl0dGluZyB0
aGUgZmlyc3RCbG9jaydzIHRlcm1pbmFsLCBhbmQgZW5kIHVwIGdvaW5nIGRvd24gYQogICAgICAg
ICAgICAgLy8gZGlmZmVyZW50IHBhdGggdGhhbiBzZWNvbmRCbG9jay4KLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICAgICAga2Vl
cE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9y
aWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5k
QWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ss
IGJvdW5kYXJ5Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3Bl
cmFuZEZvckluZGV4KGkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzZWNvbmRCbG9jay0+cGhpcy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3
ZGVjYTcwMjQ4OGY4ZTFjMmEwYjY3MGJmOTlmLi42MDAzMzJmMTkwZmY4YjQwNDJjZDU0MmFiOTVi
NTA1MzZhZDdhNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0yNzQsNiArMjc0LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAg
ICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9n
ZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToK
ICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsOgogICAgIGNhc2Ugb3BfcHV0X3Rv
X3Njb3BlOgpAQCAtMzExLDYgKzMxMyw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAg
Y2FzZSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmU6CiAg
ICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmU6CiAgICAgY2FzZSBoYW5kbGVV
bmNhdWdodEV4Y2VwdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0
aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2Fz
ZSBvcF9jYWxsX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF9yZXR1cm5f
bG9jYXRpb246CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAxYTRk
ZWNkYTBjMmQ3MzY4N2VmY2YzODhiODQ4MmZiMGVjNjQ3YzRmLi5kYmM4MzFjMmViZTA4NmY4NzM2
NmE3ZTU0YTM1ZTU5M2E5YjA3OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTI0MTEsNyArMjQxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6IHsKLSAgICAgICAgICAgIG5vZGUt
PmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCmluZGV4IGJmNDM1MGM0Y2QxN2UzZDUw
MDY2MzhmNTVhYWMzNWE1NjUyOTk0YTEuLmQ5Yzk3NDI4ZmQ2YWU1ZWE1MDZkMDU3MjY3MzAyMGRk
MWFmZjExNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxs
S2lsbHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgK
QEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihiZWZvcmVJbmxpbmVD
YWxsRnJhbWUpOwogICAgICAgICBpZiAoYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQo
KSkgewogICAgICAgICAgICAgQVNTRVJUKGJlZm9yZS5ieXRlY29kZUluZGV4KCkuY2hlY2twb2lu
dCgpICE9IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpOwotICAgICAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpID09IGFm
dGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90
aW9uIGl0IHNob3VsZCBjaGFuZ2UgdGhlIGZvckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJy
b3VuZGluZyBieXRlY29kZXMuIik7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJl
Zm9yZS5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9m
ZnNldCgpIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBFeGl0T0sgfHwgbm9kZUFmdGVyLT5vcCgpID09
IEludmFsaWRhdGlvblBvaW50LCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rpb24gaXQgc2hv
dWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5
dGVjb2Rlcy4iKTsKIAogICAgICAgICAgICAgYXV0byBsaXZlQmVmb3JlID0gdG1wTGl2ZW5lc3NG
b3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGJlZm9yZS5ieXRlY29kZUluZGV4KCkpOwogICAgICAg
ICAgICAgYXV0byBsaXZlQWZ0ZXIgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9j
aywgYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpKTsKQEAgLTEwMiw4ICsxMDIsNiBAQCB2b2lkIGZvckFs
bEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9k
ZUFmdGVyLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSwgIlRyYW5zaXRpb25p
bmcgYWNyb3NzIGEgY2hlY2twb2ludCBidXQgYmVmb3JlIGFuZCBhZnRlciBkb24ndCBzaGFyZSBh
biBpbmxpbmVDYWxsRnJhbWUuIik7Ci0KICAgICAvLyBEZXRlY3Qga2lsbHMgdGhlIHN1cGVyIGNv
bnNlcnZhdGl2ZSB3YXk6IGl0IGlzIGtpbGxlZCBpZiBpdCB3YXMgbGl2ZSBiZWZvcmUgYW5kIGRl
YWQgYWZ0ZXIuCiAgICAgQml0VmVjdG9yIGxpdmVBZnRlciA9IGdyYXBoLmxvY2Fsc0FuZFRtcHNM
aXZlSW5CeXRlY29kZShhZnRlcik7CiAgICAgdW5zaWduZWQgbnVtTG9jYWxzID0gZ3JhcGguYmxv
Y2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAppbmRleCAy
MDJkMjI1MDUzZmE5ZGZiZTVjMjNjNjRiY2Y4YmUzODRlM2U3NjU0Li43Y2MzNGFlMmQwZDRlNWY4
NDhlNjk1NzMwMjQ5MmMxMjFkNzFmZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtNTksNiArNTksOSBAQCB2
b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2soQmFzaWNCbG9jayogYmFz
aWNCbG9jaykKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
TG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwog
ICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9
PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNTRVJU
KGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NFUlQoYmFzaWNC
bG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVl
c0F0SGVhZC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVy
T2ZUbXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpKTsK
IAogICAgIG1fYWJzdHJhY3RWYWx1ZXMucmVzaXplKCk7CiAKQEAgLTE2MSw2ICsxNjQsMTAgQEAg
dm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgICAgIGVudHJ5
cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwogICAgICAgICB9CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9m
VG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC50bXAo
aSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC50bXAoaSku
Y2xlYXIoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKQEAgLTE3NSwxMyArMTgyLDkgQEAg
dm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGJsb2NrLT5j
ZmFUaGlua3NTaG91bGRUcnlDb25zdGFudEZvbGRpbmcgPSBmYWxzZTsKICAgICAgICAgYmxvY2st
PmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwog
ICAgICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJl
c0FyZVdhdGNoZWQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52
YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytp
KSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0g
ICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZFtpXS5jbGVhcigpOworICAgICAgICAg
ICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0yMzksNyArMjQyLDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9j
aygpCiAgICAgICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgICAgIGNhc2UgRmx1
c2g6IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYmxvY2sgdHJhbnNmZXJzIHRoZSB2YWx1ZSBm
cm9tIGhlYWQgdG8gdGFpbC4KLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHZhcmlhYmxl
QXQoaW5kZXgpOworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gYXRJbmRleChpbmRleCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CkBAIC0zMDQsNyArMzA3LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNC
bG9jaygpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0gPSB2YXJpYWJsZUF0KGkp
OworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IGF0SW5kZXgoaSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBmb3IgKE5vZGVBYnN0cmFjdFZhbHVlUGFpciYgdmFsdWVBdFRhaWwg
OiBibG9jay0+c3NhLT52YWx1ZXNBdFRhaWwpCkBAIC0zNDMsNiArMzQ2LDcgQEAgYm9vbCBJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8p
CiAgICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVyRHVtcChmcm9tKSwg
IiB0byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJs
ZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mQXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZMb2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOworICAg
IEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkgPT0gdG8tPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSk7CiAgICAgCiAgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CiAgICAgCkBAIC0zNTIsMTQgKzM1Niw5IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6
Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgIAogICAgIHN3aXRj
aCAobV9ncmFwaC5tX2Zvcm0pIHsKICAgICBjYXNlIFRocmVhZGVkQ1BTOiB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwu
bnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewotICAgICAgICAgICAgQWJzdHJhY3RW
YWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsK
LSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoZGVzdGlu
YXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCksIHRvLT52YXJpYWJs
ZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuYXJndW1l
bnQoYXJndW1lbnQpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3Qg
bG9jYWwgPSAwOyBsb2NhbCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fscygp
OyArK2xvY2FsKSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRv
LT52YWx1ZXNBdEhlYWQubG9jYWwobG9jYWwpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmxv
Y2FsKGxvY2FsKSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCksIGZyb20tPnZhcmlh
Ymxlc0F0VGFpbC5sb2NhbChsb2NhbCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmF0KGlu
ZGV4KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3Mo
ZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hdChpbmRleCksIHRvLT52YXJpYWJsZXNB
dEhlYWQuYXQoaW5kZXgpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuYXQoaW5kZXgpKTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKaW5kZXggMTg2NWU2YTFlZmZjM2RhYWVm
ZTU4NGNhODYyYzQ5YmMzNjg1ODUwMC4uYzVkMDI2ODczZTAxMGQwN2YzODExYzZjNGZlZjU2NmUx
Y2E3MGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuaApAQCAtMTU4LDEwICsxNTgsMTIgQEAgcHVibGljOgogICAgIAogICAg
IE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+JiB2YXJpYWJsZXNGb3JEZWJ1Z2dpbmcoKTsKIAorICAg
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5zaXplKCk7IH0KICAg
ICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVz
Lm51bWJlck9mQXJndW1lbnRzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscygpIGNv
bnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mTG9jYWxzKCk7IH0KKyAgICB1bnNpZ25l
ZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZlRtcHMo
KTsgfQogICAgIAotICAgIEFic3RyYWN0VmFsdWUmIHZhcmlhYmxlQXQoc2l6ZV90IGluZGV4KQor
ICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHsKICAgICAgICAg
YWN0aXZhdGVWYXJpYWJsZUlmTmVjZXNzYXJ5KGluZGV4KTsKICAgICAgICAgcmV0dXJuIGZhc3RG
b3J3YXJkKG1fdmFyaWFibGVzW2luZGV4XSk7CkBAIC0xNjksMTcgKzE3MSwxNyBAQCBwdWJsaWM6
CiAKICAgICBBYnN0cmFjdFZhbHVlJiBvcGVyYW5kKE9wZXJhbmQgb3BlcmFuZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLm9wZXJhbmRJbmRleChvcGVyYW5k
KSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLm9wZXJhbmRJbmRleChvcGVy
YW5kKSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRl
eCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLmxvY2FsSW5k
ZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMubG9jYWxJbmRl
eChpbmRleCkpOwogICAgIH0KICAgICAKICAgICBBYnN0cmFjdFZhbHVlJiBhcmd1bWVudChzaXpl
X3QgaW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5h
cmd1bWVudEluZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVz
LmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKICAgICB9CiAgICAgCiAgICAgLy8gQ2FsbCB0aGlzIGJl
Zm9yZSBiZWdpbm5pbmcgQ0ZBIHRvIGluaXRpYWxpemUgdGhlIGFic3RyYWN0IHZhbHVlcyBvZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCmluZGV4IGY1ZWVmMmYz
ZGY3MjEyOWE4MzhjNzY4NmUyNmI5NjBiNTBmNTgxZWUuLjdhMzM2NjZhYTcxYTFmNjY2Yzk0YjI4
YjY0NDc0ODRkNjdiYmI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlK
U1ZhbHVlLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBMYXp5SlNWYWx1
ZSBuZXdTdHJpbmcoR3JhcGgmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIExhemluZXNzS2luZCBr
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3Vs
YXRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS25vd25WYWx1ZSA/IFNwZWNCeXRl
Y29kZVRvcCA6IFNwZWNTdHJpbmc7IH0KICAgICAKICAgICBGcm96ZW5WYWx1ZSogdHJ5R2V0VmFs
dWUoR3JhcGgmKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCmluZGV4IGE4NTJkYmRkOWI5MzcwZDZkZTY1M2M1YTQ4ODcxMTcwMGU4Yjg3OWIuLjUy
MjM0YjRhNWQzZjY5NzZjMmZhOTk4MTZkY2UxMTA2ODEwNTRlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtNDgsMTEgKzQ4LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5k
LCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRl
eCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKK09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2lu
ZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlIHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5k
ZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgsIHVuc2lnbmVkIGRmZ0lSSW5kZXgpCiAgICAgOiBP
U1JFeGl0QmFzZShraW5kLCBqaXQtPm1fb3JpZ2luLmZvckV4aXQsIGppdC0+bV9vcmlnaW4uc2Vt
YW50aWMsIGppdC0+bV9vcmlnaW4ud2FzSG9pc3RlZCkKICAgICAsIG1fanNWYWx1ZVNvdXJjZShq
c1ZhbHVlU291cmNlKQogICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQogICAgICwg
bV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCisgICAgLCBtX2RmZ0lSSW5kZXgoZGZnSVJJ
bmRleCkKICAgICAsIG1fc3RyZWFtSW5kZXgoc3RyZWFtSW5kZXgpCiB7CiAgICAgYm9vbCBjYW5F
eGl0ID0gaml0LT5tX29yaWdpbi5leGl0T0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5oCmluZGV4IDllOWJjZWE0ODFjMWQ2ODc3OTcyZjI1OWQ2MmMxYTIzMDBiMmIxNjEuLjhj
ZThiOTIwNzlhZjc1Mjk5NzAzZjE3ZmRkYWUyZmVjM2I5YzI4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoQ2FsbEZyYW1lKiwgdm9p
ZCosIHZvaWQKIC8vIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBob3cgdG8gZXhpdCB0aGUgc3Bl
Y3VsYXRpdmUgcGF0aCBieQogLy8gZ29pbmcgaW50byBiYXNlbGluZSBjb2RlLgogc3RydWN0IE9T
UkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewotICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFs
dWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwg
dW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01BWCk7
CisgICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWdu
ZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYLCB1bnNpZ25lZCBkZmdJUkluZGV4ID0gVUlOVF9N
QVgpOwogCiAgICAgZnJpZW5kIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NS
RXhpdChDYWxsRnJhbWUqKTsKIApAQCAtMTU5LDYgKzE1OSw3IEBAIHN0cnVjdCBPU1JFeGl0IDog
cHVibGljIE9TUkV4aXRCYXNlIHsKICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1f
dmFsdWVQcm9maWxlOwogICAgIAogICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJbmRleDsKKyAgICB1
bnNpZ25lZCBtX2RmZ0lSSW5kZXg7CiAKICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+IGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4
IDFkZjM5NDMyNDFkNWFmNzkzMTk4ZWY5YzcxMjczZTc1OGEwYTIyNmEuLjA4NWRjNTMwYjNiYzM3
OWZiNGYzZTYwOTFjYjVjNjUyMDI3NTg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTE1OSw5ICsxNTks
MTUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBD
KENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FU
SU9OKG5hbWUpIChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMTYoKSA/IExMSW50OjpnZXRXaWRlMTZD
b2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pIDogKGNhbGxJbnN0
cnVjdGlvbi5pc1dpZGUzMigpID8gTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSkpCiAKICAgICAgICAgc3dpdGNoICh0cnVlQ2Fs
bGVyQ2FsbEtpbmQpIHsKLSAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6Ci0gICAg
ICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAg
ICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogeworICAgICAgICAgICAgaWYgKGNhbGxJ
bnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2NhbGwpCisgICAgICAgICAgICAgICAganVtcFRh
cmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2l0ZXJhdG9yX29wZW4pCisgICAg
ICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRv
cl9vcGVuKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgp
ID09IG9wX2l0ZXJhdG9yX25leHQpCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5U
X1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CiAgICAg
ICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTIzOSw2ICsyNDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNv
ZGVCbG9jawogICAgICAgICB9CiAgICAgfQogCisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOwogICAg
IHJldHVybiBqdW1wVGFyZ2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIxMDAz
ZWQ1ZmQzZmJjMzgxNjJjODkyYjM0Yzg0N2I5Mjc2ODNmYWUuLjZlMDkwYTM4YmZjMDk0NzVhN2Q3
YmQ1OTFlMjUxYTNlOTM0Njg1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMTAxLDYg
KzExMDEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNoaWxkMSgp
LT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNB
c0ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTGF6
eUpTQ29uc3RhbnQ6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+
bGF6eUpTVmFsdWUoKS5zcGVjdWxhdGVkVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgQ2FsbFN0
cmluZ0NvbnN0cnVjdG9yOgogICAgICAgICBjYXNlIFRvU3RyaW5nOgpAQCAtMTMwNSw3ICsxMzEx
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAg
ICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFJlY29y
ZFJlZ0V4cENhY2hlZFJlc3VsdDoKLSAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKICAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVy
IGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4KICAgICAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBw
cmVkaWN0aW9uIHByb3BhZ2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFs
aWRhdGUuY3BwCmluZGV4IDBkNjVkOGY4OWFlYzNkNTk0MmQyY2Y4M2Q2Y2VkOGExYmZmMzk4Y2Iu
LjlhZTk4MDRjNzViOTVlYzU2MWVkMmYxYTUyYjlkZWM5OGM4NDVlZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGRhdGFMb2dGKCIpID09ICglcyA9ICIsICNyaWdodCk7IFwKICAgICAgICAg
ICAgIGRhdGFMb2cocmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRhTG9nRigiKSAoJXM6JWQpLlxu
IiwgX19GSUxFX18sIF9fTElORV9fKTsgXAorICAgICAgICAgICAgZGF0YUxvZygiXG5cblxuIik7
IFwKKyAgICAgICAgICAgIG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobnVsbHB0ciktPmR1
bXBCeXRlY29kZSgpOyBcCiAgICAgICAgICAgICBkdW1wR3JhcGhJZkFwcHJvcHJpYXRlKCk7IFwK
ICAgICAgICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9f
LCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAjbGVmdCAiID09ICIgI3JpZ2h0KTsgXAogICAgICAgICAg
ICAgQ1JBU0goKTsgXApAQCAtNTY4LDYgKzU3MCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
T3BlcmFuZHM8c2l6ZV90PiBnZXRMb2NhbFBvc2l0aW9ucyhPcGVyYW5kc0xpa2UsIGJsb2NrLT52
YXJpYWJsZXNBdEhlYWQpOwogICAgICAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiBzZXRMb2NhbFBv
c2l0aW9ucyhPcGVyYW5kc0xpa2UsIGJsb2NrLT52YXJpYWJsZXNBdEhlYWQpOwogICAgICAgICAg
ICAgCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIFZBTElEQVRFKChP
cGVyYW5kOjp0bXAoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQudG1wKGkpIHx8
IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQudG1wKGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsK
KyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpCisgICAg
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChPcGVyYW5kOjp0bXAoaSksIGJsb2NrKSwgIWJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwudG1wKGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwudG1wKGkp
LT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKKworICAgICAgICAgICAgICAgIGdldExvY2FsUG9z
aXRpb25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgICAgICBzZXRMb2NhbFBvc2l0aW9u
cy50bXAoaSkgPSBub3RTZXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsg
KytpKSB7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50SW5jbHVkaW5nVGhpcyhpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1
bWVudChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpLT5hY2Nlc3Nlc1N0
YWNrKG1fZ3JhcGgpKTsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhy
ZWFkZWRDUFMpCkBAIC03MTYsNiArNzI2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAo
bV9ncmFwaC5tX2Zvcm0gPT0gTG9hZFN0b3JlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNo
ZWNrT3BlcmFuZCgKKyAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25z
LCBzZXRMb2NhbFBvc2l0aW9ucywgT3BlcmFuZDo6dG1wKGkpKTsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICAgICAgICAgIGNoZWNrT3BlcmFu
ZCgKICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRMb2Nh
bFBvc2l0aW9ucywgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsK
QEAgLTk0NCw3ICs5NTksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjaGVja09wZXJhbmQoCiAg
ICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrLCBPcGVyYW5kczxzaXplX3Q+JiBnZXRMb2NhbFBvc2l0
aW9ucywKLSAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKQorICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBv
c2l0aW9ucywgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgaWYgKGdldExvY2FsUG9z
aXRpb25zLm9wZXJhbmQob3BlcmFuZCkgPT0gbm90U2V0KQogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NDFmZGE2
ODc2ZTY1MmM5ODQ2MDFhMmIzYjc5ZDM0Li45NGRlMzhjYjcxNjc4YWQ4NmFiYWM2YjdjNjI4Nzlj
MTZiMTBjODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM3
LDYgKzEzNyw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJHZXRCeUlkTWV0YWRhdGEuaCIKICNp
bmNsdWRlICJHZXRCeVZhbEhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCmluZGV4IDdjZDE1ZDMxNWQ2
MzkwYWJhMjYzNWU5NjM1OWY4OTBlMmViNzFhOTUuLmMwNzc1ZDhlMWIxMDUwMmRmMDFhNzRhZjBj
NmRlYjRhODc1Y2M2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvTWV0YWRhdGEucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRh
ZGF0YS5yYgpAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBNZXRhZGF0YQogICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShNZXRhZGF0YSk7CiAKICAgICBwdWJsaWM6CisgICAgICAgICN7b3Aub3Bj
b2RlSUR9CiAgICAgICAgIE1ldGFkYXRhKGNvbnN0ICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0mI3si
IF9fb3AiIGlmIGluaXRzfSkje2luaXRzfSB7IH0KIAogI3tmaWVsZHN9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXggOWI1ZWU5MDk2ZWU3MWIxYjBkM2Vk
N2Y3Y2QxOGRiMDZmY2IzNWZjZi4uNmI1YTk0MmYwODIzOWE1MmUwNjllODA5ZGEyNzdhNGVmOGU2
Njk4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9u
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgpAQCAt
NTMsNyArNTMsMTcgQEAgY2xhc3MgU2VjdGlvbgogICBlbmQKIAogICBkZWYgc29ydCEKLSAgICAg
IEBvcGNvZGVzID0gQG9wY29kZXMuc29ydCB7IHxhLCBifCBhLm1ldGFkYXRhLmVtcHR5PyA/IGIu
bWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEgOiAtMSB9CisgICAgICBAb3Bjb2RlcyA9IEBvcGNvZGVz
LnNvcnQgeyB8YSwgYnwKKyAgICAgICAgICByZXN1bHQgPSBuaWwKKyAgICAgICAgICBpZiBhLmNo
ZWNrcG9pbnRzIG9yIGIuY2hlY2twb2ludHMKKyAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2Rl
cyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2EubmFtZX0iIGlmIGEu
Y2hlY2twb2ludHMgYW5kIGEubWV0YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAgIHJhaXNlICJC
eXRlY29kZXMgd2l0aCBjaGVja3BvaW50cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3tiLm5hbWV9
IiBpZiBiLmNoZWNrcG9pbnRzIGFuZCBiLm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICBy
ZXN1bHQgPSBhLmNoZWNrcG9pbnRzID8gYi5jaGVja3BvaW50cyA/IDAgOiAtMSA6IDEKKyAgICAg
ICAgICBlbHNpZgorICAgICAgICAgICAgICByZXN1bHQgPSBhLm1ldGFkYXRhLmVtcHR5PyA/IGIu
bWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEgOiAtMSAKKyAgICAgICAgICBlbmQKKyAgICAgICAgICBy
ZXN1bHQKKyAgICAgIH0KICAgICAgIEBvcGNvZGVzLmVhY2goJjpjcmVhdGVfaWQhKQogICBlbmQK
IApAQCAtNzMsNiArODMsMTggQEAgY2xhc3MgU2VjdGlvbgogICAgICAgZW5kCiAKICAgICAgIGlm
IGNvbmZpZ1s6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdCisgICAgICAgICAgaSA9IDAKKyAgICAgICAg
ICB3aGlsZSB0cnVlCisgICAgICAgICAgICAgIGlmICFvcGNvZGVzW2ldLmNoZWNrcG9pbnRzCisg
ICAgICAgICAgICAgICAgICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgb3V0IDw8ICIj
ZGVmaW5lIE5VTUJFUl9PRl8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9XSVRIX0NI
RUNLUE9JTlRTICN7aX1cbiIKKyAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAg
IGVuZAorCisgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgIGVuZAorICAgICAgICAgIG91
dCA8PCAiXG4iCisKICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VBQ0hfI3tjb25m
aWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFfU0laRShtYWNybykgXFxcbiIpCiAg
ICAgICAgICAgaSA9IDAKICAgICAgICAgICB3aGlsZSB0cnVlCkBAIC04Nyw2ICsxMDksOCBAQCBj
bGFzcyBTZWN0aW9uCiAgICAgICAgICAgZW5kCiAgICAgICAgICAgb3V0IDw8ICJcbiIKIAorCisK
ICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VBQ0hfI3tjb25maWdbOm1hY3JvX25h
bWVfY29tcG9uZW50XX1fTUVUQURBVEFfQUxJR05NRU5UKG1hY3JvKSBcXFxuIikKICAgICAgICAg
ICBpID0gMAogICAgICAgICAgIHdoaWxlIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggNjQ1MzkxMjdiOGM3NGM4MjAyOWIyYmI2
MTgwZTY5Njk3MWE2NGJjOC4uM2ZmOTJiNDUzYTcyOTI2ZGM3NGVjYmRjZjZlMzE0YmNmYjM2OGUw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKQEAgLTQzLDEzOSArNDMsMTM5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3Mg
Q29kZUJsb2NrOwotICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlOwotICAgIGNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZTsKLSAgICBjbGFzcyBWTTsKLSAgICBjbGFzcyBKU0Z1bmN0aW9uOwotICAgIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7Ci0gICAg
Y2xhc3MgSlNNb2R1bGVSZWNvcmQ7Ci0gICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwot
ICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwotICAgIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOwotICAgIGNsYXNzIFJlZ2lzdGVyOwotICAgIGNsYXNzIEpTU2NvcGU7Ci0gICAgY2xh
c3MgU291cmNlQ29kZTsKLSAgICBjbGFzcyBTdGFja0ZyYW1lOwotICAgIHN0cnVjdCBDYWxsRnJh
bWVDbG9zdXJlOwotICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKLSAgICBzdHJ1Y3QgSW5zdHJ1Y3Rp
b247Ci0gICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOwotCi0gICAgZW51bSBEZWJ1Z0hvb2tUeXBl
IHsKLSAgICAgICAgV2lsbEV4ZWN1dGVQcm9ncmFtLAotICAgICAgICBEaWRFeGVjdXRlUHJvZ3Jh
bSwKLSAgICAgICAgRGlkRW50ZXJDYWxsRnJhbWUsCi0gICAgICAgIERpZFJlYWNoRGVidWdnZXJT
dGF0ZW1lbnQsCi0gICAgICAgIFdpbGxMZWF2ZUNhbGxGcmFtZSwKLSAgICAgICAgV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsCi0gICAgICAgIFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwKLSAgICB9OwotCi0g
ICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgewotICAgICAgICBTdGFja0ZyYW1lR2xvYmFsQ29k
ZSwKLSAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAotICAgICAgICBTdGFja0ZyYW1lTW9kdWxl
Q29kZSwKLSAgICAgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwKLSAgICAgICAgU3RhY2tGcmFt
ZU5hdGl2ZUNvZGUKLSAgICB9OwotCi0gICAgY2xhc3MgSW50ZXJwcmV0ZXIgewotICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7
Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBWTTsKLQotICAgIHB1YmxpYzoK
LSAgICAgICAgSW50ZXJwcmV0ZXIoVk0gJik7Ci0gICAgICAgIH5JbnRlcnByZXRlcigpOwotICAg
ICAgICAKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEV2YWxFeGVjdXRhYmxlOworY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CitjbGFzcyBKU0Z1bmN0aW9uOworY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OworY2xhc3MgSlNNb2R1bGVS
ZWNvcmQ7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZTsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOworY2xhc3MgUmVnaXN0ZXI7Citj
bGFzcyBKU1Njb3BlOworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFN0YWNrRnJhbWU7CitzdHJ1
Y3QgQ2FsbEZyYW1lQ2xvc3VyZTsKK3N0cnVjdCBIYW5kbGVySW5mbzsKK3N0cnVjdCBJbnN0cnVj
dGlvbjsKK3N0cnVjdCBQcm90b0NhbGxGcmFtZTsKKworZW51bSBEZWJ1Z0hvb2tUeXBlIHsKKyAg
ICBXaWxsRXhlY3V0ZVByb2dyYW0sCisgICAgRGlkRXhlY3V0ZVByb2dyYW0sCisgICAgRGlkRW50
ZXJDYWxsRnJhbWUsCisgICAgRGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudCwKKyAgICBXaWxsTGVh
dmVDYWxsRnJhbWUsCisgICAgV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsCisgICAgV2lsbEV4ZWN1dGVF
eHByZXNzaW9uLAorfTsKKworZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgeworICAgIFN0YWNrRnJh
bWVHbG9iYWxDb2RlLAorICAgIFN0YWNrRnJhbWVFdmFsQ29kZSwKKyAgICBTdGFja0ZyYW1lTW9k
dWxlQ29kZSwKKyAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAorICAgIFN0YWNrRnJhbWVOYXRp
dmVDb2RlCit9OworCitjbGFzcyBJbnRlcnByZXRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBj
bGFzcyBWTTsKKworcHVibGljOgorICAgIEludGVycHJldGVyKFZNICYpOworICAgIH5JbnRlcnBy
ZXRlcigpOworICAgIAogI2lmIEVOQUJMRShDX0xPT1ApCi0gICAgICAgIENMb29wU3RhY2smIGNs
b29wU3RhY2soKSB7IHJldHVybiBtX2Nsb29wU3RhY2s7IH0KKyAgICBDTG9vcFN0YWNrJiBjbG9v
cFN0YWNrKCkgeyByZXR1cm4gbV9jbG9vcFN0YWNrOyB9CiAjZW5kaWYKLSAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCk7CisgICAgCisgICAg
c3RhdGljIGlubGluZSBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEKTsKIAotICAgICAgICBzdGF0
aWMgaW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSk7CisgICAgc3RhdGljIGlubGlu
ZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAgICAgc3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKKyAgICBzdGF0aWMgYm9vbCBpc09w
Y29kZShPcGNvZGUpOwogI2VuZGlmCiAKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlUHJvZ3JhbShj
b25zdCBTb3VyY2VDb2RlJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iaik7Ci0g
ICAgICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgSlNW
YWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2Fs
bFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3Qm
KTsKLSAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwotICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGUoRXZhbEV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBK
U1Njb3BlKik7Ci0KLSAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpT
RnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFy
Z3YsIGludCYgYXJnYyk7Ci0KLSAgICAgICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB1bndp
bmQoVk0mLCBDYWxsRnJhbWUqJiwgRXhjZXB0aW9uKik7Ci0gICAgICAgIHZvaWQgbm90aWZ5RGVi
dWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oVk0mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSosIEV4Y2VwdGlvbiopOwotICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJh
bWUqLCBEZWJ1Z0hvb2tUeXBlKTsKLSAgICAgICAgc3RhdGljIFN0cmluZyBzdGFja1RyYWNlQXNT
dHJpbmcoVk0mLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mKTsKLQotICAgICAgICB2b2lkIGdl
dFN0YWNrVHJhY2UoSlNDZWxsKiBvd25lciwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBz
aXplX3QgZnJhbWVzVG9Ta2lwID0gMCwgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZW51bSBF
eGVjdXRpb25GbGFnIHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJuIH07Ci0gICAgICAgIAot
ICAgICAgICBzdGF0aWMgSlNWYWx1ZSBjaGVja2VkUmV0dXJuKEpTVmFsdWUgcmV0dXJuVmFsdWUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXR1cm5WYWx1ZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0YXRp
YyBKU09iamVjdCogY2hlY2tlZFJldHVybihKU09iamVjdCogcmV0dXJuVmFsdWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChyZXR1cm5WYWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBDYWxsRnJhbWVDbG9zdXJlIHByZXBh
cmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFByb3RvQ2Fs
bEZyYW1lKiwgSlNGdW5jdGlvbiosIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSlNT
Y29wZSosIGNvbnN0IEFyZ0xpc3QmKTsKLQotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoQ2FsbEZy
YW1lQ2xvc3VyZSYpOwotCi0gICAgICAgIFZNJiBtX3ZtOworICAgIEpTVmFsdWUgZXhlY3V0ZVBy
b2dyYW0oY29uc3QgU291cmNlQ29kZSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNP
YmopOworICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqKTsKKyAgICBKU1Zh
bHVlIGV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxs
VHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYp
OworICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3Qg
QXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4
ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKik7
CisKKyAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBw
dHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdj
KTsKKworICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdW53aW5kKFZNJiwgQ2FsbEZyYW1l
KiYsIEV4Y2VwdGlvbiopOworICAgIHZvaWQgbm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVU
aHJvd24oVk0mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEV4Y2VwdGlvbiopOworICAg
IE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va1R5cGUpOworICAg
IHN0YXRpYyBTdHJpbmcgc3RhY2tUcmFjZUFzU3RyaW5nKFZNJiwgY29uc3QgVmVjdG9yPFN0YWNr
RnJhbWU+Jik7CisKKyAgICB2b2lkIGdldFN0YWNrVHJhY2UoSlNDZWxsKiBvd25lciwgVmVjdG9y
PFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gMCwgc2l6ZV90IG1h
eFN0YWNrU2l6ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworCitwcml2
YXRlOgorICAgIGVudW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVy
biB9OworICAgIAorICAgIHN0YXRpYyBKU1ZhbHVlIGNoZWNrZWRSZXR1cm4oSlNWYWx1ZSByZXR1
cm5WYWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXR1cm5WYWx1ZSk7CisgICAgICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpTT2JqZWN0KiBjaGVj
a2VkUmV0dXJuKEpTT2JqZWN0KiByZXR1cm5WYWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChy
ZXR1cm5WYWx1ZSk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBD
YWxsRnJhbWVDbG9zdXJlIHByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSos
IENhbGxGcmFtZSosIFByb3RvQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgSlNTY29wZSosIGNvbnN0IEFyZ0xpc3QmKTsKKworICAgIEpTVmFs
dWUgZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJik7CisKKyAgICBWTSYgbV92bTsKICNpZiBFTkFC
TEUoQ19MT09QKQotICAgICAgICBDTG9vcFN0YWNrIG1fY2xvb3BTdGFjazsKKyAgICBDTG9vcFN0
YWNrIG1fY2xvb3BTdGFjazsKICNlbmRpZgotICAgICAgICAKKyAgICAKICNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19PUENPREVTKQogI2lmICFFTkFCTEUoTExJTlRfRU1CRURERURfT1BDT0RFX0lE
KSB8fCBBU1NFUlRfRU5BQkxFRAotICAgICAgICBzdGF0aWMgSGFzaE1hcDxPcGNvZGUsIE9wY29k
ZUlEPiYgb3Bjb2RlSURUYWJsZSgpOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRC4KKyAgICBz
dGF0aWMgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiYgb3Bjb2RlSURUYWJsZSgpOyAvLyBNYXBz
IE9wY29kZSA9PiBPcGNvZGVJRC4KICNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0VNQkVEREVEX09Q
Q09ERV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKICNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09U
T19PUENPREVTKQotICAgIH07Ci0KLSAgICBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqLCBFQ01BTW9kZSk7Ci0KLSAgICBpbmxpbmUgQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Ns
b3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKLSAgICB7Ci0gICAgICAg
IC8vIFdlIHdhbnQgdGhlIG5ldyBmcmFtZSB0byBiZSBhbGxvY2F0ZWQgb24gYSBzdGFjayBhbGln
bmVkIG9mZnNldCB3aXRoIGEgc3RhY2sKLSAgICAgICAgLy8gYWxpZ25lZCBzaXplLiBBbGlnbiB0
aGUgc2l6ZSBoZXJlLgotICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZigKLSAgICAgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCksCi0gICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAtIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
OwotCi0gICAgICAgIC8vIEFsaWduIHRoZSBmcmFtZSBvZmZzZXQgaGVyZS4KLSAgICAgICAgdW5z
aWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
Ci0gICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAotICAgICAgICAgICAgbnVt
VXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKLSAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRl
KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7Ci0gICAg
fQotCi0gICAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
YXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAweDEwMDAwOwotICAgIHVuc2lnbmVkIHNpemVG
cmFtZUZvclZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTSYsIEpTVmFsdWUg
YXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQpOwotICAgIHVuc2lnbmVkIHNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTSYsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3Rz
KTsKLSAgICB2b2lkIGxvYWRWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSogZmlyc3RF
bGVtZW50RGVzdCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbGVu
Z3RoKTsKLSAgICB2b2lkIHNldHVwVmFyYXJnc0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgYXJndW1lbnRz
LCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKLSAgICB2b2lk
IHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
ZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNW
YWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5n
dGgpOwotICAgIHZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3Qg
bGVuZ3RoKTsKLSAgICB2b2lkIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2Fs
bGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdWludDMyX3QgbGVuZ3RoKTsKK307CisKK0pTVmFsdWUg
ZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKTsKKworaW5saW5lIENh
bGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNp
Z25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpCit7CisgICAgLy8gV2Ugd2FudCB0aGUgbmV3IGZyYW1lIHRvIGJlIGFsbG9jYXRlZCBvbiBh
IHN0YWNrIGFsaWduZWQgb2Zmc2V0IHdpdGggYSBzdGFjaworICAgIC8vIGFsaWduZWQgc2l6ZS4g
QWxpZ24gdGhlIHNpemUgaGVyZS4KKyAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZigKKyAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwKKyAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVycykgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKKwor
ICAgIC8vIEFsaWduIHRoZSBmcmFtZSBvZmZzZXQgaGVyZS4KKyAgICB1bnNpZ25lZCBwYWRkZWRD
YWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKKyAgICAgICAgc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKKyAgICAgICAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
KTsKKyAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAt
IHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKK30KKwordW5zaWduZWQgc2l6ZU9mVmFyYXJncyhK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCk7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEFyZ3VtZW50cyA9IDB4MTAwMDA7
Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiwgVk0mLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKK3Vuc2lnbmVkIHNpemVGcmFtZUZvckZvcndhcmRB
cmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTSYsIHVuc2lnbmVkIG51bVVz
ZWRTdGFja1Nsb3RzKTsKK3ZvaWQgbG9hZFZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KiBmaXJzdEVsZW1lbnREZXN0LCBKU1ZhbHVlIHNvdXJjZSwgdWludDMyX3Qgb2Zmc2V0LCB1aW50
MzJfdCBsZW5ndGgpOwordm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3Vt
ZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Cit2b2lk
IHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
ZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNW
YWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5n
dGgpOwordm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCB1aW50MzJfdCBsZW5n
dGgpOwordm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5YmY5YTFhMTk1YzNl
ODM4NjRjMWNhMTc4NDA4YTViMGYuLjhiM2EyMzhhNGRhZjFmYzY3OTE0MGQ4YmJlYzc3MDliODU2
OGJiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIG1fbGFiZWxzW21fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKV0gPSBsYWJlbCgpOwogCiAgICAgICAgIGlmIChKSVRJbnRlcm5h
bDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiT2xkIEpJVCBlbWl0dGluZyBjb2Rl
IGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0
KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRpbmcgY29kZSBm
b3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgp
KTsKIAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bj
b2RlSUQoKTsKIApAQCAtNDM4LDYgKzQzOCw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9pbnRlcm5hbF9maWVsZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9pbnRlcm5hbF9maWVsZCkKIAorICAgICAgICBERUZJTkVfT1Ao
b3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5FX09QKG9wX2l0ZXJhdG9yX25leHQpCisK
ICAgICAgICAgREVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5FX09QKG9wX3JzaGlmdCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3Vuc2lnbmVkKQpAQCAtNTI1LDcgKzUyOCw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICByYXJlQ2FzZVByb2Zp
bGUgPSAmcmFyZUNhc2VQcm9maWxlcy5hdChieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UpOwog
CiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dM
bigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBh
dCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4o
IkJhc2VsaW5lIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwg
IiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAgICAgICAgaWYgKG1fZGlz
YXNzZW1ibGVyKQogICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEZvckJ5dGVjb2RlU2xv
d1BhdGgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBsYWJlbCgpKTsKQEAgLTU4OSw2ICs1OTIs
OSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfdG9fc2NvcGUpCiAKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2l0ZXJh
dG9yX29wZW4pCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pdGVyYXRvcl9uZXh0KQor
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHVuc2lnbmVkKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfU0xPV19PUChpbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KGRlYykKQEAgLTYyNiw4ICs2MzIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCJBdCAiLCBmaXJzdFRvLCAiIHNsb3c6ICIsIGl0ZXIgLSBtX3Nsb3dDYXNlcy5iZWdpbigp
LCAiXG4iKTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoaXRlciA9PSBt
X3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvICE9IGl0ZXItPnRvLCAiTm90IGVub3VnaCBqdW1w
cyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfTUVTU0FHRShmaXJzdFRvID09IChpdGVyIC0gMSktPnRvLCAiVG9vIG1hbnkganVtcHMg
bGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvLm9mZnNldCgp
ICE9IGl0ZXItPnRvLm9mZnNldCgpLCAiTm90IGVub3VnaCBqdW1wcyBsaW5rZWQgaW4gc2xvdyBj
YXNlIGNvZGVnZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJz
dFRvLm9mZnNldCgpID09IChpdGVyIC0gMSktPnRvLm9mZnNldCgpLCAiVG9vIG1hbnkganVtcHMg
bGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwogICAgICAgICAKICAgICAgICAgaWYgKHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwg
QWJzb2x1dGVBZGRyZXNzKCZyYXJlQ2FzZVByb2ZpbGUtPm1fY291bnRlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggNzA3MzU1YzZkNzExODJhYTA3MjlhMjc0OTEwMDRmNDVlMWVhNmFj
MS4uODNhZTFhN2I2OThkNjkzM2RiYjhhMDM3MTkwNDllYzIyNTgxOGY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0yOTcsNiArMjk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAKKyAgICAgICAgdm9p
ZCBjaGVja3BvaW50UmVhY2hlZCgpOworICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90Rm9y
Q2hlY2twb2ludChKdW1wKTsKKwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKEp1bXApOwogICAg
ICAgICB2b2lkIGFkZFNsb3dDYXNlKGNvbnN0IEp1bXBMaXN0Jik7CiAgICAgICAgIHZvaWQgYWRk
U2xvd0Nhc2UoKTsKQEAgLTY3Niw2ICs2NzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOwogCisgICAgICAgIHZvaWQg
ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX25l
eHQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworCiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBi
b29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBp
c1Vuc2lnbmVkKTsKIApAQCAtOTExLDYgKzkxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOwogICAgICAgICBWZWN0b3I8TGFiZWw+IG1f
bGFiZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIExhYmVsPiBtX2NoZWNrcG9p
bnRMYWJlbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkR2VuZXJhdG9yPiBtX2dldEJ5SWRz
OwogICAgICAgICBWZWN0b3I8SklUR2V0QnlWYWxHZW5lcmF0b3I+IG1fZ2V0QnlWYWxzOwogICAg
ICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5SWRzV2l0aFRo
aXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBlMWU1NjVkYzUyNDlm
NmFjZmRhYTI0YmZmYjQ0NzFmZmNiMjBiODY2Li4wOTFlZTkzODUzMDVkMzc5N2MyYWRlYjZhMzYx
MGJlMDM1OWIxMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTI5
LDYgKzI5LDggQEAKICNpZiBVU0UoSlNWQUxVRTY0KQogI2luY2x1ZGUgIkpJVC5oIgogCisjaW5j
bHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxlci5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKQEAgLTQyLDggKzQ0LDggQEAKICNp
bmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCi0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTUxLDcgKzUzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lk
IEpJVDo6ZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmIGJ5dGVjb2RlKQogewogICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKLSAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KTsKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2tw
b2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKSwgcmVnVDApOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KQEAgLTYxLDIwICs2MywyMSBAQCBzdGQ6OmVuYWJsZV9pZl90PAogLCB2b2lkPgogSklU
Ojpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyopCiB7
CisgICAgdW5zaWduZWQgY2hlY2twb2ludCA9IG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCk7
CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0g
ICAgaW50IGFyZ0NvdW50ID0gYnl0ZWNvZGUubV9hcmdjOwotICAgIGludCByZWdpc3Rlck9mZnNl
dCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7CisgICAgaW50IGFyZ0NvdW50
SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2RlLCBj
aGVja3BvaW50KTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50Pihz
dGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hlY2twb2ludCkpOwogCiAg
ICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkg
ewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rl
ck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSwgcmVn
VDApOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogICAgICAg
ICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDApOwotICAgICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2Fy
cmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICBzdG9y
ZTMyKHJlZ1QwLCBhcnJheVByb2ZpbGVGb3IobWV0YWRhdGEsIGNoZWNrcG9pbnQpLmFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9
CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXls
b2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzKSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOwogfQogCiAKQEAgLTIwNyw3ICsyMTAsNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxM
aW5rSW5mb0luZAogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gT3A6Om9wY29kZUlEOwogICAg
IGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgVmlydHVhbFJlZ2lz
dGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2FsbGVlOworICAgIFZpcnR1YWxSZWdpc3RlciBjYWxs
ZWUgPSBjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOwog
CiAgICAgLyogQ2FsbGVyIGFsd2F5czoKICAgICAgICAgLSBVcGRhdGVzIGNhbGxGcmFtZVJlZ2lz
dGVyIHRvIGNhbGxlZSBjYWxsRnJhbWUuCkBAIC0yMzQsOSArMjM3LDggQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxs
TGlua0luZm9JbmQKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAv
LyByZWdUMCBob2xkcyBjYWxsZWUuCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1Bv
aW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCi0gICAgaWYg
KGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpIHsKKyAgICBpZiAoY29tcGlsZUNhbGxFdmFsKGJ5
dGVjb2RlKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIERhdGFMYWJlbFB0ciBhZGRy
ZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIEp1bXAgc2xvd0Nhc2UgPSBicmFuY2hQdHJX
aXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrLCBU
cnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKQEAgLTM4MCw2ICszODIsMTg0IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsCiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0PihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
KQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
CisgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAo
aW5zdHJ1Y3Rpb24tPndpZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVy
YXRvcl9vcGVuX3RyeV9mYXN0PE5hcnJvdz47CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1cm4g
aXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0
dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTMyPjsKKyAgICAgICAgZGVmYXVsdDogUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7CisgICAgc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9uKT4oaW5zdHJ1Y3Rpb24sICZtZXRh
ZGF0YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayh0cnlGYXN0RnVuY3Rpb24p
OworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1v
ZGU6OkdlbmVyaWMpKSk7CisKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0b3JPcGVuPihpbnN0
cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBjaGVja3BvaW50UmVhY2hlZCgp
OworICAgIC8vIGNhbGwgcmVzdWx0IChpdGVyYXRvcikgaXMgaW4gcmVnVDAKKworICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gJnZtKCkucHJvcGVydHlOYW1lcy0+bmV4dDsKKyAgICAKKyAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOworCisgICAgSklUR2V0QnlJZEdl
bmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5p
bXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlw
ZTo6R2V0QnlJZCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsK
KworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCk7CisKKyAg
ICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAg
ICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBpdGVy
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludChqdW1wKCkpOworCisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgVmlydHVh
bFJlZ2lzdGVyIG5leHRWUmVnID0gYnl0ZWNvZGUubV9uZXh0OworICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisKKyAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworICAg
IAorICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwg
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7
CisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQor
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBz
d2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1
cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+OworICAgICAgICBjYXNlIFdpZGUxNjog
cmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTE2PjsKKyAgICAgICAgY2FzZSBXaWRl
MzI6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUzMj47CisgICAgICAgIGRlZmF1
bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOwor
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIHJlZ1QwKTsKKyAg
ICBKdW1wIGdlbmVyaWNDYXNlID0gYnJhbmNoSWZOb3RFbXB0eShyZWdUMCk7CisgICAgc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9uKT4oaW5zdHJ1Y3Rpb24sICZtZXRhZGF0
YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayh0cnlGYXN0RnVuY3Rpb24pOwor
ICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6
OkdlbmVyaWMpKSk7CisKKyAgICBnZW5lcmljQ2FzZS5saW5rKHRoaXMpOworICAgIG9yOChUcnVz
dGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpLCBB
YnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzKSk7
CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yTmV4dD4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExp
bmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAvLyBjYWxsIHJl
c3VsdCAoeyBkb25lLCB2YWx1ZSB9IEpTT2JqZWN0KSBpbiByZWdUMAorCisgICAgR1BSUmVnIHZh
bHVlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKyAgICBH
UFJSZWcgZG9uZUdQUiA9IHJlZ1QxOworICAgIC8vIGl0ZXJSZXN1bHRHUFIgd2lsbCBnZXQgdHJh
c2hlZCBieSB0aGUgZmlyc3QgZ2V0IGJ5IGlkIGJlbG93LgorICAgIG1vdmUodmFsdWVHUFIsIGl0
ZXJSZXN1bHRHUFIpOworCisgICAgeworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoaXRlclJlc3VsdEdQUik7CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgcHJlc2VydmVkUmVncyA9
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKKyAgICAgICAgcHJlc2Vy
dmVkUmVncy5hZGQodmFsdWVHUFIpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigK
KyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJl
c2VydmVkUmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKSksIEpTVmFs
dWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgQWNjZXNzVHlwZTo6
R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBl
bmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhKTsKKyAg
ICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RvbmUsIGRvbmVHUFIpOwor
ICAgICAgICBjaGVja3BvaW50UmVhY2hlZCgpOworICAgIH0KKworCisgICAgeworICAgICAgICBH
UFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDM7
CisgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
ZmFsc2U7CisgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRydXRoeSh2
bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBm
cFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSk7CisKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVz
LT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAg
ICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKG1ldGFkYXRhKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZUdQUik7CisKKyAgICAgICAgaXRlcmF0aW9uRG9uZS5saW5rKHRoaXMpOwor
ICAgIH0KKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yTmV4dD4oaW5zdHJ1
Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgZW1pdEp1bXBTbG93VG9I
b3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rp
b24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGRvbmVWUmVnID0gYnl0ZWNvZGUubV9kb25lOworICAgICAgICBHUFJSZWcgaXRlclJlc3VsdEdQ
UiA9IHJlZ1QyOworCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgICAgIEp1
bXBMaXN0IG5vdE9iamVjdDsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENl
bGwoaXRlclJlc3VsdEdQUikpOworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90
T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRl
bnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworICAgICAgICAK
KyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRvbmVWUmVnLCBy
ZWdUMSk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwg
cmVnVDApOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsK
KworICAgICAgICBub3RPYmplY3QubGluayh0aGlzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgeyAgIAorICAgICAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWVWUmVn
ID0gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdU
MDsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFt
ZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2Zp
bGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIH0KKworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggOTA2OTZjYmVjMTBlMzkz
Yjk5NzBmMGViMjAxMThkMjE5NzRjMzUyNS4uZDE0MGFhYzliZTJkNTQwM2QxYmMwZDk5MTJhZTll
MTA1ZjgwZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cApAQCAtMzY2LDYgKzM2NiwyNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIGVtaXRQ
dXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbihjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit7CisgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25l
eHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmlu
ZGV4IDdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQuLjI3YTU3ZjRlZTM2
MTY0YWNlOGUzOWYzNjhjZTc2NWJmMTVkZGZjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCkBAIC0yNiw3ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJM
RShKSVQpCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQ29tbW9u
U2xvd1BhdGhzSW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDUsNyArMTA3LDcgQEAgQUxXQVlTX0lOTElO
RSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWRUYWlsQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiB0YXJn
ZXQpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSgpCiB7Ci0g
ICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LmJpdHMoKTsKKyAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxv
Y2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOwogICAgIAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGF0IHRoaXMgaXMg
bmVlZGVkLiBKSVRPcGVyYXRpb25zIHRlbmQgdG8gdXBkYXRlIHRoZSB0b3AgY2FsbCBmcmFtZSBv
bgpAQCAtMTgzLDYgKzE4NSwyNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjpoYXNBbnlTbG93
Q2FzZXMoVmVjdG9yPFNsb3dDYXNlRW50cnk+JiBzbG93Q2FzZXMsIFZlY3RvcgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgSklUOjpjaGVja3BvaW50UmVhY2hlZCgpCit7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhh
dCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNv
ZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3Bv
aW50KCkgKyAxKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9jaGVja3BvaW50TGFiZWxzLmFkZCht
X2J5dGVjb2RlSW5kZXgsIGxhYmVsKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KEp1bXAganVtcCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0
ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90
L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsK
KyAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0byBpdGVy
ID0gbV9jaGVja3BvaW50TGFiZWxzLmZpbmQobV9ieXRlY29kZUluZGV4KTsKKyAgICBBU1NFUlQo
aXRlciAhPSBtX2NoZWNrcG9pbnRMYWJlbHMuZW5kKCkpOworICAgIGp1bXAubGlua1RvKGl0ZXIt
PnZhbHVlLCB0aGlzKTsKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YWRkU2xvd0Nhc2Uo
SnVtcCBqdW1wKQogewogICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhv
ZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwg
c28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0LgpAQCAtMzE5LDcgKzM0MCw3IEBAIGlubGlu
ZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShNZXRhZGF0YSYgbWV0YWRhdGEpCiB7
CiAgICAgaWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLm1fcHJvZmlsZSk7CisgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSh2YWx1ZVByb2ZpbGVGb3IobWV0YWRhdGEsIG1fYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxpbmdT
aXRlV2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAppbmRleCA3YWUxNTBjYzY2MTA3NjJiYWNjOGJlNDIyMDczYWFkNjRhYjMx
MTkxLi5hNWUyYTI0N2NmMTU0ZGE0NmViMzNkZmJiZjBlMzM2MGQzNmY1NWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzNCw2ICsxMzQsMTYg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJv
bVRodW5rKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBBU1NFUlQodm0udGFyZ2V0TWFjaGluZVBD
Rm9yVGhyb3cpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRv
clJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworfQor
CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhlZmI1YjVh
Yzk4MGFlZTZjNTUyMzQ0MzdjOTAyODk1ODkwMjI2NjUuLjlmY2M0MWRlYzQ1ODJjOTY1MjkyMzY1
NWRhOGYzMDI2OTVkZjcwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXIoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZShWTSopIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlv
bihWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7
CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxP
YmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA4ZGVhN2YyNzhlNzY2MmU1MDMxNGNlYjliMDgzMzlmODdi
ZmRhNDk3Li44YmIxOGMyMWY0MmE5ZjU3Y2RjMDUzZmRkZThjNDUwMWQ0OGUzYzYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmgi
CiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIgpAQCAtODIsNiArODMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsgXAogICAgIFZNJiB2bSA9IGNv
ZGVCbG9jay0+dm0oKTsgXAogICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOyBcCisgICAgZGF0YUxvZ0xuSWYoTExJTlRfVFJBQ0lORyAmJiBPcHRpb25zOjp0cmFj
ZUxMSW50U2xvd1BhdGgoKSwgIkNhbGxpbmcgc2xvdyBwYXRoICIsIFdURl9QUkVUVFlfRlVOQ1RJ
T04pOyBcCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSkKIAog
I2lmbmRlZiBOREVCVUcKQEAgLTY5Myw3ICs2OTUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKIH0KIAogCi1zdGF0aWMgdm9pZCBzZXR1cEdldEJ5
SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE9wR2V0QnlJZDo6TWV0
YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBl
Q2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRh
ZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1
Y3R1cmUodm0pOwogCkBAIC03NDEsNDQgKzc0MywzOSBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5
SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENv
ZAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jayk7CiAgICAgICAgIGlmIChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgbWV0
YWRhdGEuc2V0VW5zZXRNb2RlKHN0cnVjdHVyZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLnNldFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Quc2xvdEJhc2Uo
KSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zm
c2V0LCBzbG90LnNsb3RCYXNlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKGNvZGVCbG9jayk7CiB9CiAKLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZCkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBH
ZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICBMTElOVF9CRUdJTigpOwotICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeUlkPigpOwotICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKLSAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2Up
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7
CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpZGVu
dCwgc2xvdCk7Ci0gICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgY2FsbEZyYW1lLT51
bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZHN0KSA9IHJlc3VsdDsKLSAgICAKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NF
U1NfU0xPVwogICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKICAgICAgICAgJiYgc2xvdC5p
c0NhY2hlYWJsZSgpCiAgICAgICAgICYmICFzbG90LmlzVW5zZXQoKSkgewogICAgICAgICB7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIHN3aXRj
aCAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSkgeworICAgICAgICAgICAgc3dpdGNoICht
ZXRhZGF0YS5tb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpEZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
ZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQg
PSBtZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlVuc2V0OgotICAgICAgICAgICAgICAg
IG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVj
dHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEudW5zZXRN
b2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRDsKKyAg
ICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gMDsKQEAgLTc5OSwzNSArNzk2LDEwOSBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICBpZiAo
c2xvdC5pc1ZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewogICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAg
ICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAg
ICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0
Q2FjaGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRD
YWNoZSgpOwogCiAgICAgICAgICAgICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUgY2FjaGUgZnJv
bSBldmVyIGhhcHBlbmluZy4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhp
dENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLmhpdENvdW50
Rm9yTExJbnRDYWNoaW5nID0gMDsKICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJl
LT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zm
c2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwog
ICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7CisgICAgICAg
IH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYg
c2xvdC5pc1ZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpICE9
IGJhc2VWYWx1ZSk7CiAKLSAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQorICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0
YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCiAgICAgICAgICAgICAgICAgc2V0dXBHZXRCeUlk
UHJvdG90eXBlQ2FjaGUoZ2xvYmFsT2JqZWN0LCB2bSwgY29kZUJsb2NrLCBwYywgbWV0YWRhdGEs
IGJhc2VDZWxsLCBzbG90LCBpZGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFMTElO
VF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRlbnQgPT0g
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAgICAgICBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2Vy
dmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOworICAgICAgICAgICAgbWV0YWRhdGEu
YXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgdm0uaGVhcC53cml0
ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICB9CiAKLSAgICBMTElOVF9QUk9GSUxFX1ZBTFVFKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BHZXRCeUlkPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworCisgICAgSlNW
YWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlLCBpZGVudCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpOworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgb3Blbl9nZXRfbmV4dCIpOwor
CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBp
dGVyYXRvciA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAg
ICBSZWdpc3RlciYgbmV4dFJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2Rl
Lm1fbmV4dCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMs
IGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4
dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
CisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0X2dldF9kb25lIik7CisKKyAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1
ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgc2luY2UgaXQncyBlaXRoZXIgbm90
IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVy
LgorICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV92YWx1ZSk7CisgICAgUmVnaXN0ZXImIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworCisgICAgaWYgKCFpdGVyYXRvclJldHVybi5p
c09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwor
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1l
dGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgZG9uZVJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgbmV4dF9nZXRfdmFsdWUiKTsKKworICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIC8vIFdlIHVzZSBtX3Zh
bHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1ZSB0bXAgc2luY2UgaXQncyBlaXRo
ZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVk
IGxhdGVyLgorICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1
ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgdmFsdWVSZWdpc3RlciA9IHJlc3VsdDsKKyAg
ICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLm1fYnVja2V0c1sw
XSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCisKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVH
SU4oKTsKQEAgLTE1NjMsNyArMTYzNCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0
VXBDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmlj
Q2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0
ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK2lubGluZSBTbG93UGF0aFJldHVy
blR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVk
IGNoZWNrcG9pbnRJbmRleCA9IDApCiB7CiAgICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAt
IFNldCB1cCBhIGNhbGwgZnJhbWUuCkBAIC0xNTcxLDE2ICsxNjQyLDE2IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFt
ZSogY2FsbEZyYW1lCiAgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZS4KICAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNz
IHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxl
ZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9jYWxsZWUpOworICAg
IEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBjYWxsZWVGb3Io
Ynl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIAotICAgIENhbGxGcmFtZSogY2FsbGVl
RnJhbWUgPSBjYWxsRnJhbWUgLSBieXRlY29kZS5tX2FyZ3Y7CisgICAgQ2FsbEZyYW1lKiBjYWxs
ZWVGcmFtZSA9IGNhbGxGcmFtZSAtIHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVj
b2RlLCBjaGVja3BvaW50SW5kZXgpOwogICAgIAotICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyhieXRlY29kZS5tX2FyZ2MpOworICAgIGNhbGxlZUZyYW1lLT5z
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0Zv
cihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tl
ZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1
ZTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJhbWUoY2FsbEZyYW1lKTsKICAgICAKICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgcmV0
dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJm1ldGFkYXRh
Lm1fY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5k
LCBjYWxsZWVBc1ZhbHVlLCAmY2FsbExpbmtJbmZvRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5k
ZXgpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwpCkBAIC0xNjA0
LDYgKzE2NzUsMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCkK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2Nr
LCBjYWxsRnJhbWUsIHBjLT5hczxPcENvbnN0cnVjdD4oKSwgQ29kZUZvckNvbnN0cnVjdCkpOwog
fQogCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5f
Y2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxs
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG9wZW5fY2FsbCIpOworCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZy
YW1lLCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yT3Bl
bjo6c3ltYm9sQ2FsbCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2l0ZXJhdG9yX25leHRfY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
aXRlcmF0b3JfbmV4dF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRf
Y2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxs
KGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCksIENvZGVGb3JD
YWxsLCBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpKTsKK30KKwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpCiB7CiAgICAgTExJTlRfQkVH
SU4oKTsKQEAgLTE5OTAsNiArMjA4Myw0NCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVWYXJhcmdzQ2hl
Y2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdAogICAg
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7CiB9CiAKK3N0
YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRv
ck9wZW4mIGJ5dGVjb2RlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVj
b2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkp
IHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0
b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBKU1ZhbHVlIG5leHQgPSBpdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpID0g
bmV4dDsKK30KKworc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYg
dm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBPcEl0ZXJhdG9yTmV4dCYgYnl0ZWNvZGUsIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRl
JiBzaWRlU3RhdGUpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IHNpZGVTdGF0ZS5ieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKTsKKworICAgIGF1dG8mIHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgYXV0byBpdGVyYXRvclJlc3VsdE9iamVj
dCA9IHNpZGVTdGF0ZS50bXBzW09wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0XTsKKyAgICBhdXRv
IG5leHQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCk7
ICAgIAorCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG5leHQsICJXZSBzaG91bGQg
bm90IE9TUiBleGl0IHRvIGEgY2hlY2twb2ludCBmb3IgZmFzdCBjYXNlcy4iKTsKKworICAgIGF1
dG8mIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUp
OworICAgIGlmIChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsK
KyAgICAgICAgZG9uZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlm
IChkb25lUmVnaXN0ZXIuanNWYWx1ZSgpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKQorICAgICAg
ICB2YWx1ZVJlZ2lzdGVyID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVl
UmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZSk7Cit9CisKIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0
Y2hUb05leHRJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJl
YW06OlJlZiBwYykKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghY29kZUJsb2NrLT52bSgpLmV4Y2Vw
dGlvbkZvckluc3BlY3Rpb24oKSk7CkBAIC0yMDY2LDYgKzIxOTcsMTUgQEAgZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUKICAgICAgICAgaGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQodm0sIGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BUYWlsQ2FsbFZhcmFyZ3M+KCksICpzaWRlU3RhdGUu
Z2V0KCkpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbjogewor
ICAgICAgICBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBoYW5kbGVJdGVyYXRvck5l
eHRDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0
b3JOZXh0PigpLCAqc2lkZVN0YXRlLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yMTAzLDYgKzIyNDMsMTIgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dy
aXRlX2JhcnJpZXJfc2xvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBjZWxsKQogICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
ZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
ZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBkYXRhTG9nTG4oSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlKSk7Cit9CisKIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFT
SCB2b2lkIGxsaW50X2NyYXNoKCkKIHsKICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMw
ZDJjZGFmYTRmOTNjM2E5ZjA5ODA1NzFjODE3NjdjMWEuLmY5YTM0ZGFiMzZkOWZhNTI3NTZhMTk4
YjJkNzRmNzUyYzUzOGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEwMzIsNyArMTAzMiw3IEBAIG1hY3JvIGRl
ZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5l
TmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdpZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBl
bmQKIAotbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKK21hY3JvIGNhbGxUYXJnZXRGdW5j
dGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBD
X0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQog
ICAgIGVsc2UKQEAgLTEwNDUsMTEgKzEwNDUsMTEgQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9u
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFAK
ICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGlu
IHVuZXhwZWN0ZWQKICAgICAgICAgIyBjcmFzaGVzLgogICAgICAgICByZXN0b3JlU3RhY2tQb2lu
dGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBkaXNwYXRjaCkKKyAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAg
IGVuZAogICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAg
IHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3Bh
dGNoKQogZW5kCiAKIG1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0
ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCkBAIC0xMTE3LDcgKzExMTcsMTEgQEAgbWFjcm8gcHJl
cGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykK
ICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCiBlbmQKIAotbWFjcm8gc2xvd1BhdGhGb3JDYWxs
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVw
YXJlQ2FsbCkKK21hY3JvIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1Bh
dGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2Rz
dCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorCittYWNybyBzbG93UGF0
aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAg
ICAgY2FsbENhbGxTbG93UGF0aCgKICAgICAgICAgc2xvd1BhdGgsCiAgICAgICAgICMgVGhvc2Ug
YXJlIHIwIGFuZCByMQpAQCAtMTEyNiw3ICsxMTMwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxs
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVw
YXIKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVw
YXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9u
dFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9z
bG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFn
KQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlz
cGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0y
MDE2LDcgKzIwMjAsNyBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIGZyYW1lU2xvd1BhdGgsIHNsbwogICAgICAgICAgICAgc3Vi
cCByMSwgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiAgICAgICAgIGVuZAogICAgIGVuZAotICAg
IHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNo
LCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKIGVuZAogCiAKQEAgLTIwNzksNyArMjA4Myw3IEBAIGVuZCkKICMgcmV0dXJucyB0aGUgSlMg
dmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KIAogX2xsaW50X29wX2NhbGxfZXZhbDoKLSAg
ICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBv
cF9jYWxsX2V2YWxfbmFycm93LAogICAgICAgICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWws
CkBAIC0yMDg4LDcgKzIwOTIsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgICAgICBwcmVw
YXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgotICAgIHNs
b3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2Nh
bGxfZXZhbF93aWRlMTYsCiAgICAgICAgIHdpZGUxNiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAg
LTIwOTcsNyArMjEwMSw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogICAgICAgICBw
cmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgotICAg
IHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9w
X2NhbGxfZXZhbF93aWRlMzIsCiAgICAgICAgIHdpZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwK
QEAgLTIxMDcsNyArMjExMSw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogCiAKIGNv
bW1vbk9wKGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50LCBtYWNybyAoKSBlbmQsIG1hY3JvIChz
aXplKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1hY3JvICgpCisg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BDYWxsRXZhbCwgbV9wcm9maWxlLCBtX2RzdCwg
bWFjcm8gKCkKICAgICAgICAgZGlzcGF0Y2hPcChzaXplLCBvcF9jYWxsX2V2YWwpCiAgICAgZW5k
KQogZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA4MTg5MWMyMmU2MTgzYzgwNDJhYmRmY2U4ZDQz
OTExYWY0MWY2NTRhLi43NGM0ODBkZjIxMjE3MTY1NTBjNWZkNGYwODQ0YWIxMTA4ZmRjODFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtNjcsNyArNjcsNyBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmls
ZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAgICAgICAgIG1v
dmUgcGF5bG9hZCwgdDAKIAogICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgICAgIHZhbHVl
UHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQ1LCB0MSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MCkKICAgICAgICAgZ2V0KG1fZHN0LCB0
MikKICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICAgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCkBAIC03NywxNiArNzcsMTcgQEAgZW5k
CiAKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0
IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1tYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNo
KQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1
Y3QsIG1fZHN0LCB0MykKKyAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVn
aXN0ZXIsIHQzKQogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3Rv
cmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bj
b2RlU3RydWN0LCB0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIx
LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgcjEsIHIwKQogICAgIGRpc3BhdGNoKCkKKwogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlv
bikKQEAgLTYzMiw5ICs2MzMsOSBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxF
bnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVlRmllbGROYW1lKQogICAgICAgICBlbmQpCiBlbmQK
IAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbWV0YWRhdGEsIHRhZywgcGF5bG9h
ZCkKK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0
YSwgdGFnLCBwYXlsb2FkKQogICAgIHN0b3JlaSB0YWcsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KLSAgICBzdG9yZWkg
cGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsg
UGF5bG9hZE9mZnNldFttZXRhZGF0YV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0
YWRhdGFdCiBlbmQKIAogCkBAIC0xMzc4LDcgKzEzNzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwg
dDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZERp
cmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQx
KQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIHQ1LCB0MCwgdDEpCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJl
dHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTQwMCw3ICsxNDAxLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFy
cmF5TGVuZ3RoOgpAQCAtMTQxMyw3ICsxNDE0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQK
ICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAogICAgIGxvYWRpIC1zaXpl
b2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0
aFt0MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCB0NSwgSW50MzJUYWcsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKICAgICByZXR1cm4oSW50MzJUYWcsIHQw
KQogCiAub3BHZXRCeUlkVW5zZXQ6CkBAIC0xNDIxLDcgKzE0MjIsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdAogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCkKICAgICByZXR1cm4o
VW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVsdDoKQEAgLTE0MzAsNyArMTQzMSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRh
dGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0NV0sIHQyCiAgICAg
YmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQs
IG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlk
U2xvdzoKQEAgLTE0NDAsNyArMTQ0MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3Ny
UmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9i
eV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUs
IHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTUxOCw3ICsxNTE5
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNo
KQogICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAg
ICAgICAgIHN0b3JlaSByZXN1bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwg
OF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCBJbnQzMlRhZywgcmVzdWx0
UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUs
IEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAK
QEAgLTE1MjcsNyArMTUyOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwg
T3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZk
MmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gzCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMywg
VGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5
bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKICAgICAgICAgZGlzcGF0
Y2goKQogICAgIGVuZAogCkBAIC0xNTcyLDcgKzE1NzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZAogLm9wR2V0QnlWYWxOb3RFbXB0eToKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRC
eVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU4NSw3ICsxNTg2LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0
dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIwKQogCiBl
bmQpCkBAIC0xOTU3LDEwICsxOTU4LDEwIEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1l
LCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAg
IHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMs
IHNwCiAgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJU
YWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFy
Z2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1f
ZHN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93
OgotICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAgICBzbG93UGF0aEZvckNh
bGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjg4LDcg
KzIyODksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZy
b21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5
KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVd
LCB0MwogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQy
KQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAg
ICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQog
ICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yMjk3LDcgKzIyOTgsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQog
ICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5l
Y2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEs
IHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjMwNSw3ICsy
MzA2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9t
U2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9t
U2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkcCBKU0xleGlj
YWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwgdDEKICAgICAg
ICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0
MCwgdDMsIDhdLCB0MgotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0
MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0
NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTk0LDYg
KzI1OTUsMTUgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJl
c3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICByZXR1cm4oSW50MzJUYWcs
IHQwKQogZW5kKQogCitsbGludE9wKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwo
b3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKKyAgICBicmVhaworZW5kKQorCitsbGludE9wKG9wX2l0
ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkK
KyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3JfbmV4dCwgc2l6ZSkKKyAg
ICBicmVhaworZW5kKQogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxk
LCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4p
CiAgICAgZ2V0KG1fYmFzZSwgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGFlMmUzNzczZmZkY2M0MDY3NGM3
YWFjMGMxZDRmZTZjZDBmYjc4NTkuLjg2MTM2ZTg1N2M5Zjc4MjJiMjQ0NmM2MjZiZmRjN2EzZGZi
YjJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC02OCwyNiArNjgsMjYgQEAgbWFjcm8gbWFrZVJldHVyblBy
b2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgIGZu
KG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEo
dDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MSwgdDMpCisgICAg
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQogICAgICAg
ICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAg
ICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0c1ttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3Rv
cmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNr
ZXRzW21ldGFkYXRhXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBp
cyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hB
ZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2FkUEMoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwg
UEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2RzdCwgdDEpCisgICAgZ2V0KHNpemUs
IG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtj
ZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjApCiAgICAgZGlzcGF0Y2goKQogZW5k
CiAKQEAgLTEzNDAsNyArMTM0MCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lk
X2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgYmlu
ZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVj
dDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgdDIs
IHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQw
KQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xMzQ4LDUzICsx
MzQ4LDU5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRC
eUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQog
Ci1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyMgVGhlIGJhc2Ugb2JqZWN0IGlz
IGV4cGVjdGVkIGluIHQzCittYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3Qs
IG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0
YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BHZXRCeUlk
OjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9kZVt0Ml0sIHQxCi0gICAgZ2V0KG1fYmFzZSwg
dDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRC
eUlkU2xvdykKKyAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRh
dGFOYW1lJS5tb2RlW3QyXSwgdDEKIAogLm9wR2V0QnlJZERlZmF1bHQ6CiAgICAgYmJuZXEgdDEs
IGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAogICAg
IGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlk
OjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0
MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlk
OjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwg
dDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1l
JS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93
TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwg
dDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CiAgICAgYmJu
ZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlM
ZW5ndGgKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRp
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0
dXJlSURbdDJdLCB0MwotICAgIGJpbmVxIHQzLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2Fk
aXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNo
ZWRPZmZzZXRbdDJdLCB0MQotICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1l
dGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCisgICAgbG9hZGkgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5zdHJ1
Y3R1cmVJRFt0Ml0sIHQzCisgICAgYmluZXEgdDMsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9k
ZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkQXJy
YXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQwCi0gICAgYXJyYXlQcm9maWxlKE9w
R2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVBy
b2ZpbGUsIHQwLCB0MiwgdDUpCi0gICAgYnRpeiB0MCwgSXNBcnJheSwgLm9wR2V0QnlJZFNsb3cK
LSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QnlJZFNsb3cKKyAgICBhcnJh
eVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBidGl6IHQwLCBJc0Fy
cmF5LCBzbG93TGFiZWwKKyAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVs
CiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEp
CiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxl
bmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKLSAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xv
dworICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAogICAgIG9ycSBudW1iZXJUYWcsIHQwCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdl
dEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAg
IGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1
Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICBsb2FkaSAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0
dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkKQog
ICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAorZW5kCisKK2xsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgcGVyZm9ybUdldEJ5
SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlk
U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKwogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgIGRpc3BhdGNoKCkKQEAg
LTE0MDIsNyArMTQwOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdl
dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9p
bnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6
ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIs
IHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQogICAg
IHJldHVybihyMCkKIAogZW5kKQpAQCAtMTQ5Nyw3ICsxNTAzLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAg
ICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2Ny
YXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCisg
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQpCiAg
ICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU1OCw3ICsxNTY0LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWQKIAogLm9wR2V0QnlWYWxEb25lOgogICAgIHN0b3JlcSB0MiwgW2Nm
ciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MikKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCiAgICAgZGlzcGF0Y2goKQog
CiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU3MSw3ICsxNTc3LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJP
U1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0NSwg
dDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByMCkKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCiAgICAgcmV0dXJuKHIwKQogCiBlbmQp
CkBAIC0xOTQ4LDYgKzE5NTQsMzAgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVT
dHJ1Y3QsIGdldHUpCiAuZG9uZToKIGVuZAogCittYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUs
IHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdp
c3RlciwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBn
ZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICBtZXRh
ZGF0YSh0NSwgdDApCisgICAgZ2V0Q2FsbGVlKHQwKQorCisgICAgbG9hZHAgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRo
TGlua0JpdFt0NV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMp
CisgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdworCisgICAgZ2V0QXJndW1lbnRTdGFydCh0
MykKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgbmVncCB0MworICAgIGFkZHAgY2ZyLCB0MworICAg
IHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQorICAgIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KHQyKQorICAgIHN0b3JlUEMoKQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIHNwCisgICAgcHJlcGFyZUNh
bGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorCisu
b3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBz
bG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKwogbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5h
bWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICBs
bGludE9wV2l0aE1ldGFkYXRhKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0
MCkKQEAgLTE5NTYsMjQgKzE5ODYsMTkgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUs
IHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAg
ICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICAgICAgZW5k
LCBtZXRhZGF0YSkKIAotICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2Vl
bkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MCwgdDMpCi0gICAgICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAg
ICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCi0gICAgICAgIGxzaGlmdGkg
MywgdDMKLSAgICAgICAgbmVncCB0MwotICAgICAgICBhZGRwIGNmciwgdDMKLSAgICAgICAgc3Rv
cmVxIHQyLCBDYWxsZWVbdDNdCi0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Fy
Z2MsIHQyKQotICAgICAgICBzdG9yZVBDKCkKLSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgICAgIG1vdmUgdDMsIHNw
Ci0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcp
Ci0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1f
bWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQotCi0gICAgLm9wQ2FsbFNsb3c6
Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgICAgIG1hY3JvIGdldENhbGxl
ZShkc3QpCisgICAgICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQorICAgICAgICBlbmQKKworICAg
ICAgICBtYWNybyBnZXRBcmd1bWVudFN0YXJ0KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwg
b3Bjb2RlU3RydWN0LCBtX2FyZ3YsIGRzdCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8g
Z2V0QXJndW1lbnRDb3VudChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVj
dCwgbV9hcmdjLCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIGNhbGxIZWxwZXIob3Bjb2Rl
TmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgcHJlcGFyZUNh
bGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0
LCBnZXRBcmd1bWVudENvdW50KQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjc2LDcgKzIzMDEsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAg
ICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAg
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgICAgICByZXR1cm4odDIpCiAg
ICAgZW5kCiAKQEAgLTIyODQsMTQgKzIzMDksMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMK
ICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0
MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQw
KQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAg
cmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0Q2xvc3VyZVZhcigpCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAg
ICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0sIHQwCi0g
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQwKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1
cm4odDApCiAgICAgZW5kCiAKQEAgLTI1NTEsNyArMjU3Niw2IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHJvZmlsZV9jb250cm9sX2Zsb3csIE9wUHJvZmlsZUNvbnRyb2xGbG93LCBtYWNybyAo
c2l6ZSwKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0
X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCByZXR1cm4pCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MApAQCAtMjU2Nyw2ICsyNTkxLDE0NyBAQCBs
bGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQogCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3Bf
aXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0
TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25h
cnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQ
YXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBm
YXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RX
aWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNo
b3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBj
YXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRl
cmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWM6
CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXRCeUlk
U3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldCht
X3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudElu
Y2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck9wZW4s
IG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5j
bHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworCisg
ICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9vcGVuLCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9y
X29wZW5fY2FsbCwgT3BJdGVyYXRvck9wZW4sIG1faXRlcmF0b3JQcm9maWxlLCBtX2l0ZXJhdG9y
LCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9HZXRCeUlkQ2hlY2twb2ludCwgbWV0
YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3Vt
ZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0QnlJZFN0YXJ0OgorICAgIG1hY3JvIHN0b3Jl
TmV4dEFuZERpc3BhdGNoKHZhbHVlKQorICAgICAgICBtb3ZlIHZhbHVlLCB0MgorICAgICAgICBn
ZXQobV9uZXh0LCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAg
ZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9pdGVyYXRvciwg
dDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5l
eHRTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1l
dGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBz
aXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisKKy5pdGVyYXRvck9wZW5HZW5l
cmljR2V0TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0
b3Jfb3Blbl9nZXRfbmV4dCkKKyAgICBkaXNwYXRjaCgpCisKK2VuZCkKKworbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBt
X25leHQsIHQwKQorICAgIGJ0cW56IHQwLCB0MCwgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBt
ZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93
UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8g
ZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFz
dF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxT
bG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6
ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxs
T3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBh
c3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4
cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBkaXNw
YXRjaCgpCisKKy5pdGVyYXRvck5leHRHZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXREb25lQ2hl
Y2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNy
byBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9uZXh0LCBkc3QpCisgICAgZW5kCisKKyAg
ICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUo
c2l6ZSwgT3BJdGVyYXRvck5leHQsIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAg
IG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAx
LCBkc3QKKyAgICBlbmQKKworICAgICMgVXNlIG1fdmFsdWUgc2xvdCBhcyBhIHRtcCBzaW5jZSB3
ZSBhcmUgZ29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisgICAgY2FsbEhlbHBlcihvcF9pdGVy
YXRvcl9uZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCwgT3BJdGVyYXRv
ck5leHQsIG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUsIHByZXBhcmVGb3JSZWd1bGFyQ2Fs
bCwgc2l6ZSwgZ290b0dldERvbmVDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRB
cmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQp
CisKKy5nZXREb25lU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZShk
b25lVmFsdWUpCisgICAgICAgICMgdXNlIHQwIGJlY2F1c2UgcGVyZm9ybUdldEJ5SURIZWxwZXIg
dXN1YWxseSBwdXRzIHRoZSBkb25lVmFsdWUgdGhlcmUgYW5kIG9mZmxpbmVhc20gd2lsbCBlbGlk
ZSB0aGUgc2VsZiBtb3ZlLgorICAgICAgICBtb3ZlIGRvbmVWYWx1ZSwgdDAKKyAgICAgICAgZ2V0
KG1fZG9uZSwgdDEpCisgICAgICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgICAgIGpt
cCAuZ2V0VmFsdWVTdGFydAorICAgIGVuZAorCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3Zh
bHVlLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5nZXREb25lU2xvdworICAgIHBl
cmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1f
ZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEpt
cFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQorICAgIGJyYW5jaElmRXhjZXB0aW9uKF9s
bGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQorICAgIGxvYWRWYXJpYWJsZShn
ZXQsIG1fZG9uZSwgdDApCisKKyAgICAjIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUgcHV0cyB0
aGUgZG9uZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0OgorICAgICMgQnJhbmNoIHRvIHNs
b3cgaWYgbm90IG1pc2MgcHJpbWl0aXZlLgorICAgIGJ0cW56IHQwLCB+MHhmLCAuZ2V0VmFsdWVT
bG93CisgICAgYnRpeiB0MCwgMHgxLCAubm90RG9uZQorICAgIGRpc3BhdGNoKCkKKworLm5vdERv
bmU6CisgICAgbWFjcm8gc3RvcmVWYWx1ZUFuZERpc3BhdGNoKHYpCisgICAgICAgIG1vdmUgdiwg
dDIKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQx
LCA4XQorICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MCwgMHhiYWRkYjAxZSkK
KyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVz
dWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4K
KyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICAjIFdlIGRvbid0IG5lZWQg
dG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3
aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KKyAgICBwZXJmb3JtR2V0QnlJREhlbHBl
cihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5n
ZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5n
ZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jf
bmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCisKIGxsaW50T3BXaXRoUHJv
ZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2Jhc2Us
IHQxKQogICAgIGdldHUoc2l6ZSwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgppbmRleCA4ZDc2
NzExNmMwNTRlNWVhNjY0ZWY0MDYyYzU2ZjI2MDVlMGQ4YjQ1Li41ODlhZTBlMGYzZWQzNGI2NjFl
ODU2MmJjYTI5ODAyZWMxMGU1YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vdHJhbnNmb3JtLnJiCkBAIC02MjksNyArNjI5LDcgQEAgZW5kCiAKIGNsYXNzIE5vZGUK
ICAgICBkZWYgdmFsaWRhdGUKLSAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgI3tkdW1wfSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICByYWlzZSAiVW5yZXNvbHZlZCAnI3tkdW1wfScg
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICBlbmQKICAgICAKICAgICBkZWYgdmFsaWRhdGVD
aGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggYjhkZTk2NTU4MmY3ZDkxMjcxMzM3ZDU0MzE5MDNlODMxOGMyNmY0Ny4u
ZTE5ZGZiOTllM2VhNDZjMjJiNDFhYzE3MmMxMTNkYWE0MTUxY2E5NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE1Myw4ICsxNTQsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjZGVmaW5lIFJFVFVSTl9QUk9GSUxFRCh2YWx1ZV9fKSBcCiAgICAgUkVUVVJOX1dJ
VEhfUFJPRklMSU5HKHZhbHVlX18sIFBST0ZJTEVfVkFMVUUocmV0dXJuVmFsdWVfXykpCiAKLSNk
ZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8geyBcCi0gICAgICAgIGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jaykubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7IFwKKyNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZV9fKSBcCisgICAgUFJPRklMRV9W
QUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUpCisKKyNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2
YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7
IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dBcml0eUNoZWNrU3Rh
Y2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUm
IHNjb3BlKQpAQCAtOTY1LDYgKzk2OSwxMjggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lu
X2J5X2lkKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJv
cGVydHkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9w
ZXJ0eSkpKSk7CiB9CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgLy8g
RG9uJ3Qgc2V0IFBDOyB3ZSBjYW4ndCB0aHJvdyBhbmQgaXQncyByZWxhdGl2ZWx5IHNsb3cuCisg
ICAgQkVHSU5fTk9fU0VUX1BDKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25X
aWR0aDxPcEl0ZXJhdG9yT3Blbiwgd2lkdGg+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSAqcmVp
bnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yT3Blbjo6TWV0YWRhdGEqPihtZXRhZGF0YVB0cik7Cisg
ICAgSlNWYWx1ZSBpdGVyYWJsZSA9IEdFVF9DKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUo
KTsKKyAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhYmxlLCBtX2l0ZXJhYmxlUHJvZmlsZSk7Cisg
ICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0
b3IpLmpzVmFsdWUoKTsKKyAgICBhdXRvJiBpdGVyYXRvciA9IEdFVChieXRlY29kZS5tX2l0ZXJh
dG9yKTsKKworICAgIGF1dG8gcHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7Cisg
ICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKworICAgICAgICAvLyBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0IGNo
ZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgdmFsaWQuCisgICAgICAgIEpTRnVuY3Rpb24q
IHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwg
c3ltYm9sSXRlcmF0b3IpOworICAgICAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsgCisKKyAgICAgICAgaWYg
KGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uKCkgIT0g
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljOworCisgICAgICAgIC8vIFdlIHNob3VsZCBiZSBnb29kIHRvIGdvLgorICAgICAg
ICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRl
cmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAg
ICAgICBHRVQoYnl0ZWNvZGUubV9uZXh0KSA9IEpTVmFsdWUoKTsKKyAgICAgICAgYXV0byogaXRl
cmF0ZWRPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihpdGVyYWJsZSk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9u
S2luZDo6VmFsdWVzKTsKKyAgICAgICAgfQorICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJh
dG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2ZpbGUpOworICAgICAgICByZXR1cm4gSXRlcmF0
aW9uTW9kZTo6RmFzdEFycmF5OworICAgIH07CisKKyAgICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8
SlNBcnJheT4odm0pKSB7CisgICAgICAgIGlmIChwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9u
KCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KQorICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5KSk7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4g
Z2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVz
ID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBl
IFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICBy
ZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFk
YXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVu
X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlf
ZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhS
ZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikK
K3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwg
cGMsIG1ldGFkYXRhUHRyKTsKK30KKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KK1Nsb3dQ
YXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sK
KyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJ
dGVyYXRvck5leHQsIHdpZHRoPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8T3BJdGVyYXRvck5leHQ6Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworCisgICAgQVNT
RVJUKCFHRVQoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCkpOworICAgIEpTT2JqZWN0KiBpdGVy
YXRvciA9IGpzQ2FzdDxKU09iamVjdCo+KEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVl
KCkpOzsKKyAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpz
VmFsdWUoKS5hc0NlbGwoKTsKKyAgICBpZiAoYXV0byBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWlj
Q2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7CisgICAgICAgIGlmIChhdXRv
IGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0ZXJhYmxlKSkgeworICAgICAg
ICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5
LT5zdHJ1Y3R1cmVJRCgpKTsKKworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRh
ZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8
IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9
IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5k
ZXgpOworICAgICAgICAgICAgaW50NjRfdCBpbmRleCA9IGluZGV4U2xvdC5nZXQoKS5hc0FueUlu
dCgpOworICAgICAgICAgICAgQVNTRVJUKDAgPD0gaW5kZXggJiYgaW5kZXggPD0gbWF4U2FmZUlu
dGVnZXIoKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgICAgICBib29s
IGRvbmUgPSBpbmRleCA+PSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBHRVQoYnl0ZWNv
ZGUubV9kb25lKSA9IGpzQm9vbGVhbihkb25lKTsKKyAgICAgICAgICAgIGlmICghZG9uZSkgewor
ICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Ug
a25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAgICAg
IEFTU0VSVChpbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGFycmF5LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmRleCkpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVl
LCBtX3ZhbHVlUHJvZmlsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEg
cHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKGpzTnVtYmVyKG1heFNhZmVJbnRlZ2VyKCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpG
YXN0QXJyYXkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJp
YyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0
YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5l
cmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1df
UEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4g
aXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRy
KTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2
b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxX
aWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5U
eXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAg
ICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1l
dGFkYXRhUHRyKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiB7
CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4ZGI1ZjU1OGZhNzg1MDRjYWIwOTY0M2M2
MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRjZDhiMmVlMGEzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0Niw2ICsy
NDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdF9vcl9udWxs
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRlcmF0b3JfbmV4
dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpAQCAtMjgzLDYgKzI4NSwxOCBAQCBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwogCit0ZW1wbGF0ZTxPcGNvZGVTaXpl
IHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVu
X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRh
dGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNp
emU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEp
OworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRf
dHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCog
bWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJh
dG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19Q
QVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1c2luZyBTbG93UGF0aEZ1bmN0aW9uID0g
U2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVj
dGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDM1MzU5MDkwNDkxY2UwYWZkY2Q4YmJiNGY4NzViYjM4
MThjMjJkM2UuLjY4NzRlYzc5MDM3NThjZjlkZjQ0MzlhNjIzOTA2MWNmMjcwNTg5M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMzMwLDYgKzMz
MCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRp
b25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCit7CisgICAgc3dpdGNoIChp
bnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgorICAgIGNhc2UgVHlw
ZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OlZh
bHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlL
ZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6S2V5czsKKyAgICBj
YXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50
cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6RW50cmllczsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KK30KKworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJkN2Q4YWMyMDU0MmU4YThkN2UxOGM0
MmJhZTkuLjcxYmEzYWFkMzU5Njk1NmFmYzJkMGFiZmM2ZmQxZGUxN2FmMWVkNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xODcsNiArMTg3LDggQEAg
ZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBEYXRhVmlld1NldEZsb2F0NjQsCiB9Owog
CitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJbnRy
aW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyk7CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThhOTY4N2VjNjA5
Li40ZmQwYTExNjUyNWNkYzUzMmE1M2QwYjhiNWFjYjUzMzg3YThkYmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjgsNiArNjgs
MTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0
KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKTsKKyAgICBz
dGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCisgICAgewor
ICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBqc051
bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsKKyAgICB9CiAgICAgc3RhdGljIEpT
QXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFlZC4uZDMwMmIx
ODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBi
b29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBib29sIGlzQ2FsbGFibGUoVk0mKSBjb25z
dDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlwZSYsIENhbGxEYXRhJikgY29uc3Q7
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVj
dG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDVi
M2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFkODBhZjcuLjYyZjlkMjRmMTVkMDcyNDVh
ZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODI3LDYgKzgyNywxMyBAQCBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29uc3QKICAgICByZXR1cm4gYXNDZWxs
KCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxl
KFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1bnVzZWRUeXBlOworICAgIENhbGxEYXRh
IHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFibGUodm0sIHVudXNlZFR5cGUsIHVudXNl
ZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSwgQ2Fs
bFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFp
c0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Fz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggZThiMjNj
ZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzExYi4uYjI1MDM1NjljODQyMjU2MDExNDFh
ODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0
LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8ganNDYXN0KEpTVmFsdWUgZnJvbSkKIC8v
IFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmluZSBGT1JfRUFDSF9KU19EWU5BTUlDX0NB
U1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAgIG1hY3JvKEpTSW1tdXRhYmxlQnV0dGVy
Zmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlwZSwgSlNUeXBlOjpKU0ltbXV0YWJs
ZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0FycmF5SXRlcmF0b3IsIEpTVHlwZTo6SlNB
cnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFj
cm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBl
OjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJzdE9iamVj
dFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwgSlNUeXBl
OjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8o
SlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlw
ZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlv
blR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5
LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBcCisgICAgbWFj
cm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpTVHlwZTo6
SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXIsIEpTVHlwZTo6
QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSkgXAogICAgIG1hY3JvKEpT
QXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlUeXBlLCBMYXN0VHlwZWRBcnJheVR5cGUp
IFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSwgSlNUeXBlOjpK
U1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYzZTNjOGZmNjIwOGY2MjVmNTcwMzY4
NzNmMC4uMTE3M2FhMDg4ZGNiNzZjMDRmZTRiNWZjMGIxYTQ5MzkzMzkxZTc4MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTU5
LDEwICs1NTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CiAgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNUb1N0cmlu
ZywgTm9JbnRyaW5zaWMpKTsKICAgICAgICAgfSk7Ci0gICAgbV9hcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24uaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlv
bj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmco
KSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7Ci0gICAgICAg
IH0pOworICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5n
KCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwogCiAgICAg
bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAgLTE3NDksNyArMTc0Niw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24udmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24udmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2
aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNp
dCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24udmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0
KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3NGIyMTc2NDcxYTlmMDUxMy4uMGFj
ZGZhZWQ5ZTlhZGZjMjM4YWI3YzIzNDJlMzU0OTMwYWE2OTIzOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTksNyArMjk5LDcgQEAg
cHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9w
YXJzZUZsb2F0RnVuY3Rpb247CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpT
RnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247Ci0gICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsK
KyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2V2YWxGdW5j
dGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRl
cmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwpAQCAtNjA4LDcgKzYwOCw3IEBA
IHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJv
ckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1RvU3RyaW5nRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldCh0
aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQorICAgIEpT
RnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJy
YXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQ
cm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rp
b24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5j
dGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CkBAIC02
MTksNiArNjE5LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIG51bWJlclByb3RvVG9TdHJp
bmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9u
LmdldEluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5j
dGlvbiogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9uKiBh
cnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBhcnJh
eVByb3RvVmFsdWVzRnVuY3Rpb24oKTsgfQogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1N5bWJv
bFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBs
YWNlLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2JhbEdldHRlcigp
IGNvbnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA5
OTY5NGQwMTI3YmFlMWNlYTVjZjYzZmE5Y2RkOTc3MDAwY2I3YWE0Li5mYjQwZmM5NTA3NmFjNTBh
MGEzOTRmNThjNTNlYjFjYmRiMDZmYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTExOSw2ICsxMTksOCBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNoYWRv
d0NoaWNrZW5Mb2dTaXplLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVk
LCBzaGFkb3dDaGlja2VuTWF4VGFpbERlbGV0ZWRGcmFtZXNTaXplLCAxMjgsIE5vcm1hbCwgbnVs
bHB0cikgXAogICAgIFwKKyAgICB2KEJvb2wsIHVzZUl0ZXJhdGlvbkludHJpbnNpY3MsIHRydWUs
IE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKICAgICB2KEJvb2wsIHVzZU9TTG9nLCBmYWxzZSwg
Tm9ybWFsLCAiTG9nIGRhdGFMb2coKXMgdG8gb3NfbG9nIGluc3RlYWQgb2Ygc3RkZXJyIikgXAog
ICAgIC8qIGR1bXBEaXNhc3NlbWJseSBpbXBsaWVzIGR1bXBERkdEaXNhc3NlbWJseS4gKi8gXAog
ICAgIHYoQm9vbCwgZHVtcERpc2Fzc2VtYmx5LCBmYWxzZSwgTm9ybWFsLCAiZHVtcHMgZGlzYXNz
ZW1ibHkgb2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24gY29tcGlsYXRpb24iKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA3NjRhZDA2NWFj
MDExZTMzYzMyMzhjZDlkYTk1MzljMTU4MzkyM2U1Li45YzJjZTdhZmFlNmUzOGU3YTYwODAyNmY1
MTc3MTEwZTNjODU1NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTEyNjgsNiArMTI2OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogdm9pZCBT
dHJ1Y3R1cmU6OmR1bXBCcmllZihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBDU3RyaW5nJiBzdHJp
bmcpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIlIiwgc3RyaW5nLCAiOiIsIGNsYXNzSW5mbygp
LT5jbGFzc05hbWUpOworICAgIGlmIChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNr
KQorICAgICAgICBvdXQucHJpbnQoIiwiLCBJbmRleGluZ1R5cGVEdW1wKGluZGV4aW5nVHlwZSgp
KSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wQ29udGV4dEhlYWRlcihQcmludFN0cmVhbSYg
b3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9h
ZHMuaCBiL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKaW5kZXgg
MzU3YmEyZmEyZjc5MjlhNmE5OThhOWE0ZWYxNGQyYmU1NzU0NjM3MS4uNTZhYmM0YjUzZWM5ZmFi
NjA3NWJmNmQyZWJiYmVkMWYzM2NkZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRW51
bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NP
cGVyYXRvck92ZXJsb2Fkcy5oCkBAIC01OSwzICs1OSw5IEBACiAKICNkZWZpbmUgT1ZFUkxPQURf
UkVMQVRJT05BTF9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFR1JBTFMoZW51bU5h
bWUpIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51
bU5hbWUsIHN0ZDo6aXNfaW50ZWdyYWxfdjxUPikKIAorI2RlZmluZSBPVkVSTE9BRF9CSVRXSVNF
X09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBlbmFibGVFeHByZXNzaW9u
KSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwg
fCwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9FTlVNX0NM
QVNTX1dIRU4oZW51bU5hbWUsICYsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVSTE9BRF9P
UEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBeLCBlbmFibGVFeHByZXNzaW9u
KSBcCisKKyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1Nf
V0lUSF9JTlRFUkdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1Jf
RU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkYzk4OWM1
NWI0MzRlZmY2ZmQzZWY0ZGEzYTUyM2M3ZmQ1NzNhYjIuLmI0OWJlNTQwOTQ0ZDI4YjhhN2FiOThl
YzBkMTc3MTBjYjc4ODY2NjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRv
IGl0ZXJhdGlvbiBmb3Iga25vd24gdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5
LWVudHJpZXMuanM6CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9jdXN0b20taXRl
cmF0b3JzLmpzOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoaXRlci5yZXR1cm4pOgorICAg
ICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3QpOgorICAgICAgICAoaXRlcmF0b3JJbnRl
cmZhY2VFcnJvclRlc3RSZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rl
c3RSZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Yt
b24tbWFwLmpzOgorICAgICAgICAoZmluZCk6CisgICAgICAgIChpLmxldC52Lm9mLmZpbmQpOgor
ICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzOgor
ICAgICAgICAoZmluZCk6CisgICAgICAgIChzZXQgYWRkKToKKyAgICAgICAgKiBzdHJlc3Mvb3Ny
LWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4
dC5yZXR1cm4uZ2V0IGRvbmUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRl
cmFibGUucmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdl
dHRlci5qczoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCB2YWx1ZSk6
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
LlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAg
ICAgICAqIHN0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanM6Cisg
ICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5
bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAg
ICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4t
Zm9yLW9mLWhlYWRlci5qczoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUuZ2V0IGRvbmUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3lt
Ym9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAg
IChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1o
ZWFkZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1
cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tdmFs
dWUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0
dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorCiAyMDIwLTA0LTE0ICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgYWxsIGxvdyBleGVjdXRhYmxlIG1lbW9y
eSB3YXNtIHRlc3RzIG9uIGFybTY0CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcwppbmRleCA1NWVjYzBiZmNmOTE5Y2Fj
YWU3ZmQxNWRkYjQwYjE0ZmRjYTk0ZWRhLi4yMDEyYjkxMjg1MGY1ODExNjdmYmQzMTA1MDU5Yjc2
ZDc2NjNiNmQ4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRl
cmF0ZS1hcnJheS1lbnRyaWVzLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1v
Zi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMKQEAgLTMsMTAgKzMsMTIgQEAgZnVuY3Rpb24gZm9v
KCkgewogICAgIHZhciBhcnJheSA9IFtdOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjUwMDA7
IGkrKykKICAgICAgICAgYXJyYXkucHVzaChpKTsKLSAgICAKKwogICAgIHZhciByZXN1bHQgPSAw
OwotICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpCisgICAgZm9y
ICh2YXIgW2tleSwgdmFsdWVdIG9mIGFycmF5LmVudHJpZXMoKSkgeworICAgICAgICBwcmludChr
ZXkgKyAiICIgKyAkdm0uaW5kZXhpbmdNb2RlKGFycmF5KSk7CiAgICAgICAgIHJlc3VsdCArPSBr
ZXkgKyB2YWx1ZSArIGFycmF5W2tleV07CisgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcwppbmRleCBmZDY0MTNmZTNiNWU5MDNhZmZl
MzgwM2ZkMDA0YzBjYjFmMWM2NGYzLi5kM2QxYmQ3ZTg1OGU4NzRmYmQxMTNkODJmOTIxMWVhNGJk
NWVmN2I1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKQEAgLTIyLDcgKzIyLDcgQEAg
Zm9yICh2YXIgdmFsdWUgb2YgaXRlcikgewogICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1
ZTogIiArIHZhbHVlOwogfQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJl
dHVybiBpcyBjYWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVk
Iik7CiAKIAogCkBAIC01Myw3ICs1Myw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewog
ICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJv
dyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMg
bm90IGNhbGxlZC4iOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNo
IChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBsb29raW5nIHVwIG5leHQuIikK
LSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAg
dGhyb3cgZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4g
aXMgY2FsbGVkLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwog
CiAKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAg
IGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1cCByZXR1cm4uIikKLSAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsK
IH0KIAogCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsK
ICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IG5leHQgaXMgY2FsbGVkLiIpCi0gICAgICAg
IHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7
CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxl
ZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAg
LTE4Myw3ICsxODMsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rp
b24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJy
b3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4g
d2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB0cnkgewogICAg
IH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0
ZSBpdGVyYXRpb24uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAi
ICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93
ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2YXIg
aXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1
cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQu
IjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0K
IH07CiB0cnkgewpAQCAtMjE4LDggKzIxOCw4IEBAIHRyeSB7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0gY2F0Y2ggKGUpIHsKLSAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiBp
cyBjYWxsZWQuIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsg
ZTsKKyAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiB3YXMgY2FsbGVkIikKKyAg
ICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjog
cmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTI1NSwxMCArMjU1LDEwIEBAIGZ1bmN0aW9uIGl0
ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0K
ICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6
IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKQotICAgICAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRo
cm93IGU7CiAgICAgfQogICAgIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgICAgIHRocm93ICJFcnJv
cjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3
YXMgY2FsbGVkIik7CiB9CiAKIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0
dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CkBAIC0yODIsNyArMjgyLDcgQEAgZnVuY3Rpb24gaXRl
cmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAg
ICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9y
OiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBl
cnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYg
KCFyZXR1cm5DYWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxs
ZWQuIjsKQEAgLTMxMyw3ICszMTMsNyBAQCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUJyZWFr
VGVzdFJldHVybihub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAgICAgfSBjYXRjaCAo
ZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0K
ICAgICBpZiAoIXJldHVybkNhbGxlZCkKICAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMg
bm90IGNhbGxlZC4iOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRh
aW5pbmctZm9yLW9mLW9uLW1hcC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWlu
aW5nLWZvci1vZi1vbi1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4YjdlZTgxNDI0YTJkMmY1MzhjZTdi
MjA1OWQ4ZDZlNDU4ZTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rp
b24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgW2FycmF5XSBvZiBub2Rlcykgewor
ICAgICAgICBpZiAoIWFycmF5LmZpbmQoKHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIHlpZWxkIGFycmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOwor
CitsZXQgbWFwID0gbmV3IE1hcCgpOworbm9JbmxpbmUobWFwW1N5bWJvbC5pdGVyYXRvcl0oKS5u
ZXh0KTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpCisgICAgbWFwLnNldChbMSwyLDQs
NSw1XSwge30pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChs
ZXQgdiBvZiBmaW5kKG1hcCwgaSAlIDIpKSB7IH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZjMy
NzM5MGQ3Mzc1YTIyMDJhZTU5YTExMjQ2NTY5OGNiNmVhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCkBAIC0w
LDAgKzEsMjMgQEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBwKQoreworICAgIGZvciAobGV0IGFy
cmF5IG9mIG5vZGVzKSB7CisgICAgICAgIGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQor
bm9JbmxpbmUoZmluZCk7CisKK2xldCBzZXQgPSBuZXcgU2V0KCk7Citub0lubGluZShzZXRbU3lt
Ym9sLml0ZXJhdG9yXSgpLm5leHQpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAg
ICBzZXQuYWRkKFsxLDIsNCw1LDVdLCB7fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyAr
K2kpIHsKKyAgICBmb3IgKGxldCB2IG9mIGZpbmQoc2V0LCBpICUgMikpIHsKKyAgICAgICAgaWYg
KGkgJSAyICE9PSAxKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJubyByZXN1bHQgc2hv
dWxkIGhhdmUgYmVlbiBwcm9kdWNlZCBoZXJlIik7CisgICAgICAgIGlmICghKHYgaW5zdGFuY2Vv
ZiBBcnJheSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJlc3VsdCB3YXMgbm90IGFu
IGFycmF5Iik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20t
Zm9yLW9mLWRvbmUtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRv
bmUtZ2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNGM0OWM5M2IyOWZjYjBmNzEwYzZjODJkMWZkODgw
MDFhMjJlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3It
b2YtZG9uZS1nZXR0ZXIuanMKQEAgLTAsMCArMSwyMyBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTU7ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFi
bGUgPSB7CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgICAgIGdldCBkb25lKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5hbFRpZXIo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlT1NSKCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisg
ICAgICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRy
eSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAg
fQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5q
cyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTcwOTZlZTAzZTE1MjU3M2FlZGM2NGQwNDM5ZmIyYmYyMmM2NDE1YgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMK
QEAgLTAsMCArMSwyMSBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxl
dCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIGRv
bmU6IDAsCisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgICAgIGRvbmU6IHRoaXMuZG9uZSsrLAorICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsg
aWYgKGlzRmluYWxUaWVyKCkpIEZvcmNlT1NSKCk7ICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0sCisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAg
ICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkg
eworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQorICAgIH0gY2F0Y2ggeworICAgIH0K
KyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9i
amVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9i
amVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmJkMzJhZGQ3Y2MzYmEzNDMyNTRkYTcxMDhlNTE5ZmY3NWIz
MjUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQt
cmV0dXJucy1ub24tb2JqZWN0LmpzCkBAIC0wLDAgKzEsMTYgQEAKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMWU1OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0
ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4gMTsgfSwKKyAgICAgICAgW1N5bWJv
bC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVy
bkNhbGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2Yg
aXRlcmFibGUpIHsgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT0gIlR5cGVF
cnJvcjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCisgICAg
ICAgICAgICB0aHJvdyBlOworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZy
b20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93
LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGExNDJj
OGE2YzU0ZjQ3NmVjMDM5YTE0ZTllMmQzZTdiOTZkZjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBA
IC0wLDAgKzEsMjQgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0
IGVycm9yOworICAgIGxldCByZXR1cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAg
ICAgICBuZXh0KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZ2V0IGRvbmUoKSB7CisgICAg
ICAgICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBb
U3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsK
KyAgICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAg
IHRyeSB7CisgICAgICAgIGZvciAoYSBvZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQor
ICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Ro
cm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ct
ZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IxOTRmZDdjYTVhYzU5
YWQ2OTYxOTQyZjg2MjdiNjBhNWFhMzAxOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjQgQEAK
K2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxl
dCByZXR1cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgewor
ICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4o
KSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsK
KyAgICBub0lubGluZShpdGVyYWJsZS5uZXh0KTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8g
b2YgaXRlcmFibGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJvcnIoKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7Cisg
ICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1p
bi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0
ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDg3ODgzNThlNGVkMzA2MTJhY2M2
ZjJlZjNhMzBkOGQ1NjY2NzlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhy
b3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI3IEBA
Citmb3IgKGxldCBpID0gMDsgaSA8PSAxZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBs
ZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBu
ZXh0KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZG9uZTogZmFsc2UsCisgICAgICAgIGdl
dCB2YWx1ZSgpIHsKKyAgICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAg
ICAgIH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAg
ICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKSB7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAg
ICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAg
ICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396534</attachid>
            <date>2020-04-15 07:56:37 -0700</date>
            <delta_ts>2020-04-15 11:41:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-175454-20200415075636.patch</filename>
            <type>text/plain</type>
            <size>281665</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4zOTZmM2MxMTAwNjMzZTlh
MTlhOGY2NDNiMzY4ZmQwYjNhOTliZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MzMgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGl0ZXJhdGlvbiBmb3Iga25vd24g
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBidWlsdGlu
cy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJh
eUl0ZXJhdG9yTmV4dEhlbHBlcik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZUlEKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2
YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRp
b25Gb3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmls
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hlY2twb2ludHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25XaWR0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmguCisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
IChKU0M6OmlzU3VidHlwZVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25D
b250YWlucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgIChK
U0M6OlN1cGVyU2FtcGxlclNjb3BlOjpyZWxlYXNlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
T3Blbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y05leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2Vu
ZXJpY05leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6Zm9yQWxsVmFsdWVzKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6Om51bWJlck9mVG1wcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6dG1wKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpqc0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6d2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICog
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNG
R1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5o
OgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om51bWJl
ck9mVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpvcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnZhcmlhYmxlQXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6Okxh
enlKU1ZhbHVlOjpzcGVjdWxhdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
bGlkYXRlLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Y2xvb3BTdGFjayk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjaGVja2VkUmV0dXJu
KToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q2FsbFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrcG9pbnRSZWFj
aGVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZv
cm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNs
b3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X2R1bXBfdmFsdWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpvcjgpOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JOZXh0SGVscGVyKToKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2Vy
dmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
Ojp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
UHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6
CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFycmF5
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAgICAg
ICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVG
b3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNhbGxl
ZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAg
ICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAoSlND
OjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2Fs
bFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRC
eVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCYXNl
SW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9u
OjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6
YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWRl
MTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6
CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAgICAg
KiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVh
c2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9z
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAg
ICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXRU
YWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWls
QWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpB
dFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxB
YnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3
ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1hdGNo
aW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxv
Y2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFy
aWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2VlcE9w
ZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6
amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yQWxs
S2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxp
emUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Js
b2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgor
ICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlKU1Zh
bHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNv
bnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdlbmVy
YXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAq
IGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjbG9vcFN0YWNrKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpjYWxsZWVGcmFt
ZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRl
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgIChKU0M6
OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAg
KEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6
OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNp
Yy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
anM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JOZXh0SGVscGVyKToKKyAg
ICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9i
c2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1w
bCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAg
ICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2Zp
bGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNh
bGxlZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToK
KyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAo
SlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9H
ZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxM
SW50KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpC
YXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0
aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlv
bjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3
aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAg
ICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6
CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRl
Y29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJl
bGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JD
bG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAg
ICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRU
YWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRh
aWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
Ojp3ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFk
ZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1h
dGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjph
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
bGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
VmFyaWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFy
Z3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
b25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2Vl
cE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25Q
aGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9y
QWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFz
aWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNp
Y0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2Up
OgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6
OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlK
U1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBl
IGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdl
bmVyYXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAg
ICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjbG9vcFN0YWNrKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpjYWxsZWVG
cmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9p
dGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y2hlY2twb2lu
dFJlYWNoZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6
cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6c2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQpOgorICAgICAgICAoSlNDOjpMTEludDo6
bGxpbnRfZHVtcF92YWx1ZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVh
c20vdHJhbnNmb3JtLnJiOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUzMik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4
dF90cnlfZmFzdF93aWRlMzIpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjppbnRlcmF0
aW9uS2luZEZvckludHJpbnNpYyk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlND
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJsZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAyMDIwLTA0LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogYWRkIGEg
U3RlcCBuZXh0IHRoYXQgc3RlcHMgYnkgZXhwcmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlMDM5NGI3YmU1YjViYjAx
OGI0ZWZiY2M5ODVmNWI3OGRhMjI2ODZkLi5hYWEwMDFkYTg1MjY5YjY0MjYxMWE2YzQzZGQ2OTRj
ZTA1YWY0MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE1ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBp
dGVyYXRpb24gZm9yIGtub3duIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oOgorCiAy
MDIwLTA0LTE0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRv
cHQgaW50ZXJmYWNlIEFWQXVkaW9Sb3V0aW5nQXJiaXRlciBmb3IgTWFjCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25m
aWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUu
eGNjb25maWcKaW5kZXggNTJiNDZlY2M5ZTI4OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4u
NWE5YTBiNDQ0MTEwNzIzZDczOWEzMjUwMjg1ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZwpAQCAtNDAsOCArNDAsOCBAQCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltz
ZGs9bWFjb3N4Kl0gPSAtV2wsLW9yZGVyX2ZpbGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdD
Q19QUkVGSVhfSEVBREVSID0gSmF2YVNjcmlwdENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BS
SVZBVEVfRVhURVJOID0gWUVTOwotT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVt
LWhlYWRlci1wcmVmaXg9dW5pY29kZS87Ci1PVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJp
dGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChp
bmhlcml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNv
ZGUvOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9y
aXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhT
ID0gIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIg
JChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElO
U1RBTExfUEFUSCA9ICQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUwMTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4
MWNjMjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIy
MUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyog
SlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsKIAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8q
IFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmgg
Ki87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNE
ODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5
NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVBy
b2ZpbGVGb3IuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4
NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFE
REJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3
NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3
Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYs
OSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlE
IC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgx
RUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUz
RDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVz
ZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVz
ZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAw
MEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7
IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNENDQ0REQxREFGMDlBMDAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUu
Y3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUw
RTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJ
CQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgg
Ki8sCiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpc0lubGluZXMuaCAqLywKKwkJCQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNv
ZGVQcm9maWxlRm9yLmggKi8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVj
b2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZv
LmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8s
CkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJ
bnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8q
IEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjND
MDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5
MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIy
RUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3
IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdG
MSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVj
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5
dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJ
MEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0u
aCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRp
b25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyog
SXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcx
NkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDEx
M0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2Jm
NWJhNWViZWYwZWM4Li4xNTM5N2U4YjdmNDhhODRmYjI3ZjExZDJmMTM3MWUwZTJhMzAxY2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaApAQCAtNjg2LDYgKzY4NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3Rl
ZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dp
Y2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0u
bV92YWx1ZSk7CisgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAg
ICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9naWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9
CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBvcjY0KGRlc3QsIHNyYywgZGVzdCk7CkBAIC0xNjAzLDcgKzE2MTcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2Us
IG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJ
RCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNv
bnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CkBAIC0x
NjE4LDcgKzE2MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9y
ZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVz
dGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3Rl
ZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBp
ZiAoIWltbTgubV92YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDhjNjk3OWJiOWIyZmRlYjA0Y2Ew
MjZlNzY2ZDIwOGI3M2EwNjNmMmUuLjJhMWRkZWRlZTM2ZGJlM2NkZTU3MmY0ODYwNWE0NjRjODBi
NmU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6b3IxNjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4OwogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmxvYWQzMjsKQEAgLTk2LDYgKzk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgb3IxNihpbW0sIEFk
ZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVk
SW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAg
ICBvcjgoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9p
ZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
CmluZGV4IGZiMzQ4YjkyZGQyNjIzYzA2NTFlZmQyZTRhOGMwZThkZTIzN2IyMDEuLjk0MjY1N2M2
MmYwNzQ5Y2EwNWM0ZWVlNGQ2N2I5NWZlNjQ1NWQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTIwNywxMCArMjA3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0T3V0T2ZCb3VuZHMoKSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAg
ICAgYm9vbCogYWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsg
fQogICAgIAotICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
LSAgICB7Ci0gICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsK
LSAgICB9CisgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0dXJl
SUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7IH0KKyAgICB2b2lkIG9i
c2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVjdHVy
ZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDFmNTY2OTRjZTcwMGZkZWJlMWZk
Y2JkMDQ0ZjJhODdkMDg4ZjdlYTIuLjU4NWNjNThjMzdlODgzODY5YTRlOGNhYmM2MGZiZDdlNGI1
NjJhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgpAQCAtMzQsNiArMzQsNyBAQCB0eXBlcyBbCiAgICAgOkdldEJ5VmFsSGlzdG9yeSwKICAg
ICA6R2V0UHV0SW5mbywKICAgICA6SW5kZXhpbmdUeXBlLAorICAgIDpJdGVyYXRpb25Nb2RlTWV0
YWRhdGEsCiAgICAgOkpTQ2VsbCwKICAgICA6SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsCiAg
ICAgOkpTR2xvYmFsT2JqZWN0LApAQCAtMTE2Miw2ICsxMTYzLDY0IEBAIG9wIDpnZXRfcmVzdF9s
ZW5ndGgsCiAgICAgICAgIG51bVBhcmFtZXRlcnNUb1NraXA6IHVuc2lnbmVkLAogICAgIH0KIAor
IyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgaXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJs
ZSk7IG5leHRPckluZGV4ID0gaXRlcmF0b3IubmV4dDsKKyMgRm9yIGJ1aWx0aW4gaXRlcmF0b3Jz
LCBob3dldmVyLCB0aGlzIGhhcyBzcGVjaWFsIGJlaGF2aW9yIHdoZXJlIGl0ZXJhdG9yIGJlY29t
ZXMgdGhlIGVtcHR5IHZhbHVlCisjIGFuZCBuZXh0T3JJbmRleCBpcyB0aGUgImluZGV4IiBvZiB0
aGUgaXRlcmF0b3IgKGludCBmb3IgYXJyYXlzL3N0cmluZ3MgYW5kIGJ1Y2tldCBmb3IgbWFwL3Nl
dCkuCitvcCA6aXRlcmF0b3Jfb3BlbiwKKyAgICBhcmdzOiB7CisgICAgICAgIGl0ZXJhdG9yOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
c3ltYm9sSXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAg
bWV0YWRhdGE6IHsKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRh
ZGF0YSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGNh
bGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
CisgICAgICAgIG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgfSwKKyAgICB0bXBzOiB7
CisgICAgICAgIGl0ZXJhdG9yT2JqZWN0OiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2lu
dHM6IHsKKyAgICAgICAgc3ltYm9sQ2FsbDogbmlsLAorICAgICAgICBnZXROZXh0OiBuaWwsCisg
ICAgfQorCisjIFNlbWFudGljYWxseSwgdGhpcyBpcyB0bXAgPSBuZXh0T3JJbmRleC5jYWxsKGl0
ZXJhdG9yKTsgZG9uZSA9IHRtcC5kb25lOyB2YWx1ZSA9IGRvbmUgPyB1bmRlZmluZWQgOiB0bXAu
dmFsdWU7CitvcCA6aXRlcmF0b3JfbmV4dCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRvbmU6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
aXRlcmFibGU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNl
dDogdW5zaWduZWQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25N
ZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6
IEFycmF5UHJvZmlsZSwKKyAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywK
KyAgICAgICAgbmV4dFJlc3VsdFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgZG9uZU1v
ZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgZG9uZVByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwKKyAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRh
dGEsCisgICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgdG1w
czogeworICAgICAgICBuZXh0UmVzdWx0OiBKU1ZhbHVlLAorICAgICAgICBpc0RvbmU6IEpTVmFs
dWUsCisgICAgICAgIHZhbHVlOiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsK
KyAgICAgICAgY29tcHV0ZU5leHQ6IG5pbCwKKyAgICAgICAgZ2V0RG9uZTogbmlsLAorICAgICAg
ICBnZXRWYWx1ZTogbmlsLAorICAgIH0KKwogb3AgOnlpZWxkLAogICAgIGFyZ3M6IHsKICAgICAg
ICAgZ2VuZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xMjkwLDYgKzEzNDksOCBAQCBvcCA6
b3BfZ2V0X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xv
Y2F0aW9uCiBvcCA6b3BfcHV0X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92
YWxfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24K
K29wIDpvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25f
cHJvbG9ndWUKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCmluZGV4IGM2ZWZlMGQ4ZmY2Yzc5ODk2YWZkMDBlMjBjYzQyNzc5ZDNhNGIwYzcu
LmQ1ODdlZTAzZjI2ZDhkZmI5NGQwOGQ0NDIwNDA4Y2FjNTBhMzhlZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCkBAIC0yMzEsNiArMjMxLDEzIEBAIEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1w
cz4gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrCiAg
ICAgICAgICAgICByZXN1bHQuc2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhp
cyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jf
b3BlbjogeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX25leHQ6IHsKKyAgICAgICAgcmVzdWx0LnNldChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3Vs
dCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVByb2ZpbGVGb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVByb2ZpbGVGb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDE0YWJkOTA1OWE4YmEzN2IyYTNiZWZm
ZDc1NTBjNDljZjZmYjVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBcnJheVByb2ZpbGUuaCIKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIFRPRE86IE1h
a2UgdGhpcyBvcHRpb25hbC4gRmlndXJlIG91dCBoYXNNZW1iZXIuCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGVGb3JJbXBsKEJ5
dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgcmV0dXJuICZtZXRhZGF0YS5t
X2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZTsKKworICAgIC8vIEluc2VydCBwZXIgbWV0YWRh
dGEgb3ZlcnJpZGVzIGhlcmUgd2hlbiB3ZSBuZWVkIHRoZW0uCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc0FycmF5
UHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2lu
dEluZGV4KQoreworICAgIHJldHVybiBhcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVj
a3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgor
QXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEs
IHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBBU1NFUlQoaGFzQXJyYXlQcm9maWxl
Rm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKKyAgICByZXR1cm4gKmFycmF5UHJvZmls
ZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKKy8vIFRPRE86IE1ha2Ug
dGhpcyBvcHRpb25hbC4gRmlndXJlIG91dCBoYXNNZW1iZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
eXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JJbXBsKEJ5dGVj
b2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAg
VU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29k
ZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIHN3aXRj
aCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJv
bENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsK
KyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQorCisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQg
PT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkg
eworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRh
ZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpn
ZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJ
dGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOwor
ICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisgICAgfSBlbHNlIAorICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK2Jvb2wgaGFzVmFsdWVQcm9maWxl
Rm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgp
Cit7CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJ
bmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1ZVBy
b2ZpbGUmIHZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWdu
ZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChoYXNWYWx1ZVByb2ZpbGVGb3IobWV0
YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJldHVybiAqdmFsdWVQcm9maWxlRm9ySW1w
bChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0
ZWNvZGU+CitPcGVyYW5kIGRlc3RpbmF0aW9uRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwg
dW5zaWduZWQgY2hlY2twb2ludEluZGV4LCBKSVRUeXBlIHR5cGUgPSBKSVRUeXBlOjpOb25lKQor
eworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAo
Qnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgc3dpdGNo
IChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9s
Q2FsbDogcmV0dXJuIGJ5dGVjb2RlLm1faXRlcmF0b3I7CisgICAgICAgIGNhc2UgT3BJdGVyYXRv
ck9wZW46OmdldE5leHQ6IHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgICAgIGRlZmF1bHQ6
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3Bf
aXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAg
ICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogeworICAgICAgICAgICAgaWYg
KHR5cGUgPT0gSklUVHlwZTo6REZHSklUIHx8IHR5cGUgPT0gSklUVHlwZTo6REZHSklUKQorICAg
ICAgICAgICAgICAgIHJldHVybiBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1
bHQpOworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fdmFsdWU7IC8vIFdlIHJldXNlIHZh
bHVlIGFzIGEgdGVtcCBiZWNhdXNlIGl0cyBlaXRoZXIgbm90IHVzZWQgb3Igd3JpdHRlbiBhcyB0
aGUgdGVtcCBvYmplY3QgZGllcy4KKyAgICAgICAgfQorICAgICAgICBjYXNlIE9wSXRlcmF0b3JO
ZXh0OjpnZXREb25lOiByZXR1cm4gYnl0ZWNvZGUubV9kb25lOworICAgICAgICBjYXNlIE9wSXRl
cmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuIGJ5dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIGRl
ZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fZHN0Owor
fQorCisvLyBDYWxsLWxpa2Ugb3Bjb2RlIGxvY2F0aW9ucworCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
eXRlY29kZT4KK1ZpcnR1YWxSZWdpc3RlciBjYWxsZWVGb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVj
b2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNr
cG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3Bf
aXRlcmF0b3Jfb3BlbikgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRl
cmF0b3JPcGVuOjpzeW1ib2xDYWxsKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fc3ltYm9s
SXRlcmF0b3I7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09
IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBP
cEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9u
ZXh0OworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9jYWxsZWU7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgordW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXNGb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50
SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29u
c3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAg
ICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsKTsK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9w
Y29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJ
bmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAgICByZXR1cm4gMTsK
KyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fYXJnYzsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitwdHJkaWZmX3Qgc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0Zv
ckNhbGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHBy
IChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBBU1NF
UlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsKTsKKyAgICAg
ICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gYnl0ZWNvZGUubV9p
dGVyYWJsZS5vZmZzZXQoKTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bj
b2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludElu
ZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7CisgICAgICAgIHJldHVybiBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIGJ5dGVjb2RlLm1faXRlcmF0b3Iub2Zmc2V0
KCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2FyZ3Y7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitMTEludENhbGxMaW5rSW5mbyYgY2Fs
bExpbmtJbmZvRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3Bv
aW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgcmV0
dXJuIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmlu
ZGV4IDY3ZjJjZWMwYTgwZjBiODJmZmQyY2YwZjY5N2Y3MGUwZDU2MjZjMTMuLmE1YTUwN2VkMmU5
MmRjZWUzZmMxNTFiZGViMmE2MjcyNzNjMjI3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjU5LDYgKzI1OSw5IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVS
ZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAKICAgICBVU0VTKE9wWWllbGQsIGdlbmVyYXRvciwgYXJn
dW1lbnQpCiAKKyAgICBVU0VTKE9wSXRlcmF0b3JPcGVuLCBzeW1ib2xJdGVyYXRvciwgaXRlcmFi
bGUpCisgICAgVVNFUyhPcEl0ZXJhdG9yTmV4dCwgaXRlcmF0b3IsIG5leHQsIGl0ZXJhYmxlKQor
CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQ6CiAgICAgICAgIGhhbmRsZU5ld0Fy
cmF5TGlrZShpbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheVdpdGhTcHJlYWQ+KCkpOwogICAgICAg
ICByZXR1cm47CkBAIC00ODYsNiArNDg5LDkgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKIAog
ICAgIERFRlMoT3BDYXRjaCwgZXhjZXB0aW9uLCB0aHJvd25WYWx1ZSkKIAorICAgIERFRlMoT3BJ
dGVyYXRvck9wZW4sIGl0ZXJhdG9yLCBuZXh0KQorICAgIERFRlMoT3BJdGVyYXRvck5leHQsIGRv
bmUsIHZhbHVlKQorCiAgICAgY2FzZSBvcF9lbnRlcjogewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBudW1WYXJzOyBpLS07KQogICAgICAgICAgICAgZnVuY3Rvcih2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwCmluZGV4IGQyOWY2MGU5NDI4MjI1OTE5NDc3Njg1NTdlYTg3YTY1N2YyM2E2MGIu
LjkxNWNjNjMxZGJkMjg0NWVlOTEzOGUxMzllYjY5ZTk2MzQxNzUxMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC00MCwxOCArNDAs
MzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgQ2FsbExpbmtJ
bmZvOjpjYWxsVHlwZUZvcihPcGNvZGVJRCBvcGNvZGVJRCkKIHsKLSAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCisgICAgc3dpdGNoIChvcGNv
ZGVJRCkgeworICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CisgICAgY2FzZSBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CisgICAgICAgIHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7
ICAgICAgICAKKworICAgIGNhc2Ugb3BfY2FsbDoKKyAgICBjYXNlIG9wX2NhbGxfZXZhbDoKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgogICAg
ICAgICByZXR1cm4gQ2FsbDsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzKQor
CisgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBDYWxsVmFyYXJnczsK
LSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0KQorCisgICAgY2FzZSBvcF9jb25zdHJ1
Y3Q6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3Q7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2Nv
bnN0cnVjdF92YXJhcmdzKQorCisgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoKICAgICAg
ICAgcmV0dXJuIENvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbCkKKworICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICByZXR1cm4gVGFpbENhbGw7
Ci0gICAgQVNTRVJUKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk7Ci0gICAgcmV0dXJuIFRhaWxDYWxs
VmFyYXJnczsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDYWxsOwogfQogCiBDYWxsTGlu
a0luZm86OkNhbGxMaW5rSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCBmMTNkMTczNGEwMmM1OGEzMjE3NTkyNWQyODg1
NWEyYTI2MDAxODE4Li5iOTBmODI0NmZjNjExMTM3OGFlYmVmOTAyNTZmMTE1ZWYxN2UzYjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHAKQEAgLTgxLDYgKzgxLDEzIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCCiAgICAgY2FzZSBv
cF90YWlsX2NhbGw6CiAgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BU
YWlsQ2FsbD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAgICBjYWxsTGlua0lu
Zm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHByb2ZpbGVk
QmxvY2spLm1fY2FsbExpbmtJbmZvOworICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX25leHQ6CisgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CisgICAg
ICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCAwNTNiMWI0NDkyMGI2YTg3ODE1N2U2MTYwYjY1M2U3YTRlNzMwNGIyLi5hNGE3YzVh
YWJmMDU2YjM4MzE0NDg0MThmOTFkYTg4NTRmN2JhN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IkJ5dGVjb2RlRHVtcGVyLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2Zp
bGVGb3IuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJCeXRlY29k
ZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC05Nyw2ICs5OCw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KIAorCiAjaWYgRU5BQkxFKEFTU0VNQkxF
UikKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2VuZGlmCkBAIC01ODMsNiAr
NTg1LDIwIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJTksoT3BDYXRjaCkK
ICAgICAgICAgTElOSyhPcFByb2ZpbGVDb250cm9sRmxvdykKIAorICAgICAgICBjYXNlIG9wX2l0
ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BJdGVyYXRv
ck9wZW4pCisKKyAgICAgICAgICAgIG1fbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMg
Kz0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9p
dGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wSXRlcmF0
b3JOZXh0KQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
cmVzb2x2ZV9zY29wZTogewogICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcFJlc29s
dmVTY29wZSkKIApAQCAtMTIyNCw2ICsxMjQwLDMzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0MTgKICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGQg
b3B0aW1pemF0aW9ucyBmb3Igb3BfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNs
X2luX2V2YWwgdG8gZG8gbGluayB0aW1lIHNjb3BlIHJlc29sdXRpb24uCiAKKyAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewor
ICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1v
ZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgU3RydWN0
dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVh
cC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVy
Ym9zZU9TUigpKQorICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBpdGVyYXRvciBv
cGVuIExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOworICAgICAgICAgICAgTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hl
KG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgfSk7CisKKworICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Cisg
ICAgICAgICAgICBhdXRvIGNsZWFySWZOZWVkZWQgPSBbJl0gKEdldEJ5SWRNb2RlTWV0YWRhdGEm
IG1vZGVNZXRhZGF0YSkgeworICAgICAgICAgICAgICAgIGlmIChtb2RlTWV0YWRhdGEubW9kZSAh
PSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbW9kZU1ldGFkYXRhLmRl
ZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIGl0ZXJhdG9y
IG5leHQgTExJbnQgcHJvcGVydHkgYWNjZXNzLlxuIik7CisgICAgICAgICAgICAgICAgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKG1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBjbGVh
cklmTmVlZGVkKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICBjbGVh
cklmTmVlZGVkKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAgICB9KTsKKwog
ICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0
QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIzMSw3ICsx
Mjc0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwg
IkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRD
YWNoZShtZXRhZGF0YSk7CisgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9w
R2V0QnlJZERpcmVjdD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewpAQCAtMTMyNiw5ICsxMzY5LDI3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAg
YXV0byBjbGVhciA9IFsmXSAoKSB7CiAgICAgICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbiA9IGlu
c3RydWN0aW9ucygpLmF0KHN0ZDo6Z2V0PDE+KHBhaXIua2V5KSk7CiAgICAgICAgICAgICBPcGNv
ZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKLSAgICAgICAgICAgIGlmIChv
cGNvZGUgPT0gb3BfZ2V0X2J5X2lkKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewor
ICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nl
c3MuIik7Ci0gICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWQ+KCkubWV0YWRhdGEodGhpcykpOworICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShp
bnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRh
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG9wZW4gcHJvcGVydHkg
YWNjZXNzLiIpOworICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8
T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEodGhpcykubV9tb2RlTWV0YWRhdGEpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBvcF9pdGVy
YXRvcl9uZXh0OiB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgaXRlcmF0b3IgbmV4dCBwcm9wZXJ0eSBhY2Nlc3MuIik7
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHJlYWxseSB3YW50IHRvIGNsZWFy
IGJvdGggY2FjaGVzIGhlcmUgYnV0IGl0J3Mga2luZGEgYW5ub3lpbmcgdG8gZmlndXJlIG91dCB3
aGljaCBvbmUgdGhpcyBpcyByZWZlcnJpbmcgdG8uLi4KKyAgICAgICAgICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YSh0aGlz
KTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9kb25lTW9kZU1ldGFk
YXRhKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV92YWx1ZU1vZGVN
ZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC0zMDQxLDYgKzMxMDIsMTEgQEAg
VmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoQnl0ZWNvZGVJbmRleCBieXRlY28KIAogI3VuZGVmIENBU0UKIAorICAgIGNhc2Ugb3BfaXRl
cmF0b3Jfb3BlbjoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKSk7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgorICAgICAgICByZXR1cm4gJnZh
bHVlUHJvZmlsZUZvcihpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEo
dGhpcyksIGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKKwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9ja0lubGluZXMuaAppbmRleCAyMmU3NmIxODVlYjllYmE5N2RlOWJiMDgxZDY0
MTg2YmY1NGNlNGFhLi41MzYyMjg5MDdlODRjNDkzM2NkMjkzZGYzNTAxN2JmNzlkZTc0ZjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVz
LmgKQEAgLTM5LDEyICszOSwyNCBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmls
ZShjb25zdCBGdW5jdG9yJiBmdW5jKQogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNkZWZpbmUg
VklTSVQoX19vcCkgXAotICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKKyAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0
YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9X
SVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCiAKICN1bmRlZiBWSVNJVAotICAgIH0KKworICAgICAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JPcGVuPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7IAorICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgZmFsc2Up
OworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSwgZmFsc2UpOwor
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
IH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0
UHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxl
LCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxz
ZSk7CisgICAgICAgIH0pOworICAgIH0gICAKIAogfQogCkBAIC02OCw2ICs4MCwxMCBAQCB2b2lk
IENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogCiAj
dW5kZWYgVklTSVQxCiAjdW5kZWYgVklTSVQyCisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgZnVu
YyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKaW5kZXgg
OTNmMjI3MGFjYTY1MmJmMTljMmM5NTU5MWVkYWU1MTY3N2EyODhjMi4uMjgyY2Y4ZjQyN2MxZmJl
YWIyOTZhMzU4M2IwNzk5NDFkYTEwZWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC04Niw2ICs4NiwzNSBAQCBHZXRCeVN0YXR1cyBH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5
dGVjb2RlSW5kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKICAgICAgICAgcmV0dXJuIEdldEJ5
U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Bl
bjogeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgPT0gT3BJdGVy
YXRvck9wZW46OmdldE5leHQpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKKworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBqdXN0IGJhaWwgaWYgd2Ugc2VlIGEgZ2V0X2J5X2lk
X3Byb3RvX2xvYWQuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgwMzkKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
IT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICBpZGVudGlmaWVy
ID0gJnZtLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKKyAg
ICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JOZXh0Ojpn
ZXREb25lKSB7CisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhLm1v
ZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5
U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZUlEID0g
bWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5kb25lOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEubW9k
ZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aAppbmRleCAwODVhZThkMTk5NzZiODg2ZjAwMTlmODVmYTY3YjAyYmUxNGNkYTVlLi4zZDcwY2Q1
NDNlY2ZhZTkwMjI1MDI5NjAxYTBkNDA1ZWM2NzFiMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMzIsNyArMzIsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IDo6
SlNDOjpPcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0
ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9C
WVRFQ09ERV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlE
IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5V
TUJFUl9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJl
ck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFk
YXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9IG9wX3dpZGUxNjsK
ICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IG9wX3dpZGUzMjsKICAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9w
Y29kZUxlbmd0aHM7CkBAIC00MSw3ICs0Myw5IEBAIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAK
IHN0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IFdhc21PcGNv
ZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0
aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhf
Q0hFQ0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRl
Y29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX1dBU01f
V0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhD
aGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSB3YXNtX3dpZGUxNjsKICAgICBzdGF0aWMgY29u
c3RleHByIE9wY29kZUlEIHdpZGUzMiA9IHdhc21fd2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSB3YXNtT3Bjb2RlTGVuZ3RoczsKQEAg
LTk4LDEyICsxMDIsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFycm93KCktPnRlbXBs
YXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKICAgICB9CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBPcGNvZGVTaXpl
IHdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1dpZGUzMjxUcmFpdHM+KCkpCisg
ICAgICAgICAgICByZXR1cm4gT3Bjb2RlU2l6ZTo6V2lkZTMyOworICAgICAgICByZXR1cm4gaXNX
aWRlMTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93
OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRz
PgogICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9w
Y29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7
CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+
CisgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
b3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3Bv
aW50czsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7CkBAIC0xMzcsNiAr
MTU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y2xhc3Mg
VCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+Cisg
ICAgVCBhc0tub3duV2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKChpczxULCBU
cmFpdHM+KCkpKTsKKyAgICAgICAgcmV0dXJuIFQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB0eXBl
bmFtZSBUeXBlQnlTaXplPHdpZHRoPjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBP
cGNvZGVTaXplOjpOYXJyb3cgPyAxIDogMikpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxjbGFz
cyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBUKiBjYXN0KCkKICAg
ICB7CkBAIC0xNjEsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHsKIAogICAgICAgICBBU1NFUlQo
aXNXaWRlMTY8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhp
cykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNv
ZGVTaXplOjpXaWRlMTY+Kj4odGhpcyArIDEpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgpAQCAtMTY5LDE0ICsxOTQsMTYgQEAgcHVibGlj
OgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNXaWRlMzI8VHJhaXRzPigpKTsKLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4o
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4odGhpcyArIDEpOwog
ICAgIH0KIH07CiAKIHN0cnVjdCBJbnN0cnVjdGlvbiA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248
T3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnN0cnVjdGlvbikgPT0gMSwg
IlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogc3RydWN0IFdh
c21JbnN0YW5jZSA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZUlEPiB7CiB9Owor
c3RhdGljX2Fzc2VydChzaXplb2YoV2FzbUluc3RhbmNlKSA9PSAxLCAiU28gcG9pbnRlciBtYXRo
IGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRh
dGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRh
dGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MmQ2OTE5MzFjNmM3OTQ4ZTU1N2U0ZjU2OTIzYWUzNDkwZmViOWU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJh
dGlvbk1vZGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7
CisKK2VudW0gY2xhc3MgSXRlcmF0aW9uTW9kZSA6IHVpbnQ4X3QgeworICAgIEdlbmVyaWMgPSAx
IDw8IDAsCisgICAgRmFzdEFycmF5ID0gMSA8PCAxLAorfTsKKworY29uc3RleHByIHVpbnQ4X3Qg
bnVtYmVyT2ZJdGVyYXRpb25Nb2RlcyA9IDI7CisKK09WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JT
X0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhJdGVyYXRpb25Nb2RlKTsKKworc3RydWN0
IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSB7CisgICAgdWludDhfdCBzZWVuTW9kZXMgeyAwIH07Cisg
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc2Vlbk1vZGVzKSkgPT0gc2l6ZW9mKEl0
ZXJhdGlvbk1vZGUpKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCAyZDE0
M2I5Y2Y2NzQzMDVkNDBjOTFlYjBhZTM1MTMzMTI1Njk0NDFmLi5iYmUxZjY3ZmZiZWZlOGU4YmIx
MzY3ZWI2YzdlZDY3Y2JhYThhYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNjAsMTQgKzYwLDMxIEBAIHZvaWQg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJu
YWwoVk0mIHZtLCBjb25zdCBGCiAgICAgfQogCiAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBtX293
bmVyLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlT2Zmc2V0LmdldCgpKTsKLSAgICBjbGVh
ckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEo
bV9vd25lci5nZXQoKSkpOworICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsK
KyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShp
bnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9k
ZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46
CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYg
bWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEobV9v
d25lci5nZXQoKSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9k
b25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0
YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogfQogCi12b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBt
ZXRhZGF0YSkKK3ZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRh
KQogewotICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFsdWUuCi0gICAgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7Cisg
ICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CiB9CiAKLQogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmgKaW5kZXggMjIwZmZmM2UzYmY1NDM0MWU5NjFjODJkZjhjNGU4Yzkw
MDA3MzRiZS4uMWQ1OTU3ZWZmODEwOTJhMWRhYmRlZTUwMjVjYWM1ZTZmMzg2NzgyYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAotICAg
IHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYp
OworICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0QnlJZE1vZGVNZXRh
ZGF0YSYpOwogCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0
IHsgcmV0dXJuIG1fa2V5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUu
aAppbmRleCAxODUxYjYzYzdjYTZhZWYyZmIzNmJmMmY4N2U5MmExOWUwZDQwYzE4Li5hYTg4NTlh
ZGQ2Mjg2MGZmZGFkYjRkMjIyODdjMzRiMDdjZTViMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3Rl
eHByKG0KICAgICBtYWNybyhPcFRhaWxDYWxsKSBcCiAgICAgbWFjcm8oT3BDYWxsRXZhbCkgXAog
ICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck9wZW4pIFwKKyAg
ICBtYWNybyhPcEl0ZXJhdG9yTmV4dCkgXAorCiAKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlw
ZS1saW1pdHMiKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkNzZkNGZhN2I0NmU5OGI5Zjk3MDBkYzM4NjMwZjQu
Ljk0NjU4YjA5NmJmMTkzYzg3Y2ZkNzFhOWY1YmRlMTVmNjEzMzJhODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xMjAsNiArMTIw
LDE2IEBAIGlubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBib29sIGlzU3VidHlwZVNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4g
ISh2YWx1ZSAmIH5jYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKK2lubGluZSBib29sIHNwZWN1bGF0
aW9uQ29udGFpbnMoU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIGNhdGVnb3J5
KQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIGNhdGVnb3J5KSAmJiB2YWx1ZTsKK30KKwogaW5s
aW5lIGJvb2wgaXNDZWxsU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAg
cmV0dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYmICEodmFsdWUgJiB+U3BlY0NlbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmluZGV4IDk2MTBk
Y2U1Y2RiYzNlYzA5Y2UzM2IxZDZiY2M0YjNmZjhhNmMzYzguLmU5YmY5NTMxZjdiYTU5NTczMTEw
ZTMxYTdhNDRjZDIyOGI3NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdXBlclNhbXBsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3VwZXJTYW1wbGVyLmgKQEAgLTQ4LDYgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKICAgICB9CiAKKyAgICB2b2lkIHJlbGVhc2UoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fZG9TYW1wbGUpOworICAgICAgICBnX3N1cGVyU2FtcGxlckNv
dW50LS07CisgICAgICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2RvU2FtcGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNkMzYyY2FjMTlk
NDkzOTg5NDc3N2JlZGE3YzBhYzJkNjM2MDYzZi4uOGZlZGU2MmI1MzBlYmQxMDFmZWRhNjFhYmFi
OTQ5YTNmM2IzNTliNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwMTYsMTQgKzQwMTYsMTUgQEAg
Ym9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29u
c3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lk
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSog
Zm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRh
PHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZO
b2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQogewogICAg
IGJvb2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2RlID8gZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQo
KSA6IGZhbHNlOwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNGb3JBd2FpdCAmJiBpc0Fz
eW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CisgICAgYXV0byBzaG91bGRFbWl0
QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOworICAg
IEFTU0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2Rl
KCkpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7
CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihz
dWJqZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2Rl
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdl
dEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0R2VuZXJpY0l0ZXJh
dG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0
aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0
eU5hbWVzKCkubmV4dCk7CiAKICAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsK
QEAgLTQxMzAsNyArNDEzMSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJh
dGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIH0K
IAogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBu
ZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVtaXRB
d2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5l
cmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIHNob3VsZEVtaXRBd2FpdCk7CiAKICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUp
LCBsb29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwg
dmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00MTQzLDcgKzQxNDQsMTQ1
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIHBvcEZpbmFsbHlDb250cm9sRmxv
d1Njb3BlKCk7CiAgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgewogICAgICAgICAgICAg
Ly8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93LgotICAg
ICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdh
aXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0
ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQp
OworICAgICAgICB9CisgICAgfQorICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7Cit9CisK
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ss
IEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkK
K3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNpY3MoKSB8fCBpczMyQml0
KCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkpKSB7CisgICAg
ICAgIGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9kZSwgc3ViamVjdE5vZGUsIGNhbGxCYWNrLCBm
b3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYWJsZSA9IG5ld1RlbXBvcmFyeSgpOworICAg
IGVtaXROb2RlKGl0ZXJhYmxlLmdldCgpLCBzdWJqZWN0Tm9kZSk7CisKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXRlcmF0b3JTeW1ib2wgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRl
cmFibGUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IG5leHRPckluZGV4ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGl0ZXJhdG9yID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyBh
cmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBtb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhYmxlLmdldCgpKTsKKyAgICBlbWl0SXRlcmF0b3JPcGVuKGl0ZXJhdG9yLmdldCgpLCBuZXh0
T3JJbmRleC5nZXQoKSwgaXRlcmF0b3JTeW1ib2wuZ2V0KCksIGFyZ3MsIG5vZGUpOworCisgICAg
UmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiB0cnlTdGFy
dExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlWaWFUaHJvd0xhYmVs
ID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlMYWJlbCA9IG5ld0xhYmVsKCk7
CisgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+
IGVuZENhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZp
bmVkKCkpOworCisgICAgLy8gUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yJ3MgbGlmZXRpbWUg
bXVzdCBiZSBsb25nZXIgdGhhbiBJdGVyYXRvckNsb3NlQ29udGV4dC4KKyAgICBGaW5hbGx5Q29u
dGV4dCBmaW5hbGx5Q29udGV4dCgqdGhpcywgZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICBwdXNo
RmluYWxseUNvbnRyb2xGbG93U2NvcGUoZmluYWxseUNvbnRleHQpOworCisgICAgeworICAgICAg
ICBSZWY8TGFiZWxTY29wZT4gc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3Ap
OworCisgICAgICAgIFJlZjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgIGVtaXRMYWJlbCgqc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOworICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICBpZiAo
Zm9yTG9vcE5vZGUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZvckxvb3BOb2RlLT5p
c0Zvck9mTm9kZSgpKTsKKyAgICAgICAgICAgIHByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9y
TG9vcEl0ZXJhdGlvbihmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAg
ICAgIGVtaXREZWJ1Z0hvb2soZm9yTG9vcE5vZGUtPmxleHByKCkpOworICAgICAgICB9CisKKyAg
ICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRvbmUgPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3MoKnRoaXMsIG51bGxwdHIs
IDApOworICAgICAgICAgICAgbW92ZShuZXh0QXJncy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iu
Z2V0KCkpOworCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KGRvbmUuZ2V0KCksIHZhbHVl
LmdldCgpLCBpdGVyYWJsZS5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIG5leHRBcmdzLCBub2Rl
KTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGxvb3BEb25lLmdldCgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsK
KyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IHB1c2hUcnkodHJ5U3RhcnRMYWJlbC5nZXQoKSwg
ZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFs
bHkpOworICAgICAgICBjYWxsQmFjaygqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgICAgICBlbWl0
SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVu
Y2UgZm9yIGFicnVwdCBjb21wbGV0aW9ucy4KKyAgICAgICAgeworICAgICAgICAgICAgLy8gRmlu
YWxseSBibG9jayBmb3IgdGhlIGVudW1lcmF0aW9uLgorICAgICAgICAgICAgZW1pdExhYmVsKGZp
bmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHBvcFRyeSh0cnlEYXRhLCBm
aW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gZmlu
YWxseUJvZHlMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisKKyAgICAgICAg
ICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9u
VmFsdWVSZWdpc3RlcigpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCks
IHRyeURhdGEpOworICAgICAgICAgICAgbW92ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0
KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGVtaXRM
YWJlbChmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgbW92ZUVtcHR5VmFsdWUoZmlu
YWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgLy8gRmluYWxseSBm
YWxsIHRocm91Z2ggY2FzZS4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5Qm9keUxhYmVs
LmdldCgpKTsKKyAgICAgICAgICAgIHJlc3RvcmVTY29wZVJlZ2lzdGVyKCk7CisKKyAgICAgICAg
ICAgIFJlZjxMYWJlbD4gZmluYWxseURvbmUgPSBuZXdMYWJlbCgpOworCisgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAg
ICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJl
dHVybk1ldGhvZC5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgUmVm
PExhYmVsPiByZXR1cm5DYWxsVHJ5U3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgZW1p
dExhYmVsKHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSk7CisgICAgICAgICAgICBUcnlEYXRhKiBy
ZXR1cm5DYWxsVHJ5RGF0YSA9IHB1c2hUcnkocmV0dXJuQ2FsbFRyeVN0YXJ0LmdldCgpLCBjYXRj
aExhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRDYXRjaCk7CisKKyAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQo
KSk7CisgICAgICAgICAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwor
CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCks
IHZhbHVlLmdldCgpKSwgZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAg
ICAgIGVtaXRGaW5hbGx5Q29tcGxldGlvbihmaW5hbGx5Q29udGV4dCwgZW5kQ2F0Y2hMYWJlbC5n
ZXQoKSk7CisKKyAgICAgICAgICAgIHBvcFRyeShyZXR1cm5DYWxsVHJ5RGF0YSwgZmluYWxseURv
bmUuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBDYXRjaCBibG9jayBmb3IgZXhjZXB0aW9ucyB0
aGF0IG1heSBiZSB0aHJvd24gd2hpbGUgY2FsbGluZyB0aGUgcmV0dXJuCisgICAgICAgICAgICAv
LyBoYW5kbGVyIGluIHRoZSBlbnVtZXJhdGlvbiBmaW5hbGx5IGJsb2NrLiBUaGUgb25seSByZWFz
b24gd2UgbmVlZCB0aGlzCisgICAgICAgICAgICAvLyBjYXRjaCBibG9jayBpcyBiZWNhdXNlIGlm
IGVudGVyZWQgdGhlIGFib3ZlIGZpbmFsbHkgYmxvY2sgZHVlIHRvIGEgdGhyb3duCisgICAgICAg
ICAgICAvLyBleGNlcHRpb24sIHRoZW4gd2Ugd2FudCB0byByZS10aHJvdyB0aGUgb3JpZ2luYWwg
ZXhjZXB0aW9uIG9uIGV4aXRpbmcKKyAgICAgICAgICAgIC8vIHRoZSBmaW5hbGx5IGJsb2NrLiBP
dGhlcndpc2UsIHdlJ2xsIGxldCBhbnkgbmV3IGV4Y2VwdGlvbiBwYXNzIHRocm91Z2guCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwor
CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvblJlZ2lzdGVyID0g
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdE91dE9mTGluZUZpbmFsbHlIYW5k
bGVyKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlw
ZVJlZ2lzdGVyKCksIHJldHVybkNhbGxUcnlEYXRhKTsKKyAgICAgICAgICAgICAgICAvLyBTaW5j
ZSB0aGlzIGlzIGEgc3ludGhlc2l6ZWQgY2F0Y2ggYmxvY2sgYW5kIHdlJ3JlIGd1YXJhbnRlZWQg
dG8gbmV2ZXIgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUgYW55IHN5bWJvbHMg
ZnJvbSB0aGUgc2NvcGUsIHdlIGNhbiBza2lwIHJlc3RvcmluZyB0aGUgc2NvcGUKKyAgICAgICAg
ICAgICAgICAvLyByZWdpc3RlciBoZXJlLgorCisgICAgICAgICAgICAgICAgUmVmPExhYmVsPiB0
aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0SXNFbXB0eShuZXdUZW1wb3JhcnkoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgp
KSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbW92ZShleGNlcHRpb25SZWdp
c3Rlci5nZXQoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAg
ICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0
VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdExh
YmVsKGVuZENhdGNoTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCBicmVha0xhYmVsSXNCb3VuZCA9IHNjb3BlLT5icmVha1RhcmdldE1heUJlQm91
bmQoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKQorICAgICAgICAgICAgZW1pdExh
YmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKKyAgICAgICAgcG9wRmluYWxseUNvbnRyb2xGbG93
U2NvcGUoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7CisgICAgICAgICAgICAv
LyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9sIGZsb3cuCisgICAg
ICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIEVt
aXRBd2FpdDo6Tm8pOwogICAgICAgICB9CiAgICAgfQogICAgIGVtaXRMYWJlbChsb29wRG9uZS5n
ZXQoKSk7CkBAIC00MjY1LDU2ICs0NDA0LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRJc0VtcHR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogICAgIE9w
SXNFbXB0eTo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KLSAgICAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQp
Ci17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51
bGxwdHIpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJh
dG9yKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9k
ZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgICAgICBpZiAoZG9FbWl0
QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgICAgICBlbWl0QXdhaXQoZHN0KTsKLSAg
ICB9Ci0gICAgewotICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7
Ci0gICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0
KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVy
YXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKLSAgICAgICAgZW1p
dExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkc3Q7Ci19Ci0K
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKLXsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhp
cywgbnVsbHB0ciwgMSk7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgaXRlcmF0b3IpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rl
cigwKSwgdmFsdWUpOwotICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFy
dCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotICAgIH0KLQotICAg
IHJldHVybiBkc3Q7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNs
b3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5l
d0xhYmVsKCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdv
cmQpOwotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwg
cmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3Vt
ZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhdG9yKTsKLSAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9k
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3Qo
KSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6
Tm8pOwotCi0gICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICBl
bWl0QXdhaXQodmFsdWUuZ2V0KCkpOwotCi0gICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwotICAgIGVtaXRUaHJv
d1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJf
cyk7Ci0gICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwotfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVn
aXN0ZXJJRCogaW5kZXhSZWdpc3RlcikKIHsKQEAgLTQ1NTUsNyArNDY0NCwzNSBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiAgICAgbW92ZSh2
YWx1ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwg
UmVnaXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBjb25z
dCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNlcnZlIHNwYWNl
IGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1l
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CisKKyAg
ICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBlbWl0RXhwcmVz
c2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVu
ZCgpKTsKKyAgICBPcEl0ZXJhdG9yT3Blbjo6ZW1pdCh0aGlzLCBpdGVyYXRvciwgbmV4dE9ySW5k
ZXgsIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZS50aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUuc3Rh
Y2tPZmZzZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5l
eHQoUmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0ZXJh
YmxlLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYgaXRlcmF0b3IsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8vIFJlc2VydmUgc3Bh
Y2UgZm9yIGNhbGwgZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJh
bWU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVyczsgKytpKQorICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFyeSgpKTsKKwor
ICAgIGlmIChzaG91bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBlbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlRXhwcmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKworICAgIGVtaXRFeHBy
ZXNzaW9uSW5mbyhub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90
RW5kKCkpOworICAgIE9wSXRlcmF0b3JOZXh0OjplbWl0KHRoaXMsIGRvbmUsIHZhbHVlLCBpdGVy
YWJsZSwgbmV4dE9ySW5kZXgsIGl0ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5zdGFj
a09mZnNldCgpKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRH
ZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3lt
Ym9sKTsKICAgICBlbWl0Q2FsbEl0ZXJhdG9yKGl0ZXJhdG9yLmdldCgpLCBhcmd1bWVudCwgbm9k
ZSk7CkBAIC00NTYzLDYgKzQ2ODAsNTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXgKICAgICBy
ZXR1cm4gaXRlcmF0b3IuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5l
eHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIHsKKyAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgbW92ZShu
ZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRDYWxs
KGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2Rl
LT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2Fi
bGVDYWxsOjpObyk7CisKKyAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVz
KQorICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVm
PExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1
ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7
CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0
KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJ
RCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIHsK
KyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsK
KyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Cisg
ICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7Cisg
ICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0
QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90
RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgfQorCisgICAgcmV0dXJuIGRzdDsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lz
dGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1p
dEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0
aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhp
cywgbnVsbHB0cik7CisgICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yKTsKKyAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+
ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisg
ICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAgICBlbWl0QXdhaXQo
dmFsdWUuZ2V0KCkpOworCisgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOworICAgIGVtaXRUaHJvd1R5cGVFcnJv
cigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAg
ZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworfQorCisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9y
ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCku
YXN5bmNJdGVyYXRvclN5bWJvbCk7CkBAIC00NTc1LDcgKzQ3NDMsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1l
bnQsIFRocm93YQogICAgIGVtaXRKdW1wKGFzeW5jSXRlcmF0b3JGb3VuZC5nZXQoKSk7CiAgICAg
ZW1pdExhYmVsKGFzeW5jSXRlcmF0b3JOb3RGb3VuZC5nZXQoKSk7CiAKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUp
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25JdGVyYXRvciA9IGVtaXRHZXRHZW5lcmlj
SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgIG1vdmUoaXRlcmF0b3IuZ2V0KCksIGNvbW1v
bkl0ZXJhdG9yLmdldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0g
ZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVz
KCkubmV4dCk7CkBAIC00NjA0LDcgKzQ3NzIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQog
ewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOwogICAgIHsK
LSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5jSXRlcmF0
b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5jSXRlcmF0b3Io
YXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAg
ICAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00NjQyLDcgKzQ4MTAs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVn
aXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAgICAgICBlbWl0SnVt
cElmRmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQo
KSksIHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgICAgIEVtaXRB
d2FpdCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2Fp
dDo6Tm87Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdl
dCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOworICAgICAgICAgICAgICAgICAg
ICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGVtaXRBd2Fp
dEluSXRlcmF0b3JDbG9zZSk7CiAKICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVy
cm9yKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC4i
X3MpOwogCkBAIC00NzAzLDcgKzQ4NzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOwot
ICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4dE1l
dGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKKyAgICAgICAg
ICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBuZXh0TWV0
aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOwogCiAgICAgICAg
ICAgICBlbWl0TGFiZWwoYnJhbmNoT25SZXN1bHQuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
ZDUzNGNkODI4YWFjM2QxNDBiNGY0NmM4Njg3NjgwOTE0ZTBkZTMyNS4uNmI3MDhlOTZhYjE0NjBk
YTZhMGFlMGNiOTUzNjhhNzlkY2Y4ZWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODI4LDYgKzgyOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJvcGVydHko
UmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3RlciwKICAg
ICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJl
Z2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29u
c3QgSlNUZXh0UG9zaXRpb24mKTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5lcmljRW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0
ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAgICAgICAgIHZvaWQgZW1pdEVu
dW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJl
c3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIs
IFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRl
bXBsYXRlTm9kZSopOwpAQCAtODk4LDkgKzg5OSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdElzRGVyaXZlZEFycmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIERlcml2ZWRB
cnJheVR5cGUpOyB9CiAgICAgICAgIHZvaWQgZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUoUmVn
aXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3IpOwogCi0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0
aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsKLSAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1
ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwotICAgICAgICB2b2lkIGVt
aXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7CisgICAgICAgIHZv
aWQgZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4
dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVy
YWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAgICAgdm9pZCBlbWl0
SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3Rl
cklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0
ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJl
Z2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
bmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7CisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJl
Z2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7Cisg
ICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3
YWl0OjpObyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0
ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKIApAQCAtOTUwLDkg
Kzk1Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXNoQ2F0Y2hTY29w
ZShWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBvcENhdGNoU2NvcGUo
VmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJdGVy
YXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKik7Ci0KICAgICAgICAgdm9pZCBlbWl0QXdhaXQoUmVnaXN0ZXJJRCopOwogICAg
ICAgICB2b2lkIGVtaXRHZXRTY29wZSgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFdp
dGhTY29wZShSZWdpc3RlcklEKiBvYmplY3RTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDRmZGI0ZGQ1NGQ0
OTJmOTBkMmQ3MjFmZDdkYWMxMmZmN2QyZjg1MC4uMmIxNWNhYTQ3MTNhODg1NjVjNGNkMDk1MjZm
OTBjMjQ1ZjYzYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDU3Miw3ICs0NTcyLDcgQEAgdm9pZCBBcnJheVBh
dHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogcmhzKQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBpZiAobV90YXJnZXRQYXR0ZXJu
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0ZXJh
dG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWND
bG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQ1ODgsNyArNDU4OCw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5n
ZXQoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0
KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCks
IG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1
ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDYyNCw3ICs0NjI0LDcgQEAgdm9pZCBBcnJheVBhdHRl
cm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogcmhzKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkp
OwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1
ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0
TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9u
ZS5nZXQoKSwgaXRlcmF0aW9uRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnZhbHVlKTsKQEAgLTQ2NDIsNyArNDY0Miw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6
YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykK
IAogICAgIFJlZjxMYWJlbD4gaXRlcmF0b3JDbG9zZWQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0b3JDbG9zZWQu
Z2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwg
dGhpcyk7CisgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5n
ZXQoKSwgdGhpcyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRvckNsb3NlZC5nZXQo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAwYTRhMTFmOWI0MGU2YjEzYzU5NjQyMjhl
NDExMjg5ZjFkOWVlODY2Li4xOGRhZTAwNGM3MjJjZDZmZGNmODkxMmJjNWM0MjEzYTQzMWIyNDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCkBAIC00Mzk4LDEwICs0Mzk4LDggQEAgdm9pZCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAgICAgICAg
ICAgICAgIGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9y
IChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykKLSAgICAgICAg
ZnVuY3RvcihtX3N0YXRlLmFyZ3VtZW50KGkpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0
ZS5udW1iZXJPZkxvY2FscygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUubG9jYWwo
aSkpOworICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnNpemUoKTsgaS0tOykKKyAgICAgICAg
ZnVuY3RvcihtX3N0YXRlLmF0SW5kZXgoaSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0
cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRh
aWxBYnN0cmFjdFN0YXRlLmgKaW5kZXggODk3YzcwZGZmYmEwNjZiNjQ5Y2FmZGNjMWVmMDkzMzc2
ODEwNGQxMy4uNDM4ZTE2ZGU4NTk1OTI1NGQ5NTU3MjFiNmYwOGRiOTU4MTRmZDhmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgK
QEAgLTEzNywxMSArMTM3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2Rl
KGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBudW1i
ZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1i
ZXJPZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7
IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVu
c2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFp
bC5udW1iZXJPZlRtcHMoKTsgfQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpOyB9CiAgICAgQWJz
dHJhY3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPnZh
bHVlc0F0VGFpbC5vcGVyYW5kKG9wZXJhbmQpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwo
c2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaW5kZXgp
OyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KSB7IHJldHVybiBt
X2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaW5kZXgpOyB9CisgICAgQWJzdHJhY3RWYWx1
ZSYgdG1wKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLnRtcChp
bmRleCk7IH0KICAgICAKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDA5
OTdiYWIwNTI1MjY0ZTZmMTY0ODU0MjQyZDk0Y2UzYjU3ZTM2ZGMuLjc1ZTI1NzU1NTI2N2E4YTM0
Njc1OTZiZGU4MjE3MTk3Yjg4Nzc1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVp
bHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJC
eXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKQEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gSGVscGVyIGZvciBtaW4gYW5kIG1heC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBi
b29sIGhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOwogICAgIAogICAgIHZvaWQgcmVmaW5lU3RhdGljYWxseShDYWxs
TGlua1N0YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQpOwogICAgIC8vIEJsb2NrcyBjYW4gZWl0aGVy
IGJlIHRhcmdldGFibGUgKGkuZS4gaW4gdGhlIG1fYmxvY2tMaW5raW5nVGFyZ2V0cyBvZiBvbmUg
SW5saW5lU3RhY2tFbnRyeSkgd2l0aCBhIHdlbGwtZGVmaW5lZCBieXRlY29kZUJlZ2luLApAQCAt
MTc0LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSGFuZGxlIGNhbGxzLiBUaGlzIHJlc29s
dmVzIGlzc3VlcyBzdXJyb3VuZGluZyBpbmxpbmluZyBhbmQgaW50cmluc2ljcy4KICAgICBlbnVt
IFRlcm1pbmFsaXR5IHsgVGVybWluYWwsIE5vblRlcm1pbmFsIH07CiAgICAgVGVybWluYWxpdHkg
aGFuZGxlQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3As
IElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgICAg
ICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0
dXMsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENhbGxPcD4KQEAgLTE4OCwyNyArMTg5LDI3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBo
YW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBlbWl0RnVuY3Rpb25DaGVja0lmTmVlZGVkKTsKICAgICB1bnNpZ25l
ZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90
IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEg
Y29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3Vj
Y2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxS
ZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwg
dW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFt
ZTo6S2luZCk7CisgICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rl
ck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFy
Z3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKICAgICB1bnNpZ25lZCBnZXRJbmxpbmluZ0JhbGFu
Y2UoY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBl
bnVtIGNsYXNzIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgeyBPcHRpbWl6ZWRUb0p1bXAsIElubGlu
ZWQsIERpZE5vdGhpbmcgfTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxW
YXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxs
VmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2ln
bmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29s
IG5lZWRzVG9DaGVja0NhbGxlZSk7Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29u
c3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0
aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRl
eCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRs
ZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZh
cmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25l
ZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBu
ZWVkc1RvQ2hlY2tDYWxsZWUpOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlSW5s
aW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlu
a1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVu
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRl
eCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAg
dm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayogY29udGludWF0
aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgdm9pZCBp
bmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlh
bnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMg
ZnVuY3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQg
dG8gcGxhbnQgYSBjYWxsLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0g
ICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUs
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAg
Ym9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rv
cj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmlu
c2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNW
YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxl
VHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVu
Y3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7Cisg
ICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoT3BlcmFuZCByZXN1bHQsIEludGVy
bmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRs
ZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBTcGVj
dWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29s
IGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3Vs
YXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSog
aGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVj
dWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVy
dHlPZmZzZXQsIE5vZGVUeXBlID0gR2V0QnlPZmZzZXQpOwotICAgIGJvb2wgaGFuZGxlRE9NSklU
R2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9k
ZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pOworICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBj
b25zdCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZU1vZHVs
ZU5hbWVzcGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUsIE5v
ZGUqIGJhc2UsIEdldEJ5U3RhdHVzKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2Rl
PgpAQCAtMzE4LDE1ICszMTksMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGdldExvY2Fs
T3JUbXAob3BlcmFuZCk7CiAgICAgfQogCi0gICAgTm9kZSogZ2V0KFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kKQorICAgIE5vZGUqIGdldChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBp
ZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50
SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOworICAgICAgICAgICAgdW5zaWduZWQg
Y29uc3RhbnRJbmRleCA9IG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkudG9Db25zdGFudEluZGV4
KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvbGRTaXplID0gbV9jb25zdGFudHMuc2l6ZSgpOwog
ICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0gb2xkU2l6ZSB8fCAhbV9jb25zdGFudHNb
Y29uc3RhbnRJbmRleF0pIHsKICAgICAgICAgICAgICAgICBjb25zdCBDb2RlQmxvY2smIGNvZGVC
bG9jayA9ICptX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jazsKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENvbnN0YW50KG9wZXJhbmQpOwotICAgICAgICAg
ICAgICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24g
PSBjb2RlQmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3BlcmFuZCk7Cisg
ICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVy
YW5kLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb24gc291cmNlQ29kZVJlcHJlc2VudGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291
cmNlQ29kZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAg
ICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUpIHsKICAgICAgICAgICAgICAg
ICAgICAgbV9jb25zdGFudHMuZ3Jvdyhjb25zdGFudEluZGV4ICsgMSk7CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFNpemU7IGkgPCBtX2NvbnN0YW50cy5zaXplKCk7
ICsraSkKQEAgLTM0NywxMCArMzQ4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUoKS0+aXNDbG9z
dXJlQ2FsbCkgewogICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGlubGluZUNh
bGxGcmFtZSgpLT5jYWxsZWVDb25zdGFudCgpOwotICAgICAgICAgICAgICAgIGlmIChvcGVyYW5k
Lm9mZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkKKyAgICAgICAgICAgICAgICBpZiAo
b3BlcmFuZCA9PSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtKU0NvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90
OjpjYWxsZWUpIHsKKyAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRv
IHNvbWUgY29uc3RhbnQtZm9sZGluZyBoZXJlIGJlY2F1c2UgdGhpcyBlbmFibGVzIENyZWF0ZVRo
aXMgZm9sZGluZy4gTm90ZQogICAgICAgICAgICAgLy8gdGhhdCB3ZSBkb24ndCBoYXZlIHN1Y2gg
d2F0Y2hwb2ludC1iYXNlZCBmb2xkaW5nIGZvciBpbmxpbmVkIHVzZXMgb2YgQ2FsbGVlLCBzaW5j
ZSBpbiB0aGF0CiAgICAgICAgICAgICAvLyBjYXNlIGlmIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmds
ZXRvbiB0aGVuIHdlIGFscmVhZHkga25vdyBpdC4KQEAgLTQxMCw3ICs0MTEsNyBAQCBwcml2YXRl
OgogICAgICAgICBtX3NldExvY2FsUXVldWUuc2hyaW5rKDApOwogICAgIH0KIAotICAgIE5vZGUq
IHNldChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9k
ZSA9IE5vcm1hbFNldCkKKyAgICBOb2RlKiBzZXQoT3BlcmFuZCBvcGVyYW5kLCBOb2RlKiB2YWx1
ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNl
dERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCksIHZhbHVlLCBz
ZXRNb2RlKTsKICAgICB9CkBAIC02OTEsMTUgKzY5MiwyMCBAQCBwcml2YXRlOgogICAgICAgICBm
bHVzaEZvclRlcm1pbmFsKCk7CiAgICAgfQogCisgICAgTm9kZSoganNDb25zdGFudChGcm96ZW5W
YWx1ZSogY29uc3RhbnRWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpT
Q29uc3RhbnQsIE9wSW5mbyhjb25zdGFudFZhbHVlKSk7CisgICAgfQorCiAgICAgLy8gQXNzdW1l
cyB0aGF0IHRoZSBjb25zdGFudCBzaG91bGQgYmUgc3Ryb25nbHkgbWFya2VkLgogICAgIE5vZGUq
IGpzQ29uc3RhbnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplU3Ryb25nKGNvbnN0
YW50VmFsdWUpKSk7CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplU3Ry
b25nKGNvbnN0YW50VmFsdWUpKTsKICAgICB9CiAKICAgICBOb2RlKiB3ZWFrSlNDb25zdGFudChK
U1ZhbHVlIGNvbnN0YW50VmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChK
U0NvbnN0YW50LCBPcEluZm8obV9ncmFwaC5mcmVlemUoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAg
ICAgcmV0dXJuIGpzQ29uc3RhbnQobV9ncmFwaC5mcmVlemUoY29uc3RhbnRWYWx1ZSkpOwogICAg
IH0KIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgdG8gZ2V0L3NldCB0aGUgdGhpcyB2YWx1ZS4K
QEAgLTg1MCw3ICs4NTYsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRD
YWxsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZv
IG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwK
KyAgICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2Rl
KiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxs
KSB7CkBAIC05NTksNyArOTY1LDM3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4g
Z2V0UHJlZGljdGlvbihtX2N1cnJlbnRJbmRleCk7CiAgICAgfQotICAgIAorCisgICAgLy8gRklY
TUU6IFRoaXMgaXNuJ3QgcXVpdGUgYSB0cnVlIGJvdHRvbSB2YWx1ZSBmb3IgZXhhbXBsZSBhbnkg
b2JqZWN0IHNwZWN1bGF0aW9uIHdpbGwgbm93IGJlIE9iamVjdHxPdGhlciBhcyB0aGlzIHJldHVy
bnMgbnVsbC4KKyAgICAvLyBXZSBzaG91bGQgZml4IHRoaXMgd2hlbiB3ZSBjYW4gYWxsb2NhdGUg
b24gdGhlIENvbXBpbGVyIHRocmVhZC4KKyAgICBGcm96ZW5WYWx1ZSogYm90dG9tVmFsdWVNYXRj
aGluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHNwZWMpCisgICAgeworICAgICAgICAvLyBJ
dCBwcm9iYWJseSBkb2Vzbid0IG1hdHRlciB3aGF0IHdlIHJldHVybiBoZXJlLgorICAgICAgICBp
ZiAoc3BlYyA9PSBTcGVjTm9uZSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShK
U1ZhbHVlKCkpOworCisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNP
dGhlcikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisg
ICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNCb29sZWFuKSkKKyAgICAg
ICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc0Jvb2xlYW4odHJ1ZSkpOworCisgICAgICAg
IGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNGdWxsTnVtYmVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc051bWJlcigwKSk7CisKKyAgICAgICAgaWYgKHNw
ZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4g
bV9ncmFwaC5mcmVlemUobV92bS0+YmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworCisgICAgICAg
IGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkK
KyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShtX3ZtLT5zbWFsbFN0cmluZ3MuZW1w
dHlTdHJpbmcoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3Bl
Y0NlbGxPdGhlciB8IFNwZWNPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJl
ZXplKGpzTnVsbCgpKTsKKworICAgICAgICBBU1NFUlQoc3BlY3VsYXRpb25Db250YWlucyhzcGVj
LCBTcGVjRW1wdHkpKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoKSk7
CisgICAgfQorCiAgICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZShBcnJheTo6QWN0aW9uIGFjdGlv
bikKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrOwpAQCAtMTE3NCw3ICsxMjEwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8gT3B0aW9uYWw6IGEgY29udGludWF0aW9uIGJsb2NrIGZvciByZXR1cm5zIHRvIGp1bXAg
dG8uIEl0IGlzIHNldCBieSBlYXJseSByZXR1cm5zIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogICAg
ICAgICBCYXNpY0Jsb2NrKiBtX2NvbnRpbnVhdGlvbkJsb2NrOwogCi0gICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBtX3JldHVyblZhbHVlOworICAgICAgICBPcGVyYW5kIG1fcmV0dXJuVmFsdWU7CiAg
ICAgICAgIAogICAgICAgICAvLyBTcGVjdWxhdGlvbnMgYWJvdXQgdmFyaWFibGUgdHlwZXMgY29s
bGVjdGVkIGZyb20gdGhlIHByb2ZpbGVkIGNvZGUgYmxvY2ssCiAgICAgICAgIC8vIHdoaWNoIGFy
ZSBiYXNlZCBvbiBPU1IgZXhpdCBwcm9maWxlcyB0aGF0IHBhc3QgREZHIGNvbXBpbGF0aW9ucyBv
ZiB0aGlzCkBAIC0xMTk0LDcgKzEyMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ29kZUJs
b2NrKiwKICAgICAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICAgICAgICAg
IEpTRnVuY3Rpb24qIGNhbGxlZSwgLy8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgot
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJldHVyblZhbHVlVlIsCisgICAgICAgICAgICBP
cGVyYW5kIHJldHVyblZhbHVlLAogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGluZUNh
bGxGcmFtZVN0YXJ0LAogICAgICAgICAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LAogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLApAQCAtMTI2OSw2ICsxMzA1LDcg
QEAgQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2so
KQogICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jayhC
eXRlY29kZUluZGV4KCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgbV9udW1UbXBzLCAx
KSk7CiAgICAgQmFzaWNCbG9jayogYmxvY2tQdHIgPSBibG9jay5wdHIoKTsKICAgICBtX2dyYXBo
LmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKKyAgICBWRVJCT1NFX0xPRygiQWRkaW5nIG5l
dyB1bnRhcmdldGFibGUgYmxvY2s6ICIsIGJsb2NrUHRyLT5pbmRleCwgIlxuIik7CiAgICAgcmV0
dXJuIGJsb2NrUHRyOwogfQogCkBAIC0xMzAxLDggKzEzMzgsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDYWxsT3A+CiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2Fs
bE1vZGUpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7Ci0gICAgTm9k
ZSogY2FsbFRhcmdldCA9IGdldChieXRlY29kZS5tX2NhbGxlZSk7Ci0gICAgaW50IHJlZ2lzdGVy
T2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBOb2RlKiBj
YWxsVGFyZ2V0ID0gZ2V0KGNhbGxlZUZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2tw
b2ludCgpKSk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3Rh
Y2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNr
cG9pbnQoKSkpOwogCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLApAQCAtMTMxMCw4ICsxMzQ3LDggQEAgQnl0ZUNv
ZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IElu
c3RydWN0aW9uKiBwYywgTm8KIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5s
aW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIAotICAgIHJldHVybiBoYW5kbGVDYWxs
KGJ5dGVjb2RlLm1fZHN0LCBvcCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKLSAgICAg
ICAgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFBy
ZWRpY3Rpb24oKSk7CisgICAgcmV0dXJuIGhhbmRsZUNhbGwoZGVzdGluYXRpb25Gb3IoYnl0ZWNv
ZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSwgSklUVHlwZTo6REZHSklUKSwgb3AsIGtp
bmQsIHBjLT5zaXplKCksIGNhbGxUYXJnZXQsCisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpLCByZWdpc3Rl
ck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CiB9CiAKIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3Rh
dHVzLCBOb2RlKiBjYWxsVGFyZ2V0KQpAQCAtMTMyMSw3ICsxMzU4LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cmVmaW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMs
IE5vZGUqIGNhbGwKIH0KIAogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDYWxsKAotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9w
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAor
ICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtp
bmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwKICAgICBDYWxs
TGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsK
QEAgLTE2MzcsNyArMTY3NCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nv
c3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFy
aWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0
aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3ZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0
LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayog
Y29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsK
ICAgICBjb25zdCBJbnN0cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJl
bnRJbnN0cnVjdGlvbjsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9u
S2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwpAQCAt
MTY3MSw3ICsxNzA4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EKICAgICBzaXplX3QgYXJn
dW1lbnRQb3NpdGlvblN0YXJ0ID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUoKTsK
IAogICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQotICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0
YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0KS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAg
cmVzdWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCk7CiAKICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoY2Fs
bGVlLmlzQ2xvc3VyZUNhbGwoKSkgewpAQCAtMTgyMyw3ICsxODYwLDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgQ2EKICAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IHNhdmVkQ3VycmVudEluc3Ry
dWN0aW9uOwogfQogCi1CeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2lu
ZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwg
QmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQor
Qnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2Fs
bFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlz
QXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBu
ZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRp
b25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAg
ICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIApAQCAtMTkwMCw3ICsxOTM3
LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKICAgICByZXR1cm4gQ2FsbE9wdGltaXphdGlv
blJlc3VsdDo6SW5saW5lZDsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJn
c0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAor
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwKICAgICBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExp
bmtTdGF0dXMsIGludCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQs
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVu
dHNPZmZzZXQsCiAgICAgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2lu
ZCkKQEAgLTIwNDQsNyArMjA4MSw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjpnZXRJbmxp
bmluZ0JhbGFuY2UoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzCiB9CiAKIEJ5
dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZygKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAorICAgIE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxM
aW5rU3RhdHVzLAogICAgIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNB
cmd1bWVudCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgQnl0ZWNv
ZGVJbmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCkBAIC0yMjIwLDcgKzIyNTcsNyBAQCBC
eXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIEFTU0VSVChvcCA9PSBBcml0aE1pbiB8fCBvcCA9
PSBBcml0aE1heCk7CiAKQEAgLTIyNTAsNyArMjI4Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJl
Z2lzCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljIGlu
dHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcykKIHsKICAgICBWRVJCT1NFX0xPRygiICAgICAgIFRoZSBpbnRyaW5zaWMgaXMgIiwg
aW50cmluc2ljLCAiXG4iKTsKIApAQCAtMjM4OSwyNyArMjQyNiwxMSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgSQogICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOiB7CiAgICAgICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKIAotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kOwot
ICAgICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlW
YWx1ZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5z
aWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlLZXlzSW50cmluc2ljOgot
ICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgICAg
ICBraW5kID0gSXRlcmF0aW9uS2luZDo6S2V5czsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQXJyYXlFbnRyaWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBU
eXBlZEFycmF5RW50cmllc0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0
aW9uS2luZDo6RW50cmllczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9wdGlvbmFs
PEl0ZXJhdGlvbktpbmQ+IGtpbmQgPSBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhpbnRyaW5z
aWMpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFraW5kKTsKIAogICAgICAgICAgICAg
Ly8gQWRkIHRoZSBjb25zdGFudCBiZWZvcmUgZXhpdCBiZWNvbWVzIGludmFsaWQgYmVjYXVzZSB3
ZSBtYXkgd2FudCB0byBpbnNlcnQgKHJlZHVuZGFudCkgY2hlY2tzIG9uIGl0IGluIEZpeHVwLgot
ICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19j
YXN0PHVpbnQzMl90PihraW5kKSkpOworICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0Nv
bnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90Pigqa2luZCkpKTsKIAogICAgICAg
ICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbiBleGlzdGluZyBlcnJvciBzdHJpbmcuCiAgICAgICAg
ICAgICB1bnNpZ25lZCBlcnJvclN0cmluZ0luZGV4ID0gVUlOVDMyX01BWDsKQEAgLTM2NDcsNyAr
MzY2OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5v
ZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxs
KE5vZGUqIGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKQogewogICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSBz
dGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0zNjY2LDcgKzM2ODcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSog
dGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRo
aXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgc3dpdGNo
ICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aElu
dHJpbnNpYzogewpAQCAtMzc4MCw3ICszODAxLDcgQEAgc3RhdGljIHZvaWQgYmxlc3NDYWxsRE9N
R2V0dGVyKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5l
cmF0ZSk7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSog
dGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCBy
ZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAg
ICBpZiAoIXZhcmlhbnQuZG9tQXR0cmlidXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTM4NTksNyArMzg4MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVz
cGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFy
cmF5Q29uc3RydWN0b3IoCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5j
dGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBPcGVyYW5kIHJlc3VsdCwg
SW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKICAgICBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlIHR5cGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGUp
KQpAQCAtMzkxNiw3ICszOTM3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRB
cnJheUNvbnN0cnVjdG9yKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAotICAgIE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0
aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdp
c3Rlck9mZnNldCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgSGFuZGxp
bmcgY29uc3RhbnQgaW50ZXJuYWwgZnVuY3Rpb24gIiwgSlNWYWx1ZShmdW5jdGlvbiksICJcbiIp
OwpAQCAtNjYwNCwyMCArNjYyNSw0MjUgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBMQVNU
X09QQ09ERShvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwogICAgICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOiB7CiAgICAgICAg
ICAgICBoYW5kbGVWYXJhcmdzQ2FsbDxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgQ29uc3RydWN0VmFyYXJncywgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7CiAgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0
cnVjdGlvbiwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBj
YWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2NvbnN0cnVjdF92YXJhcmdzKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisK
ICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2FsbEV2YWw+KCk7CiAgICAgICAgICAgICBpbnQg
cmVnaXN0ZXJPZmZzZXQgPSAtYnl0ZWNvZGUubV9hcmd2OwogICAgICAgICAgICAgYWRkQ2FsbChi
eXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0
KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0
UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAg
ICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbjog
eworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck9wZW4+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMgPSBtZXRh
ZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVzKTsKKyAg
ICAgICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9mSXRlcmF0
aW9uTW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9w
LT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAg
ICAgICAgICAgQmFzaWNCbG9jayogZ2VuZXJpY0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsK
KworICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7
CisKKyAgICAgICAgICAgIE5vZGUqIHN5bWJvbEl0ZXJhdG9yID0gZ2V0RGlyZWN0KGJ5dGVjb2Rl
Lm1fc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgYXV0byYgYXJyYXlJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCgpOworCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9k
ZTo6RmFzdEFycmF5ICYmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGls
bFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9p
bnQgY29uZGl0aW9ucyB3ZSBuZWVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBt
X2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQpOworCisgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblN5bWJvbEl0
ZXJhdG9yRnVuY3Rpb24gPSBtX2dyYXBoLmZyZWV6ZShnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVy
T2ZSZW1haW5pbmdNb2RlcyA9PSAxKQorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrQ2VsbCwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVy
YXRvcik7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGZhc3RBcnJheUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAg
ICAgICAgICAgICAgICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2Nr
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSoga25vd25JdGVyRnVuY3Rpb24gPSBhZGRU
b0dyYXBoKENvbXBhcmVFcVB0ciwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24p
LCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzQXJyYXkgPSBh
ZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcEluZm8oQXJyYXlUeXBlKSwgZ2V0KGJ5dGVjb2Rl
Lm1faXRlcmFibGUpKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hE
YXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
YW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Js
b2NrKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhbmRSZXN1bHQgPSBhZGRUb0dyYXBo
KEFyaXRoQml0QW5kLCBpc0FycmF5LCBrbm93bkl0ZXJGdW5jdGlvbik7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gV2Uga25vdyB0aGUgYml0IGFuZCBjYW5ub3QgaGF2ZSBlZmZlY3RzIHNvIGl0
J3Mgb2sgdG8gZXhpdCBoZXJlLgorICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhbmRSZXN1bHQp
OworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAg
ICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBUaGUgYnJhbmNoIGFib3ZlIG1heSBoYXZlIG1hZGUgZXhpdCBpbnZhbGlkIGJ1dCBpdCdz
IGFjdHVhbGx5IG9rLgorICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgTm9kZSoga2luZE5v
ZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25L
aW5kOjpWYWx1ZXMpKSk7CisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dy
YXBoKE5ld0FycmF5SXRlcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90
PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwgZ2V0
KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dElu
dGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9y
OjpGaWVsZDo6S2luZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOworICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2l0ZXJhdG9yLCBpdGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9uZXh0LCBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgICAgICAgICAg
ICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZh
bCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAg
IG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSAr
IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9
IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAg
ICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRD
YXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBzdGFydEluZGV4OworCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9k
ZTo6R2VuZXJpYykgeworICAgICAgICAgICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGdlbmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jayA9IGdlbmVyaWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFnZW5lcmF0ZWRDYXNlKTsKKworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRl
cm1pbmFsaXR5ID0gaGFuZGxlQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oY3VycmVudEluc3RydWN0aW9u
LCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RCh0ZXJtaW5hbGl0eSwgdGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAg
ICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgTm9kZSog
aXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgQmFz
aWNCbG9jayogbm90T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0g
bV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+
dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYnJh
bmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3Jh
cGgoSXNPYmplY3QsIGl0ZXJhdG9yKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMg
c2hvdWxkIGJlIGEgdHlwZSBlcnJvci4uLgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFRocm93LCBqc0NvbnN0YW50KGpzTnVsbCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNo
Rm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9jazsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAg
ICAgICAgICBhdXRvKiBuZXh0SW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgp
OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFw
aC5pZGVudGlmaWVycygpLmVuc3VyZShuZXh0SW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAg
QWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1
czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworCisgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZUdldEJ5SWQoYnl0ZWNvZGUubV9uZXh0LCBwcmVkaWN0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKG5leHRJbXBsKSwgaWRlbnRpZmll
ck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBn
ZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhp
dE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsK
KyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9k
ZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVy
YXRvciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCByZXN1
bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdh
bnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRl
Y29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9j
dXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
RXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAg
ICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAgICAgICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAg
IHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1v
ZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RG
OjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWlu
aW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdl
bmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBzdGFydElu
ZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihj
dXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51
bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVu
dGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRp
b25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5p
c1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgd2F0
Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAg
ICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdN
b2RlcyAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGhhc05leHQgPSBhZGRUb0dy
YXBoKElzRW1wdHksIGdldChieXRlY29kZS5tX25leHQpKTsKKyAgICAgICAgICAgICAgICAgICAg
Z2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxl
QmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0g
bV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERh
dGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRh
KSwgaGFzTmV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0
QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdldChieXRlY29k
ZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJl
LCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJh
dG9yU3RydWN0dXJlKCkpKSwgaXRlcmF0b3IpOworCisgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAg
ICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9j
aygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGRvTG9hZEJsb2NrID0gYWxsb2NhdGVV
bnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpzTnVtYmVyKC0xKSk7CisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBP
cEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4
KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgaXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcSwgaW5kZXgsIGRvbmVJ
bmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogaXNEb25lQnJhbmNoRGF0
YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBpc0Rv
bmVCcmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIGlzRG9uZUJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5v
dERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcElu
Zm8oaXNEb25lQnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNo
Rm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxl
LCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVkaWN0aW9uID0gZ2V0UHJl
ZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0
KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdERvbmVCbG9jazsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBp
bmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVp
bnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMy
T25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGl0ZXJhYmxlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpOworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBidXR0ZXJmbHkgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgaXRlcmFibGUp
OworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBhZGRUb0dyYXBoKEdldEFycmF5
TGVuZ3RoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgaXRlcmFibGUsIGJ1dHRlcmZseSk7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzRG9uZSA9IGFkZFRvR3JhcGgoQ29tcGFyZUdy
ZWF0ZXJFcSwgaW5kZXgsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0g
dHJ1ZTsgLy8gVGhlIGFib3ZlIGNvbXBhcmUgZG9lc24ndCBwcm9kdWNlIGVmZmVjdHMgc2luY2Ug
d2Uga25vdyBpbmRleCBhbmQgbGVuZ3RoIGFyZSBpbnQzMnMuCisgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBi
cmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzRG9uZUJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZG9Mb2Fk
QmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJy
YW5jaERhdGEpLCBpc0RvbmUpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGRvTG9hZEJsb2NrOworICAgICAgICAgICAgICAgICAg
ICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRv
R3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0Fy
cmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMyT25seSksIGdldChi
eXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG9uZSA9IGpz
Q29uc3RhbnQoanNOdW1iZXIoMSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRl
eCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQsIGluZGV4LCBvbmUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgTm9kZSogZmFsc2VOb2RlID0ganNDb25zdGFudChqc0Jvb2xlYW4oZmFsc2Up
KTsKKworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBjb25zaWRlciBt
YWtpbmcgdGhpcyBub3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5IHVzZXMgdGhyZWUgY2hpbGQKKyAg
ICAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0QnlWYWwgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFy
ZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGljdGlv
bikpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgZ2V0QnlWYWwp
OworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCBmYWxzZU5vZGUpOwor
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhz
dGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgZ2V0
KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBuZXdJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBh
Z2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkg
KyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgLy8gUm9sbCBiYWNrIHRoZSBjaGVja3BvaW50LgorICAgICAgICAgICAgICAg
IG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc0RvbmVCbG9jazsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogdHJ1ZU5v
ZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGRvbmVJbmRleCA9IGpzQ29uc3RhbnQoanNOdW1iZXIoLTEpKTsKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogYm90dG9tTm9kZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVNYXRjaGluZ1Nw
ZWN1bGF0aW9uKHByZWRpY3Rpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNv
ZGUubV92YWx1ZSwgYm90dG9tTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29k
ZS5tX2RvbmUsIHRydWVOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJ
bnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRv
cjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSwgZG9uZUluZGV4KTsK
KworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4KKyAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9m
ZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9L
KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAg
ICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5l
cmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmlj
QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisK
KyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJ
dGVyYXRvck5leHQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIp
OworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5
ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9p
bnQoKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlz
T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygp
OworCisgICAgICAgICAgICAgICAgT3BlcmFuZCBuZXh0UmVzdWx0ID0gT3BlcmFuZDo6dG1wKE9w
SXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yUmVzdWx0ID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAg
ICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERh
dGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNo
VGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5u
b3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNP
YmplY3QsIGl0ZXJhdG9yUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVy
bWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVl
IGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1fZ3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9y
U3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRv
R3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8pOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5mbyhFcnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9y
TWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlUHJlZGljaXRpb24gPSBn
ZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5v
ZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBj
bGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBib3R0b21W
YWx1ZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKHZhbHVlUHJl
ZGljaXRpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KG5leHRS
ZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBkb25lSW1wbCA9IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShkb25lSW1wbCk7CisK
KyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJ
ZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudElu
c3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0
QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fZG9uZSwgcHJlZGljdGlvbiwg
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihk
b25lSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5n
dGgpOworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYSB2YWx1ZSBmb3IgbV92YWx1ZSBzbyB3
ZSBkb24ndCB0aGluaworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwg
Ym90dG9tVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9p
bnQoKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9n
cmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEt
PnRha2VuID0gQnJhbmNoVGFyZ2V0KGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAg
IGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGdl
dChieXRlY29kZS5tX2RvbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5h
bCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdmFsdWVJbXBsID0gbV92
bS0+cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZSh2YWx1
ZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5
cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5
U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29u
dGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX3ZhbHVlLCB2
YWx1ZVByZWRpY2l0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKHZhbHVlSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVz
LCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4
dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9w
SW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5h
bCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2Ug
PSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENhc2Up
IHsKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBqc0NvbnN0YW50KEpTVmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX2RvbmUsIHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0
IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBt
b3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4
ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVj
dGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRM
b2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhj
b250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0b3JfbmV4dCk7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7CiAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ryb25n
KG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5tX3Nw
ZWNpYWxQb2ludGVyKSk7CkBAIC03MTA3LDcgKzc1MzMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gbG9hZHMgZnJvbSB0
aGUgc2NvcGUgcmVnaXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0aGUgREZHIGZy
b20gdHJhY2tpbmcgdGhlCiAgICAgICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBsaXZlbmVzcyBv
ZiB0aGUgc2NvcGUgcmVnaXN0ZXIuCiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldFNjb3BlPigpOwotICAgICAgICAgICAgTm9kZSogY2FsbGVl
ID0gZ2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgICAgICAg
ICAgTm9kZSogcmVzdWx0OwogICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
Y2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigqbV92bSkpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gd2Vha0pTQ29uc3RhbnQoZnVuY3Rpb24tPnNjb3BlKCkpOwpAQCAt
NzQ4Niw3ICs3OTEyLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGlu
ZVN0YWNrRW50cnkoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLAogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSwgLy8gTnVsbCBpZiB0aGlzIGlz
IGEgY2xvc3VyZSBjYWxsLgotICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1ZVZSLAorICAg
IE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGluZUNhbGxGcmFt
ZVN0YXJ0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICBJbmxpbmVD
YWxsRnJhbWU6OktpbmQga2luZCwKQEAgLTc0OTUsNyArNzkyMSw3IEBAIEJ5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICwgbV9jb2RlQmxvY2so
Y29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKHByb2ZpbGVkQmxvY2spCiAgICAgLCBt
X2NvbnRpbnVhdGlvbkJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrKQotICAgICwgbV9yZXR1cm5WYWx1
ZShyZXR1cm5WYWx1ZVZSKQorICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZSkKICAgICAs
IG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wKQogewogICAgIHsKQEAg
LTc1NjEsNyArNzk4Nyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KAogICAgICAgICAvLyBNYWNoaW5lIGNvZGUgYmxvY2sgY2FzZS4KICAgICAg
ICAgQVNTRVJUKGNvZGVCbG9jayA9PSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2spOwogICAg
ICAgICBBU1NFUlQoIWNhbGxlZSk7Ci0gICAgICAgIEFTU0VSVCghcmV0dXJuVmFsdWVWUi5pc1Zh
bGlkKCkpOworICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlLmlzVmFsaWQoKSk7CiAgICAgICAg
IEFTU0VSVCghaW5saW5lQ2FsbEZyYW1lU3RhcnQuaXNWYWxpZCgpKTsKIAogICAgICAgICBtX2lu
bGluZUNhbGxGcmFtZSA9IDA7CkBAIC03OTc2LDcgKzg0MDIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2sp
OwogCiAgICAgICAgICAgICAgICAgYXV0byBub2RlQW5kSW5kZXggPSBibG9jay0+ZmluZFRlcm1p
bmFsKCk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZUFuZEluZGV4Lm5vZGUt
Pm9wKCkgPT0gVW5yZWFjaGFibGUpOworICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbm9kZUFuZEluZGV4Lm5vZGUsIG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hh
YmxlKTsKICAgICAgICAgICAgICAgICBibG9jay0+cmVzaXplKG5vZGVBbmRJbmRleC5pbmRleCAr
IDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAK
aW5kZXggZTdmNmU3NjI0NjY5YjMwMWY1YTAyMDQ4YzI1ZDQ4MTVjM2ExMzM5ZC4uNjEwZDdkMjBl
ZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBAIC0yODAs
NyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGtl
ZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRC
bG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAg
ICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpl
dHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcGVyYW5kIG9wZXJhbmQpCiAg
ICAgewogICAgICAgICBOb2RlKiBsaXZlbmVzc05vZGUgPSBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICBpZiAoIWxpdmVuZXNzTm9kZSkK
QEAgLTMwMiwxMSArMzAyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGpldHRpc29uQmxv
Y2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9y
aWdpbiBib3VuZGFyeU5vZGVPcmlnaW4pCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRz
KCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRC
bG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoaSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAg
IGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3Jp
Z2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7Ci0gICAgICAgIAorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUo
KTsgKytpKQorICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJs
b2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm9wZXJhbmRGb3JJbmRleChpKSk7CisKICAgICAgICAgZml4SmV0dGlzb25lZFByZWRlY2Vzc29y
cyhibG9jaywgamV0dGlzb25lZEJsb2NrKTsKICAgICB9CiAgICAgCkBAIC0zNTIsMTEgKzM1MCw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBUaW1lIHRvIGluc2VydCBnaG9zdGllcyBmb3Ig
dGhpbmdzIHRoYXQgbmVlZCB0byBiZSBrZXB0IGFsaXZlIGluIGNhc2Ugd2UgT1NSCiAgICAgICAg
ICAgICAvLyBleGl0IHByaW9yIHRvIGhpdHRpbmcgdGhlIGZpcnN0QmxvY2sncyB0ZXJtaW5hbCwg
YW5kIGVuZCB1cCBnb2luZyBkb3duIGEKICAgICAgICAgICAgIC8vIGRpZmZlcmVudCBwYXRoIHRo
YW4gc2Vjb25kQmxvY2suCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVu
dHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywg
amV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsr
aSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29u
ZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFy
aWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxp
dmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpldHRp
c29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2Vjb25kQmxvY2st
PnBoaXMuc2l6ZSgpOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBhNmNjN2RlY2E3MDI0ODhmOGUxYzJhMGI2NzBiZjk5
Zi4uNjAwMzMyZjE5MGZmOGI0MDQyY2Q1NDJhYjk1YjUwNTM2YWQ3YTc5NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjc0LDYgKzI3NCw4
IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9jYXRjaDoKICAgICBjYXNl
IG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgY2FzZSBv
cF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2No
aWNrZW5fdGFpbDoKICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKQEAgLTMxMSw2ICszMTMsOCBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF9m
cm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lOgogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhp
dF90cmFtcG9saW5lOgogICAgIGNhc2UgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246CisgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9y
X25leHRfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY2FsbF9yZXR1cm5fbG9jYXRpb246
CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY2Fs
bF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWE0ZGVjZGEwYzJkNzM2ODdlZmNmMzg4Yjg0ODJm
YjBlYzY0N2M0Zi4uZGJjODMxYzJlYmUwODZmODczNjZhN2U1NGEzNWU1OTNhOWIwNzhmNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNDExLDcg
KzI0MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBJZGVudGl0eVdp
dGhQcm9maWxlOiB7Ci0gICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJh
dGUpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxs
S2lsbHMuaAppbmRleCBiZjQzNTBjNGNkMTdlM2Q1MDA2NjM4ZjU1YWFjMzVhNTY1Mjk5NGExLi5k
OWM5NzQyOGZkNmFlNWVhNTA2ZDA1NzI2NzMwMjBkZDFhZmYxMTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgZm9y
QWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBu
b2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3IoYmVmb3JlSW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgaWYgKGFm
dGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChi
ZWZvcmUuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSAhPSBhZnRlci5ieXRlY29kZUluZGV4
KCkuY2hlY2twb2ludCgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYmVmb3Jl
LmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29kZUluZGV4KCkub2Zmc2V0
KCksICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBpdCBzaG91bGQgY2hhbmdlIHRoZSBm
b3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vycm91bmRpbmcgYnl0ZWNvZGVzLiIpOworICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLm9mZnNl
dCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSB8fCBub2RlQWZ0ZXItPm9wKCkg
PT0gRXhpdE9LIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBJbnZhbGlkYXRpb25Qb2ludCwgIldoZW4g
dGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNob3VsZCBjaGFuZ2UgdGhlIGZvckV4aXQgb3Jp
Z2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBieXRlY29kZXMuIik7CiAKICAgICAgICAgICAg
IGF1dG8gbGl2ZUJlZm9yZSA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBi
ZWZvcmUuYnl0ZWNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGF1dG8gbGl2ZUFmdGVyID0gdG1w
TGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGFmdGVyLmJ5dGVjb2RlSW5kZXgoKSk7
CkBAIC0xMDIsOCArMTAyLDYgQEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFmdGVyLmJ5dGVjb2RlSW5k
ZXgoKS5jaGVja3BvaW50KCksICJUcmFuc2l0aW9uaW5nIGFjcm9zcyBhIGNoZWNrcG9pbnQgYnV0
IGJlZm9yZSBhbmQgYWZ0ZXIgZG9uJ3Qgc2hhcmUgYW4gaW5saW5lQ2FsbEZyYW1lLiIpOwotCiAg
ICAgLy8gRGV0ZWN0IGtpbGxzIHRoZSBzdXBlciBjb25zZXJ2YXRpdmUgd2F5OiBpdCBpcyBraWxs
ZWQgaWYgaXQgd2FzIGxpdmUgYmVmb3JlIGFuZCBkZWFkIGFmdGVyLgogICAgIEJpdFZlY3RvciBs
aXZlQWZ0ZXIgPSBncmFwaC5sb2NhbHNBbmRUbXBzTGl2ZUluQnl0ZWNvZGUoYWZ0ZXIpOwogICAg
IHVuc2lnbmVkIG51bUxvY2FscyA9IGdyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggMjAyZDIyNTA1M2ZhOWRmYmU1YzIzYzY0YmNm
OGJlMzg0ZTNlNzY1NC4uN2NjMzRhZTJkMGQ0ZTVmODQ4ZTY5NTczMDI0OTJjMTIxZDcxZmVkOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKQEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
YmVnaW5CYXNpY0Jsb2NrKEJhc2ljQmxvY2sqIGJhc2ljQmxvY2spCiAgICAgQVNTRVJUKGJhc2lj
QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZh
bHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWls
Lm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhl
YWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkpOwor
ICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkgPT0g
YmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQoYmFz
aWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZh
cmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CiAKICAgICBtX2Fic3RyYWN0VmFsdWVzLnJl
c2l6ZSgpOwogCkBAIC0xNjEsNiArMTY0LDEwIEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6
OmluaXRpYWxpemUoKQogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2Fs
KGkpLmNsZWFyKCk7CiAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwo
aSkuY2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVu
dHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQudG1wKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdFRhaWwudG1wKGkpLmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxP
cmRlcigpKSB7CkBAIC0xNzUsMTMgKzE4Miw5IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6
OmluaXRpYWxpemUoKQogICAgICAgICBibG9jay0+Y2ZhVGhpbmtzU2hvdWxkVHJ5Q29uc3RhbnRG
b2xkaW5nID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVB
dEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKICAgICAgICAgYmxvY2stPmNmYVN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMo
KTsgKytpKSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLmNs
ZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFy
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFs
dWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICAgICAgYmxvY2stPnZh
bHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0
VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJs
b2NrLT52YWx1ZXNBdEhlYWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdEhlYWRbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0u
Y2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM5LDcgKzI0Miw3IEBAIGJvb2wgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAgICAgY2FzZSBQaGFu
dG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFsdWUgZnJvbSBoZWFkIHRvIHRhaWwuCi0gICAgICAg
ICAgICAgICAgZGVzdGluYXRpb24gPSB2YXJpYWJsZUF0KGluZGV4KTsKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbiA9IGF0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMzA0LDcgKzMwNyw3IEBAIGJvb2wg
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBibG9jay0+
dmFsdWVzQXRUYWlsW2ldID0gdmFyaWFibGVBdChpKTsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdFRhaWxbaV0gPSBhdEluZGV4KGkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChOb2Rl
QWJzdHJhY3RWYWx1ZVBhaXImIHZhbHVlQXRUYWlsIDogYmxvY2stPnNzYS0+dmFsdWVzQXRUYWls
KQpAQCAtMzQzLDYgKzM0Niw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJh
c2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgICAgICBkYXRhTG9nKCIgICBNZXJn
aW5nIGZyb20gIiwgcG9pbnRlckR1bXAoZnJvbSksICIgdG8gIiwgcG9pbnRlckR1bXAodG8pLCAi
XG4iKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRz
KCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpKTsKICAgICBBU1NF
UlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gdG8tPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mVG1wcygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkp
OwogICAgIAogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgIApAQCAtMzUyLDE0ICszNTYs
OSBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBC
YXNpY0Jsb2NrKiB0bykKICAgICAKICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7CiAgICAg
Y2FzZSBUaHJlYWRlZENQUzogewotICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJn
dW1lbnQpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwu
YXJndW1lbnQoYXJndW1lbnQpLCB0by0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50
KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBmcm9tLT52
YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewotICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmxvY2FsKGxvY2Fs
KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoZGVz
dGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5sb2NhbChsb2NhbCksIHRvLT52YXJpYWJsZXNB
dEhlYWQubG9jYWwobG9jYWwpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubG9jYWwobG9jYWwpKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3Rp
bmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5hdChpbmRleCk7CisgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNB
dFRhaWwuYXQoaW5kZXgpLCB0by0+dmFyaWFibGVzQXRIZWFkLmF0KGluZGV4KSwgZnJvbS0+dmFy
aWFibGVzQXRUYWlsLmF0KGluZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oCmluZGV4IDE4NjVlNmExZWZmYzNkYWFlZmU1ODRjYTg2MmM0OWJjMzY4NTg1MDAuLmM1
ZDAyNjg3M2UwMTBkMDdmMzgxMWM2YzRmZWY1NjZlMWNhNzBmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKQEAgLTE1OCwx
MCArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGVyYW5kczxBYnN0cmFjdFZhbHVlPiYg
dmFyaWFibGVzRm9yRGVidWdnaW5nKCk7CiAKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV92YXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZkFyZ3VtZW50cygpOyB9CiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5u
dW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZUbXBzKCkgY29uc3QgeyBy
ZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZUbXBzKCk7IH0KICAgICAKLSAgICBBYnN0cmFjdFZh
bHVlJiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkKKyAgICBBYnN0cmFjdFZhbHVlJiBhdEluZGV4
KHNpemVfdCBpbmRleCkKICAgICB7CiAgICAgICAgIGFjdGl2YXRlVmFyaWFibGVJZk5lY2Vzc2Fy
eShpbmRleCk7CiAgICAgICAgIHJldHVybiBmYXN0Rm9yd2FyZChtX3ZhcmlhYmxlc1tpbmRleF0p
OwpAQCAtMTY5LDE3ICsxNzEsMTcgQEAgcHVibGljOgogCiAgICAgQWJzdHJhY3RWYWx1ZSYgb3Bl
cmFuZChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gdmFyaWFibGVBdCht
X3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOworICAgICAgICByZXR1cm4gYXRJbmRl
eChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOwogICAgIH0KICAgICAKICAgICBB
YnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4g
dmFyaWFibGVBdChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVy
biBhdEluZGV4KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5kZXgpKTsKICAgICB9CiAgICAgCiAg
ICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRleCkpOworICAg
ICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5hcmd1bWVudEluZGV4KGluZGV4KSk7CiAg
ICAgfQogICAgIAogICAgIC8vIENhbGwgdGhpcyBiZWZvcmUgYmVnaW5uaW5nIENGQSB0byBpbml0
aWFsaXplIHRoZSBhYnN0cmFjdCB2YWx1ZXMgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuaAppbmRleCBmNWVlZjJmM2RmNzIxMjlhODM4Yzc2ODZlMjZiOTYwYjUw
ZjU4MWVlLi43YTMzNjY2YWE3MWExZjY2NmM5NGIyOGI2NDQ3NDg0ZDY3YmJiN2Q5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCkBAIC03Nyw2ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgTGF6eUpTVmFsdWUgbmV3U3RyaW5nKEdyYXBoJiwgY29uc3Qg
U3RyaW5nJik7CiAKICAgICBMYXppbmVzc0tpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtub3duVmFsdWUgPyBTcGVjQnl0ZWNvZGVUb3AgOiBTcGVjU3RyaW5nOyB9CiAg
ICAgCiAgICAgRnJvemVuVmFsdWUqIHRyeUdldFZhbHVlKEdyYXBoJikgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUyZGJkZDliOTM3
MGQ2ZGU2NTNjNWE0ODg3MTE3MDBlOGI4NzliLi41MjIzNGI0YTVkM2Y2OTc2YzJmYTk5ODE2ZGNl
MTEwNjgxMDU0ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAK
QEAgLTQ4LDExICs0OCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
LU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291
cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgp
CitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNv
dXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0
aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4
LCB1bnNpZ25lZCBkZmdJUkluZGV4KQogICAgIDogT1NSRXhpdEJhc2Uoa2luZCwgaml0LT5tX29y
aWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3JpZ2luLndhc0hv
aXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAgICAsIG1fdmFs
dWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUlu
ZGV4KQorICAgICwgbV9kZmdJUkluZGV4KGRmZ0lSSW5kZXgpCiAgICAgLCBtX3N0cmVhbUluZGV4
KHN0cmVhbUluZGV4KQogewogICAgIGJvb2wgY2FuRXhpdCA9IGppdC0+bV9vcmlnaW4uZXhpdE9L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCA5ZTliY2VhNDgxYzFk
Njg3Nzk3MmYyNTlkNjJjMWEyMzAwYjJiMTYxLi44Y2U4YjkyMDc5YWY3NTI5OTcwM2YxN2ZkZGFl
MmZlYzNiOWMyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAt
MTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1Z1ByaW50U3Bl
Y3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSosIHZvaWQqLCB2b2lkCiAvLyBUaGlzIHN0cnVjdHVy
ZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGggYnkKIC8vIGdvaW5n
IGludG8gYmFzZWxpbmUgY29kZS4KIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNl
IHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNp
Z25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOworICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpT
VmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklU
KiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01B
WCwgdW5zaWduZWQgZGZnSVJJbmRleCA9IFVJTlRfTUFYKTsKIAogICAgIGZyaWVuZCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQoQ2FsbEZyYW1lKik7CiAKQEAgLTE1
OSw2ICsxNTksNyBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAgICAKICAgICB1
bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV9kZmdJUkluZGV4OwogCiAg
ICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBjb2RlTG9jYXRpb25Gb3JSZXBh
dGNoKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCAxZGYzOTQzMjQxZDVhZjc5MzE5OGVmOWM3
MTI3M2U3NThhMGEyMjZhLi4wODVkYzUzMGIzYmMzNzlmYjRmM2U2MDkxY2I1YzY1MjAyNzU4N2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwCkBAIC0xNTksOSArMTU5LDE1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbEluc3RydWN0aW9u
LmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1l
IyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIoKSA/IExMSW50
OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24p
IDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlv
bikpKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7Ci0gICAgICAgIGNh
c2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgotICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5U
X1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6
OkNhbGw6IHsKKyAgICAgICAgICAgIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBv
cF9jYWxsKQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJ
T04ob3BfY2FsbCk7CisgICAgICAgICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2Rl
SUQoKSA9PSBvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBM
TElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3Jfb3Blbik7CisgICAgICAgICAgICBlbHNl
IGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9uZXh0KQorICAg
ICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0
b3JfbmV4dCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIElu
bGluZUNhbGxGcmFtZTo6Q29uc3RydWN0OgogICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5U
X1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3QpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
MzksNiArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxl
clJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAgfQogICAgIH0K
IAorICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKICAgICByZXR1cm4ganVtcFRhcmdldDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMTAwM2VkNWZkM2ZiYzM4MTYyYzg5MmIzNGM4NDdi
OTI3NjgzZmFlLi42ZTA5MGEzOGJmYzA5NDc1YTdkN2JkNTkxZTI1MWEzZTkzNDY4NTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTEwMSw2ICsxMTAxLDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX2N1cnJlbnROb2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVV
c2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7CisgICAgICAgICAg
ICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmxhenlKU1ZhbHVlKCkuc3BlY3VsYXRlZFR5
cGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU3Ry
aW5nQ2hhckF0OgogICAgICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICAgICAg
Y2FzZSBUb1N0cmluZzoKQEAgLTEzMDUsNyArMTMxMSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVj
dExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6Ci0gICAg
ICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAg
ICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ug
b2YgY29tcGlsYXRpb24uCiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9jdXJyZW50
Tm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSBkdXJpbmcgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAwZDY1ZDhmODlh
ZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiLi45YWU5ODA0Yzc1Yjk1ZWM1NjFlZDJmMWE1
MmI5ZGVjOThjODQ1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkYXRhTG9nRigiKSA9
PSAoJXMgPSAiLCAjcmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRhTG9nKHJpZ2h0KTsgXAogICAg
ICAgICAgICAgZGF0YUxvZ0YoIikgKCVzOiVkKS5cbiIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwK
KyAgICAgICAgICAgIGRhdGFMb2coIlxuXG5cbiIpOyBcCisgICAgICAgICAgICBtX2dyYXBoLmJh
c2VsaW5lQ29kZUJsb2NrRm9yKG51bGxwdHIpLT5kdW1wQnl0ZWNvZGUoKTsgXAogICAgICAgICAg
ICAgZHVtcEdyYXBoSWZBcHByb3ByaWF0ZSgpOyBcCiAgICAgICAgICAgICBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgI2xl
ZnQgIiA9PSAiICNyaWdodCk7IFwKICAgICAgICAgICAgIENSQVNIKCk7IFwKQEAgLTU2OCw2ICs1
NzAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4gZ2V0TG9jYWxQ
b3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAg
ICAgIE9wZXJhbmRzPHNpemVfdD4gc2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9j
ay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFi
bG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRIZWFkLnRt
cChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
T3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKSB8
fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7
CisKKyAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0aW9ucy50bXAoaSkgPSBub3RTZXQ7Cisg
ICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0OworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFi
bGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICAgICAgICAgIFZB
TElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSksIGJsb2Nr
KSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkgfHwgYmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQpAQCAtNzE2LDYgKzcyNiwx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IExvYWRTdG9y
ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAorICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1w
cygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCisgICAgICAgICAgICAg
ICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlvbnMsIE9wZXJh
bmQ6OnRtcChpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCiAgICAgICAgICAgICAgICAgICAgIGJs
b2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlvbnMsIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CkBAIC05NDQsNyArOTU5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY2hlY2tPcGVyYW5kKAogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jaywg
T3BlcmFuZHM8c2l6ZV90PiYgZ2V0TG9jYWxQb3NpdGlvbnMsCi0gICAgICAgIE9wZXJhbmRzPHNp
emVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICAg
ICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIE9wZXJhbmQgb3BlcmFuZCkK
ICAgICB7CiAgICAgICAgIGlmIChnZXRMb2NhbFBvc2l0aW9ucy5vcGVyYW5kKG9wZXJhbmQpID09
IG5vdFNldCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9EU0wucmIKaW5kZXggNGE4YjFlNTgxNDQxZmRhNjg3NmU2NTJjOTg0NjAxYTJiM2I3OWQzNC4u
OTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEwYzgzMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzNyw2ICsxMzcsNyBAQCBtb2R1bGUgRFNMCiAj
aW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiR2V0QnlWYWxIaXN0b3J5Lmgi
CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRh
dGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9NZXRhZGF0YS5yYgppbmRleCA3Y2QxNWQzMTVkNjM5MGFiYTI2MzVlOTYzNTlmODkwZTJlYjcx
YTk1Li5jMDc3NWQ4ZTFiMTA1MDJkZjAxYTc0YWYwYzZkZWI0YTg3NWNjNjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKQEAgLTY3LDYgKzY3LDcgQEAg
Y2xhc3MgTWV0YWRhdGEKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0YWRhdGEpOwog
CiAgICAgcHVibGljOgorICAgICAgICAje29wLm9wY29kZUlEfQogICAgICAgICBNZXRhZGF0YShj
b25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29wIiBpZiBpbml0c30pI3tpbml0c30g
eyB9CiAKICN7ZmllbGRzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9u
LnJiCmluZGV4IDliNWVlOTA5NmVlNzFiMWIwZDNlZDdmN2NkMThkYjA2ZmNiMzVmY2YuLjZiNWE5
NDJmMDgyMzlhNTJlMDY5ZTgwOWRhMjc3YTRlZjhlNjY5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTUzLDcgKzUzLDE3IEBAIGNsYXNzIFNlY3Rp
b24KICAgZW5kCiAKICAgZGVmIHNvcnQhCi0gICAgICBAb3Bjb2RlcyA9IEBvcGNvZGVzLnNvcnQg
eyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/IDAgOiAxIDog
LTEgfQorICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8CisgICAgICAgICAg
cmVzdWx0ID0gbmlsCisgICAgICAgICAgaWYgYS5jaGVja3BvaW50cyBvciBiLmNoZWNrcG9pbnRz
CisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMgd2l0aCBjaGVja3BvaW50cyBzaG91bGQg
aGF2ZSBtZXRhZGF0YTogI3thLm5hbWV9IiBpZiBhLmNoZWNrcG9pbnRzIGFuZCBhLm1ldGFkYXRh
LmVtcHR5PworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2ludHMg
c2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7Yi5uYW1lfSIgaWYgYi5jaGVja3BvaW50cyBhbmQgYi5t
ZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmVzdWx0ID0gYS5jaGVja3BvaW50cyA/IGIu
Y2hlY2twb2ludHMgPyAwIDogLTEgOiAxCisgICAgICAgICAgZWxzaWYKKyAgICAgICAgICAgICAg
cmVzdWx0ID0gYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/IDAgOiAxIDog
LTEgCisgICAgICAgICAgZW5kCisgICAgICAgICAgcmVzdWx0CisgICAgICB9CiAgICAgICBAb3Bj
b2Rlcy5lYWNoKCY6Y3JlYXRlX2lkISkKICAgZW5kCiAKQEAgLTczLDYgKzgzLDE4IEBAIGNsYXNz
IFNlY3Rpb24KICAgICAgIGVuZAogCiAgICAgICBpZiBjb25maWdbOmVtaXRfaW5fc3RydWN0c19m
aWxlXQorICAgICAgICAgIGkgPSAwCisgICAgICAgICAgd2hpbGUgdHJ1ZQorICAgICAgICAgICAg
ICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50cworICAgICAgICAgICAgICAgICAgb3V0IDw8ICJc
biIKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBOVU1CRVJfT0ZfI3tjb25maWdb
Om1hY3JvX25hbWVfY29tcG9uZW50XX1fV0lUSF9DSEVDS1BPSU5UUyAje2l9XG4iCisgICAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICBpICs9
IDEKKyAgICAgICAgICBlbmQKKyAgICAgICAgICBvdXQgPDwgIlxuIgorCiAgICAgICAgICAgb3V0
LndyaXRlKCIjZGVmaW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVudF19
X01FVEFEQVRBX1NJWkUobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAgICAgICAgICAg
d2hpbGUgdHJ1ZQpAQCAtODcsNiArMTA5LDggQEAgY2xhc3MgU2VjdGlvbgogICAgICAgICAgIGVu
ZAogICAgICAgICAgIG91dCA8PCAiXG4iCiAKKworCiAgICAgICAgICAgb3V0LndyaXRlKCIjZGVm
aW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVudF19X01FVEFEQVRBX0FM
SUdOTUVOVChtYWNybykgXFxcbiIpCiAgICAgICAgICAgaSA9IDAKICAgICAgICAgICB3aGlsZSB0
cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CmluZGV4IDY0NTM5MTI3YjhjNzRjODIwMjliMmJiNjE4MGU2OTY5NzFhNjRiYzguLjNmZjkyYjQ1
M2E3MjkyNmRjNzRlY2JkY2Y2ZTMxNGJjZmIzNjhlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC00MywxMzkgKzQzLDEzOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIENvZGVCbG9jazsKLSAgICBjbGFzcyBFdmFs
RXhlY3V0YWJsZTsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgVk07
Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBj
bGFzcyBKU01vZHVsZUVudmlyb25tZW50OwotICAgIGNsYXNzIEpTTW9kdWxlUmVjb3JkOwotICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZTsKLSAgICBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBSZWdpc3Rl
cjsKLSAgICBjbGFzcyBKU1Njb3BlOwotICAgIGNsYXNzIFNvdXJjZUNvZGU7Ci0gICAgY2xhc3Mg
U3RhY2tGcmFtZTsKLSAgICBzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZTsKLSAgICBzdHJ1Y3QgSGFu
ZGxlckluZm87Ci0gICAgc3RydWN0IEluc3RydWN0aW9uOwotICAgIHN0cnVjdCBQcm90b0NhbGxG
cmFtZTsKLQotICAgIGVudW0gRGVidWdIb29rVHlwZSB7Ci0gICAgICAgIFdpbGxFeGVjdXRlUHJv
Z3JhbSwKLSAgICAgICAgRGlkRXhlY3V0ZVByb2dyYW0sCi0gICAgICAgIERpZEVudGVyQ2FsbEZy
YW1lLAotICAgICAgICBEaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50LAotICAgICAgICBXaWxsTGVh
dmVDYWxsRnJhbWUsCi0gICAgICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50LAotICAgICAgICBXaWxs
RXhlY3V0ZUV4cHJlc3Npb24sCi0gICAgfTsKLQotICAgIGVudW0gU3RhY2tGcmFtZUNvZGVUeXBl
IHsKLSAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVFdmFs
Q29kZSwKLSAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVG
dW5jdGlvbkNvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCi0gICAgfTsKLQotICAg
IGNsYXNzIEludGVycHJldGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwotICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwotICAgICAgICBm
cmllbmQgY2xhc3MgVk07Ci0KLSAgICBwdWJsaWM6Ci0gICAgICAgIEludGVycHJldGVyKFZNICYp
OwotICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKLSAgICAgICAgCitjbGFzcyBDb2RlQmxvY2s7Citj
bGFzcyBFdmFsRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZN
OworY2xhc3MgSlNGdW5jdGlvbjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNNb2R1
bGVFbnZpcm9ubWVudDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFzcyBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTsKK2NsYXNzIFJlZ2lzdGVyOworY2xhc3MgSlNTY29wZTsKK2NsYXNzIFNvdXJj
ZUNvZGU7CitjbGFzcyBTdGFja0ZyYW1lOworc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7CitzdHJ1
Y3QgSGFuZGxlckluZm87CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgUHJvdG9DYWxsRnJh
bWU7CisKK2VudW0gRGVidWdIb29rVHlwZSB7CisgICAgV2lsbEV4ZWN1dGVQcm9ncmFtLAorICAg
IERpZEV4ZWN1dGVQcm9ncmFtLAorICAgIERpZEVudGVyQ2FsbEZyYW1lLAorICAgIERpZFJlYWNo
RGVidWdnZXJTdGF0ZW1lbnQsCisgICAgV2lsbExlYXZlQ2FsbEZyYW1lLAorICAgIFdpbGxFeGVj
dXRlU3RhdGVtZW50LAorICAgIFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwKK307CisKK2VudW0gU3Rh
Y2tGcmFtZUNvZGVUeXBlIHsKKyAgICBTdGFja0ZyYW1lR2xvYmFsQ29kZSwKKyAgICBTdGFja0Zy
YW1lRXZhbENvZGUsCisgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCisgICAgU3RhY2tGcmFtZUZ1
bmN0aW9uQ29kZSwKKyAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQorfTsKKworY2xhc3MgSW50ZXJw
cmV0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBD
YWNoZWRDYWxsOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07CisKK3B1YmxpYzoKKyAgICBJ
bnRlcnByZXRlcihWTSAmKTsKKyAgICB+SW50ZXJwcmV0ZXIoKTsKKyAgICAKICNpZiBFTkFCTEUo
Q19MT09QKQotICAgICAgICBDTG9vcFN0YWNrJiBjbG9vcFN0YWNrKCkgeyByZXR1cm4gbV9jbG9v
cFN0YWNrOyB9CisgICAgQ0xvb3BTdGFjayYgY2xvb3BTdGFjaygpIHsgcmV0dXJuIG1fY2xvb3BT
dGFjazsgfQogI2VuZGlmCi0gICAgICAgIAotICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZSBn
ZXRPcGNvZGUoT3Bjb2RlSUQpOworICAgIAorICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlIGdldE9w
Y29kZShPcGNvZGVJRCk7CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGVJRCBnZXRPcGNv
ZGVJRChPcGNvZGUpOworICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bj
b2RlKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIHN0YXRpYyBib29sIGlzT3Bjb2Rl
KE9wY29kZSk7CisgICAgc3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKICNlbmRpZgogCi0g
ICAgICAgIEpTVmFsdWUgZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqIHRoaXNPYmopOwotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1
bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01v
ZHVsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci0gICAgICAgIEpTT2JqZWN0KiBleGVj
dXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1
Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3
VGFyZ2V0KTsKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOwotCi0gICAgICAgIHZvaWQg
Z2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmly
c3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwotCi0gICAgICAg
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdW53aW5kKFZNJiwgQ2FsbEZyYW1lKiYsIEV4Y2Vw
dGlvbiopOwotICAgICAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3du
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKLSAgICAgICAg
TkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rVHlwZSk7Ci0gICAg
ICAgIHN0YXRpYyBTdHJpbmcgc3RhY2tUcmFjZUFzU3RyaW5nKFZNJiwgY29uc3QgVmVjdG9yPFN0
YWNrRnJhbWU+Jik7Ci0KLSAgICAgICAgdm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIs
IFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNp
emVfdCBtYXhTdGFja1NpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5p
dGlhbGl6ZUFuZFJldHVybiB9OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgY2hl
Y2tlZFJldHVybihKU1ZhbHVlIHJldHVyblZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4o
SlNPYmplY3QqIHJldHVyblZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmV0
dXJuVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgICAgICB9Ci0K
LSAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4
ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7Ci0K
LSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUmKTsKLQotICAgICAgICBW
TSYgbV92bTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVN
b2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBK
U01vZHVsZUVudmlyb25tZW50Kik7CisgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNW
YWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU09iamVjdCogZXhlY3V0ZUNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1Rhcmdl
dCk7CisgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworCisgICAgdm9pZCBnZXRBcmd1bWVudHNE
YXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlcklu
ZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CisKKyAgICBORVZFUl9JTkxJTkUgSGFu
ZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNlcHRpb24qKTsKKyAgICB2b2lk
IG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKKyAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhD
YWxsRnJhbWUqLCBEZWJ1Z0hvb2tUeXBlKTsKKyAgICBzdGF0aWMgU3RyaW5nIHN0YWNrVHJhY2VB
c1N0cmluZyhWTSYsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYpOworCisgICAgdm9pZCBnZXRT
dGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6
ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhTdGFja1NpemUgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIEV4ZWN1dGlvbkZs
YWcgeyBOb3JtYWwsIEluaXRpYWxpemVBbmRSZXR1cm4gfTsKKyAgICAKKyAgICBzdGF0aWMgSlNW
YWx1ZSBjaGVja2VkUmV0dXJuKEpTVmFsdWUgcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlQocmV0dXJuVmFsdWUpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBKU09iamVjdCogY2hlY2tlZFJldHVybihKU09iamVjdCogcmV0dXJu
VmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOworICAgICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9y
UmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFt
ZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUq
LCBjb25zdCBBcmdMaXN0Jik7CisKKyAgICBKU1ZhbHVlIGV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3Vy
ZSYpOworCisgICAgVk0mIG1fdm07CiAjaWYgRU5BQkxFKENfTE9PUCkKLSAgICAgICAgQ0xvb3BT
dGFjayBtX2Nsb29wU3RhY2s7CisgICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CiAjZW5kaWYK
LSAgICAgICAgCisgICAgCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiAh
RU5BQkxFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKLSAgICAg
ICAgc3RhdGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8g
TWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQuCisgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNv
ZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQuCiAjZW5k
aWYgLy8gIUVOQUJMRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEFTU0VSVF9FTkFCTEVE
CiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSAgICB9OwotCi0gICAg
SlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwotCi0g
ICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpCi0gICAgewotICAgICAgICAvLyBXZSB3YW50IHRoZSBuZXcgZnJhbWUg
dG8gYmUgYWxsb2NhdGVkIG9uIGEgc3RhY2sgYWxpZ25lZCBvZmZzZXQgd2l0aCBhIHN0YWNrCi0g
ICAgICAgIC8vIGFsaWduZWQgc2l6ZS4gQWxpZ24gdGhlIHNpemUgaGVyZS4KLSAgICAgICAgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCi0gICAg
ICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAotICAgICAgICAgICAgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykgLSBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKLQotICAgICAgICAvLyBBbGlnbiB0aGUg
ZnJhbWUgb2Zmc2V0IGhlcmUuCi0gICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zm
c2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAotICAgICAgICAgICAgc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7Ci0g
ICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0g
cGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHNpemVPZlZh
cmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4QXJndW1lbnRz
ID0gMHgxMDAwMDsKLSAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNl
ZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBz
aXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwg
Vk0mLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyk7Ci0gICAgdm9pZCBsb2FkVmFyYXJncyhK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUqIGZpcnN0RWxlbWVudERlc3QsIEpTVmFsdWUgc291cmNl
LCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cFZhcmFy
Z3NGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1l
KiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZz
ZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRo
aXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhl
Y0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBm
aXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKLSAgICB2b2lkIHNldHVwRm9yd2Fy
ZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBD
YWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cEZv
cndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVp
bnQzMl90IGxlbmd0aCk7Cit9OworCitKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqLCBFQ01BTW9kZSk7CisKK2lubGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFy
YXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVu
c2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQoreworICAgIC8vIFdlIHdhbnQgdGhl
IG5ldyBmcmFtZSB0byBiZSBhbGxvY2F0ZWQgb24gYSBzdGFjayBhbGlnbmVkIG9mZnNldCB3aXRo
IGEgc3RhY2sKKyAgICAvLyBhbGlnbmVkIHNpemUuIEFsaWduIHRoZSBzaXplIGhlcmUuCisgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisg
ICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCisgICAgICAgIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpIC0gQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisKKyAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zm
c2V0IGhlcmUuCisgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCisg
ICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7CisgICAgcmV0dXJuIENhbGxGcmFtZTo6
Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7
Cit9CisKK3Vuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFy
Z3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOworc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAweDEwMDAwOwordW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFy
YXJncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIFZNJiwgSlNWYWx1ZSBhcmd1bWVudHMs
IHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7
Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyk7Cit2b2lkIGxvYWRW
YXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSogZmlyc3RFbGVtZW50RGVzdCwgSlNWYWx1
ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBW
YXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxG
cmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwordm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRo
aXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhl
Y0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBm
aXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJn
dW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxG
cmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJn
dW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2Fs
bGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1aW50MzJfdCBs
ZW5ndGgpOwogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCBjNmU2MWI4OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmLi44YjNh
MjM4YTRkYWYxZmM2NzkxNDBkOGJiZWM3NzA5Yjg1NjhiYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBtX2xhYmVsc1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCldID0gbGFi
ZWwoKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBk
YXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAi
IGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBh
dCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKQEAgLTQzOCw2ICs0Mzgs
OSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfaW50ZXJuYWxfZmllbGQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfaW50ZXJu
YWxfZmllbGQpCiAKKyAgICAgICAgREVGSU5FX09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAg
IERFRklORV9PUChvcF9pdGVyYXRvcl9uZXh0KQorCiAgICAgICAgIERFRklORV9PUChvcF9yZXQp
CiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCiAgICAgICAgIERFRklORV9PUChvcF91bnNp
Z25lZCkKQEAgLTUyNSw3ICs1MjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICAgICAgcmFyZUNhc2VQcm9maWxlID0gJnJhcmVDYXNlUHJvZmlsZXMuYXQo
Ynl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6
OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgc2xvdyBj
b2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zm
c2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRpbmcgc2xv
dyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVn
T2Zmc2V0KCkpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1f
ZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRlY29kZVNsb3dQYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKSwgbGFiZWwoKSk7CkBAIC01ODksNiArNTkyLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Nj
b3BlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3RvX3Njb3BlKQogCisgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
U0xPV19PUCh1bnNpZ25lZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5jKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChkZWMpCkBAIC02MjYsOCArNjMyLDggQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgaWYgKEpJVEludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQXQgIiwgZmlyc3RUbywgIiBzbG93
OiAiLCBpdGVyIC0gbV9zbG93Q2FzZXMuYmVnaW4oKSwgIlxuIik7CiAKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RU
byAhPSBpdGVyLT50bywgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2Rl
Z2VuLiIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUbyA9PSAo
aXRlciAtIDEpLT50bywgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdl
bi4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93
Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5vZmZzZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5v
dCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEp
LT50by5vZmZzZXQoKSwgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdl
bi4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAg
ICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcygmcmFyZUNhc2VQ
cm9maWxlLT5tX2NvdW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2
ZDcxMTgyYWEwNzI5YTI3NDkxMDA0ZjQ1ZTFlYTZhYzEuLjgzYWUxYTdiNjk4ZDY5MzNkYmI4YTAz
NzE5MDQ5ZWMyMjU4MThmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk3LDYgKzI5
Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNl
cHRpb25IYW5kbGVycygpOwogCisgICAgICAgIHZvaWQgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAg
ICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CisKICAgICAg
ICAgdm9pZCBhZGRTbG93Q2FzZShKdW1wKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25z
dCBKdW1wTGlzdCYpOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKCk7CkBAIC02NzYsNiArNjc5
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93
UGF0aEZ1bmN0aW9uKTsKIAorICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKwogICAgICAgICB2b2lkIGVtaXRS
aWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAg
dm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKQEAgLTkxMSw2ICs5
MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9j
YWxsczsKICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsKKyAgICAgICAgSGFzaE1hcDxC
eXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50TGFiZWxzOwogICAgICAgICBWZWN0b3I8
SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5
VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAKaW5kZXggZTFlNTY1ZGM1MjQ5ZjZhY2ZkYWEyNGJmZmI0NDcxZmZjYjIwYjg2
Ni4uMDkxZWU5Mzg1MzA1ZDM3OTdjMmFkZWI2YTM2MTBiZTAzNTliMTIxMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKEpTVkFM
VUU2NCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5o
IgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCkBAIC00Miw4ICs0NCw4IEBACiAjaW5jbHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUu
aCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9y
cy5oIgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCisjaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSw3ICs1Myw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNv
bnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbkZvcihi
eXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCks
IHJlZ1QwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC02MSwyMCArNjMsMjEgQEAg
c3RkOjplbmFibGVfaWZfdDwKICwgdm9pZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3Qg
T3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogeworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnQg
PSBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBhcmdDb3VudCA9IGJ5dGVjb2Rl
Lm1fYXJnYzsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRl
Y29kZS5tX2FyZ3YpOworICAgIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPSBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludCk7CisgICAgaW50IHJlZ2lz
dGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNh
bGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3Bf
Y2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3Vt
ZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSksIHJlZ1QwKTsKICAgICAgICAgSnVtcCBkb25lID0g
YnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdU
MCwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNl
ZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQcm9maWxlRm9y
KG1ldGFkYXRhLCBjaGVja3BvaW50KS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwog
ICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0z
MihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50SW5jbHVkaW5n
VGhpcyksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIH0KIAogCkBA
IC0yMDcsNyArMjEwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIHsKICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5tX2Nh
bGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5dGVjb2RlLCBt
X2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKIAogICAgIC8qIENhbGxlciBhbHdheXM6CiAg
ICAgICAgIC0gVXBkYXRlcyBjYWxsRnJhbWVSZWdpc3RlciB0byBjYWxsZWUgY2FsbEZyYW1lLgpA
QCAtMjM0LDkgKzIzNyw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogICAg
IHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpKTsKIAotICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUp
KSB7CisgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsK
ICAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwg
YWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CkBA
IC0zODAsNiArMzgyLDE4NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGNvbXBpbGVP
cENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2Nh
bGxMaW5rSW5mb0luZGV4KyspOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVu
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlv
biA9IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7Cisg
ICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxOYXJyb3c+
OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lk
ZTE2PjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0
PFdpZGUzMj47CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9KSgpOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZh
c3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJh
bmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgY29t
cGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5k
ZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoaXRl
cmF0b3IpIGlzIGluIHJlZ1QwCisKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZ2bSgp
LnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAgCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZ1QwKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVj
b2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX25leHQpOworCisgICAgZmFzdENhc2UubGluayh0aGlzKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9w
SXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsK
KyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKworCisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wSXRlcmF0b3JPcGVuPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVj
b2RlLm1fbmV4dDsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5
TmFtZXMtPm5leHQuaW1wbCgpOworCisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwg
bmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2Vu
LnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0
RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgo
KSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8
TmFycm93PjsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0PFdpZGUxNj47CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3JfbmV4dF90
cnlfZmFzdDxXaWRlMzI+OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9uZXh0LCByZWdUMCk7CisgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5j
aElmTm90RW1wdHkocmVnVDApOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RG
dW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNo
MzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgZ2VuZXJp
Y0Nhc2UubGluayh0aGlzKTsKKyAgICBvcjgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5t
X2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcykpOworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVy
YXRvck5leHQ+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNoZWNr
cG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09i
amVjdCkgaW4gcmVnVDAKKworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJl
ZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgR1BSUmVnIGRvbmVHUFIgPSByZWdUMTsKKyAg
ICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0IGdldCBieSBp
ZCBiZWxvdy4KKyAgICBtb3ZlKHZhbHVlR1BSLCBpdGVyUmVzdWx0R1BSKTsKKworICAgIHsKKyAg
ICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXJSZXN1bHRHUFIpOworCisgICAg
ICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCk7CisgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKKyAg
ICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJv
cGVydHlOYW1lcy0+bmV4dC5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNW
YWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kb25lLCBkb25lR1BSKTsKKyAgICAgICAgY2hlY2twb2ludFJlYWNoZWQo
KTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7Cisg
ICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOworICAgICAgICBjb25zdCBib29sIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGZhbHNlOworICAgICAgICBKdW1wTGlzdCBp
dGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiks
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7
CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOworCisgICAg
ICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsKKyAgICB9CisKKyAgICBmYXN0Q2FzZS5saW5r
KHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxs
U2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5m
b0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwor
CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsK
KyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9u
ZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKworICAgICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CisgICAgICAg
IG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKKyAgICAg
ICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CisK
KyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5k
b25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlk
c1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJv
ZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOworICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBT
bG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2JqZWN0Lmxpbmso
dGhpcyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3Vs
dElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkp
OworICAgIH0KKworICAgIHsgICAKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9IGJ5dGVjb2RlLm1fdmFsdWU7CisgICAg
ICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107
CisKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1
bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9CisKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCmluZGV4IDkwNjk2Y2JlYzEwZTM5M2I5OTcwZjBlYjIwMTE4ZDIxOTc0YzM1MjUu
LmQxNDBhYWM5YmUyZDU0MDNkMWJjMGQ5OTEyYWU5ZTEwNWY4MGQ0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQor
eworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQor
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKK3sK
KyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNh
NDFlNWUxYmEyNzU2NTUzM2Y0Li4yN2E1N2Y0ZWUzNjE2NGFjZThlMzlmMzY4Y2U3NjViZjE1ZGRm
YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjYsNyArMjYs
OSBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkJ5dGVjb2Rl
UHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKKyNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMTA1LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2Vk
VGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQogCiBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewotICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgdWludDMyX3QgbG9j
YXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLmJpdHMo
KTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAKICAgICAvLyBGSVhN
RTogSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5k
IHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwgZnJhbWUgb24KQEAgLTE4Myw2ICsxODUsMjUgQEAgQUxX
QVlTX0lOTElORSBib29sIEpJVDo6aGFzQW55U2xvd0Nhc2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5
PiYgc2xvd0Nhc2VzLCBWZWN0b3IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lk
IEpJVDo6Y2hlY2twb2ludFJlYWNoZWQoKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9i
eXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBo
b3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIp
OworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IG1fY2hlY2twb2ludExhYmVscy5hZGQobV9ieXRlY29kZUluZGV4LCBsYWJlbCgpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitpbmxp
bmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wIGp1bXApCit7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBz
aG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28g
dGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0
ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVj
a3BvaW50KCkgKyAxKTsKKworICAgIGF1dG8gaXRlciA9IG1fY2hlY2twb2ludExhYmVscy5maW5k
KG1fYnl0ZWNvZGVJbmRleCk7CisgICAgQVNTRVJUKGl0ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxz
LmVuZCgpKTsKKyAgICBqdW1wLmxpbmtUbyhpdGVyLT52YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmFkZFNsb3dDYXNlKEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQo
bV9ieXRlY29kZUluZGV4KTsgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1
cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlz
IHNldC4KQEAgLTMxOSw3ICszNDAsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIGlmICghc2hvdWxkRW1pdFByb2Zp
bGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YS5tX3Byb2ZpbGUpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodmFsdWVQcm9maWxl
Rm9yKG1ldGFkYXRhLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSk7CiB9CiAKIGlubGlu
ZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2Vs
bCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2FlMTUw
Y2M2NjEwNzYyYmFjYzhiZTQyMjA3M2FhZDY0YWIzMTE5MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMz
ZGZiYmYwZTMzNjBkMzZmNTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0xMzQsNiArMTM0LDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xv
CiAgICAgQVNTRVJUKHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKIH0KIAordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5
MDIyNjY1Li45ZmNjNDFkZWM0NTgyYzk2NTI5MjM2NTVkYThmMzAyNjk1ZGY3MDE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTU1LDYgKzE1NSw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlv
bkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRpb24oVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmso
SlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lO
VEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93
RXJyb3IoQ29kZUJsb2NrKikgV1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggOGRl
YTdmMjc4ZTc2NjJlNTAzMTRjZWI5YjA4MzM5Zjg3YmZkYTQ5Ny4uOGJiMThjMjFmNDJhOWY1N2Nk
YzA1M2ZkZGU4YzQ1MDFkNDhlM2M2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcnJh
eUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRl
ICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
c0lubGluZXMuaCIKQEAgLTgyLDYgKzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKICAgICBTbG93
UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIGRhdGFMb2dMbklm
KExMSU5UX1RSQUNJTkcgJiYgT3B0aW9uczo6dHJhY2VMTEludFNsb3dQYXRoKCksICJDYWxsaW5n
IHNsb3cgcGF0aCAiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsgXAogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNpZm5kZWYgTkRFQlVHCkBAIC02OTMsNyAr
Njk1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3Qp
CiB9CiAKIAotc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBi
YXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0
YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFBy
b3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3
NDMsMzkgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB7CiAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICBpZiAoc2xvdC5p
c1Vuc2V0KCkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRVbnNldE1v
ZGUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1
cmUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7
Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0
cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEu
c2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQog
Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNW
YWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZh
bHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRh
dGEpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
R2V0QnlJZD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZp
ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwotICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwotICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkg
PSByZXN1bHQ7Ci0gICAgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OworCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZh
bHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQogICAgICAgICAmJiAh
c2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xk
U3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
Lm1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubW9kZSkgewogICAgICAgICAg
ICAgY2FzZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwor
ICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5
SWRNb2RlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlByb3RvTG9hZDoK
LSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1
cmVJRCA9IDA7CkBAIC03OTksMzUgKzc5NiwxMDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNs
ZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CisgICAgICAgICAgICBtZXRh
ZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKIAogICAgICAgICAgICAgLy8g
UHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAg
ICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7
CisgICAgICAgICAgICBtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hl
YWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewot
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVj
dHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1
Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVk
T2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICB2bS5oZWFwLndy
aXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KFVOTElLRUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5n
ICYmIHNsb3QuaXNWYWx1ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFk
YXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgewogICAgICAg
ICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlVmFsdWUpOwogCi0gICAgICAgICAg
ICBpZiAoISgtLW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5n
KSkKKyAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcp
KQogICAgICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGdsb2JhbE9iamVj
dCwgdm0sIGNvZGVCbG9jaywgcGMsIG1ldGFkYXRhLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlz
SlNBcnJheShiYXNlVmFsdWUpICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkg
ewogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldEFy
cmF5TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0Nl
bGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0
aE1vZGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2Zp
bGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwog
ICAgICAgICB9CiAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAg
fQogCi0gICAgTExJTlRfUFJPRklMRV9WQUxVRShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsK
KyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9v
cGVuX2dldF9uZXh0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9v
cGVuX2dldF9uZXh0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKy8vICAgIGRhdGFMb2dMbigi
Q2FsbGluZyBzbG93IG9wZW5fZ2V0X25leHQiKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgUmVnaXN0ZXImIG5leHRSZWdpc3RlciA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpOworCisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
aXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBuZXh0UmVnaXN0ZXIgPSByZXN1
bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLm1fYnVj
a2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0
X2RvbmUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0
X2RvbmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5n
IHNsb3cgbmV4dF9nZXRfZG9uZSIpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0
ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7CisgICAgLy8gV2UgdXNlIG1fdmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0
dXJuIHZhbHVlIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBv
ciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4KKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0
dXJuID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIFJlZ2lz
dGVyJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25l
KTsKKworICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0
dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGRvbmVSZWdpc3RlciA9IHJlc3Vs
dDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNr
ZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRf
dmFsdWUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0
X3ZhbHVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGlu
ZyBzbG93IG5leHRfZ2V0X3ZhbHVlIik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
SXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciBy
ZXR1cm4gdmFsdWUgdG1wIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBhc3QgdGhpcyBieXRl
Y29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4KKyAgICBSZWdpc3RlciYgdmFs
dWVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAg
ICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gdmFsdWVSZWdpc3Rlci5qc1ZhbHVlKCk7CisKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xv
YmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFk
YXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIHZhbHVlUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX3ZhbHVlUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIAorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xNTYzLDcgKzE2MzQsNyBA
QCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgT3AmJiBieXRlY29kZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSAwKQogewog
ICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgpAQCAt
MTU3MSwxNiArMTY0MiwxNiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxs
KENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZQogICAgIC8vIC0gSWYg
cG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCiAgICAgLy8gLSBSZXR1cm4g
YSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwg
ZnJhbWUuCiAgICAgCi0gICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fY2FsbGVlKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgY2FsbGVlRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgp
KTsKICAgICAKLSAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gYnl0ZWNv
ZGUubV9hcmd2OworICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBzdGFj
a09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hlY2twb2ludEluZGV4KTsKICAg
ICAKLSAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNv
ZGUubV9hcmdjKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRl
eCkpOwogICAgIGNhbGxlZUZyYW1lLT51bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgY2FsbGVlRnJhbWUtPnNldENh
bGxlckZyYW1lKGNhbGxGcmFtZSk7CiAgICAgCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgIHJldHVybiBzZXRVcENhbGwoY2FsbGVlRnJhbWUs
IGtpbmQsIGNhbGxlZUFzVmFsdWUsICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbyk7CisgICAgcmV0
dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJmNhbGxMaW5r
SW5mb0ZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jYWxsKQpAQCAtMTYwNCw2ICsxNjc1LDI4IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BDb25z
dHJ1Y3Q+KCksIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxp
bmcgc2xvdyBvcGVuX2NhbGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JPcGVu
PigpLCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworCisvLyAg
ICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0X2NhbGwiKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMt
PmFzPE9wSXRlcmF0b3JOZXh0PigpLCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck5leHQ6OmNvbXB1
dGVOZXh0KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1l
X2Zvcl92YXJhcmdzKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xOTkwLDYgKzIwODMsNDQg
QEAgc3RhdGljIHZvaWQgaGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0
ZWNvZGUubV9kc3QpID0gcmVzdWx0OwogfQogCitzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck9w
ZW5DaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wSXRlcmF0b3JPcGVuJiBieXRlY29kZSkKK3sKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBpdGVyYXRv
ciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7
CisgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSlNWYWx1ZSBu
ZXh0ID0gaXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KSA9IG5leHQ7Cit9CisKK3N0YXRpYyB2b2lkIGhh
bmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck5leHQmIGJ5dGVj
b2RlLCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZSYgc2lkZVN0YXRlKQoreworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50
SW5kZXggPSBzaWRlU3RhdGUuYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCk7CisKKyAgICBhdXRv
JiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUp
OworICAgIGF1dG8gaXRlcmF0b3JSZXN1bHRPYmplY3QgPSBzaWRlU3RhdGUudG1wc1tPcEl0ZXJh
dG9yTmV4dDo6bmV4dFJlc3VsdF07CisgICAgYXV0byBuZXh0ID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpOyAgICAKKworICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5vdCBPU1IgZXhpdCB0byBhIGNoZWNrcG9p
bnQgZm9yIGZhc3QgY2FzZXMuIik7CisKKyAgICBhdXRvJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsKKyAgICBpZiAoY2hlY2twb2ludEluZGV4
ID09IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7CisgICAgICAgIGRvbmVSZWdpc3RlciA9IGl0
ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmRv
bmUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0K
KworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAoZG9uZVJlZ2lzdGVyLmpzVmFsdWUoKS50
b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgdmFsdWVSZWdpc3RlciA9IGpzVW5kZWZp
bmVkKCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRP
YmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUpOworfQorCiBp
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5zdHJ1Y3Rpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtOjpSZWYgcGMpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIWNvZGVCbG9jay0+dm0oKS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkpOwpAQCAt
MjA2Niw2ICsyMTk3LDE1IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0
aF9jaGVja3BvaW50X29zcl9leGl0KENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgICAgIGhhbmRs
ZVZhcmFyZ3NDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9w
VGFpbENhbGxWYXJhcmdzPigpLCAqc2lkZVN0YXRlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JPcGVu
Q2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9y
T3Blbj4oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHQ6IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCh2bSwgY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKSwgKnNpZGVTdGF0ZS5nZXQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwMyw2ICsyMjQz
LDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTQ2VsbCogY2VsbCkKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxs
KTsKIH0KIAorZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUg
dmFsdWUpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUg
dmFsdWUpCit7CisgICAgZGF0YUxvZ0xuKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworfQorCiBl
eHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludF9jcmFzaCgpCiB7CiAg
ICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCBiNTY5OWMzMGQyY2RhZmE0ZjkzYzNhOWYwOTgwNTcxYzgx
NzY3YzFhLi5mOWEzNGRhYjM2ZDlmYTUyNzU2YTE5OGIyZDc0Zjc1MmM1MzhhYzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBtYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bj
b2RlTmFtZSwgc2l6ZSkKICAgICBzaXplKGRlZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBkZWZp
bmVXaWRlMzIsIG1hY3JvIChmKSBmKCkgZW5kKQogZW5kCiAKLW1hY3JvIGNhbGxUYXJnZXRGdW5j
dGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNh
bGxQdHJUYWcpCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNo
LCBjYWxsZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAg
ICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKICAgICBlbHNlCkBAIC0xMDQ1LDExICsxMDQ1
LDExIEBAIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQCiAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJl
ciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCiAgICAgICAgICMgY3Jh
c2hlcy4KICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBlbmQKICAgICBkZWZpbmVPU1JFeGl0UmV0
dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJD
YWxsKCkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNo
KQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCiBtYWNybyBwcmVwYXJl
Rm9yUmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQpA
QCAtMTExNyw3ICsxMTE3LDExIEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgam1wIGNhbGxlZSwgY2FsbFB0clRh
ZwogZW5kCiAKLW1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCittYWNybyBzbG93UGF0aEZv
ckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xv
d1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJl
cGFyZUNhbGwpCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGNhbGxDYWxsU2xvd1BhdGgoCiAgICAg
ICAgIHNsb3dQYXRoLAogICAgICAgICAjIFRob3NlIGFyZSByMCBhbmQgcjEKQEAgLTExMjYsNyAr
MTEzMCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyCiAgICAgICAgICAgICBtb3ZlIGNhbGxl
ZUZyYW1lUHRyLCBzcAogICAgICAgICAgICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0
LCBTbG93UGF0aFB0clRhZykKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNh
bGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRG
dW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRy
VGFnKQogICAgICAgICBlbmQpCiBlbmQKIApAQCAtMjAxNiw3ICsyMDIwLDcgQEAgbWFjcm8gZG9D
YWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBmcmFt
ZVNsb3dQYXRoLCBzbG8KICAgICAgICAgICAgIHN1YnAgcjEsIENhbGxlckZyYW1lQW5kUENTaXpl
LCBzcAogICAgICAgICBlbmQKICAgICBlbmQKLSAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQor
ICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKIAogCkBAIC0yMDc5LDcgKzIw
ODMsNyBAQCBlbmQpCiAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJu
ZWQuCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNs
b3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKICAgICAg
ICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLApAQCAtMjA4OCw3ICsyMDkyLDcgQEAgX2xs
aW50X29wX2NhbGxfZXZhbDoKICAgICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxp
bnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1Bh
dGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTE2LAogICAgICAgICB3
aWRlMTYsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDk3LDcgKzIxMDEsNyBAQCBfbGxpbnRf
b3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBf
bGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xv
d1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTMyLAogICAgICAg
ICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMTA3LDcgKzIxMTEsNyBAQCBfbGxp
bnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKIAogCiBjb21tb25PcChsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6ZSkKLSAgICBkaXNwYXRjaEFmdGVyQ2Fs
bChzaXplLCBPcENhbGxFdmFsLCBtYWNybyAoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUs
IE9wQ2FsbEV2YWwsIG1fcHJvZmlsZSwgbV9kc3QsIG1hY3JvICgpCiAgICAgICAgIGRpc3BhdGNo
T3Aoc2l6ZSwgb3BfY2FsbF9ldmFsKQogICAgIGVuZCkKIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5k
ZXggODE4OTFjMjJlNjE4M2M4MDQyYWJkZmNlOGQ0MzkxMWFmNDFmNjU0YS4uNzRjNDgwZGYyMTIx
NzE2NTUwYzVmZDRmMDg0NGFiMTEwOGZkYzgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTY3LDcg
KzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRh
ZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCiAKICAgICAgICAg
bWV0YWRhdGEodDUsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0NSwg
dDEsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1
LCB0MSwgdDApCiAgICAgICAgIGdldChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQpAQCAtNzcsMTYgKzc3LDE3IEBAIGVuZAogCiAKICMgQWZ0ZXIgY2FsbGluZywgY2Fs
bGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgot
bWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKK21h
Y3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW1BC
XSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2RzdCwgdDMpCisgICAgZ2V0KHNp
emUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0MykKICAgICBzdG9yZWkgcjEs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSByMCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQzKQotICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIxLCByMCkKICAgICBkaXNwYXRjaCgp
CisKIGVuZAogCiBtYWNybyBjQ2FsbDIoZnVuY3Rpb24pCkBAIC02MzIsOSArNjMzLDkgQEAgbWFj
cm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1
ZUZpZWxkTmFtZSkKICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQpCittYWNybyB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKICAgICBzdG9y
ZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBU
YWdPZmZzZXRbbWV0YWRhdGFdCi0gICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCisg
ICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1l
JS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQogZW5kCiAKIApAQCAtMTM3OCw3
ICsxMzc5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdl
dEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBsb2FkaSBPcEdldEJ5SWRE
aXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eUlkRGlyZWN0LCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3Qs
IG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlk
RGlyZWN0U2xvdzoKQEAgLTE0MDAsNyArMTQwMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
CiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93
CiAgICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2Fk
TW9kZS5jYWNoZWRTbG90W3Q1XSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAg
IHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0aDoKQEAgLTE0MTMsNyArMTQx
NCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0
dGVyZmx5W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAs
IC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIEludDMyVGFn
LCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRh
ZywgdDApCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgpAQCAt
MTQyMSw3ICsxNDIyLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkaSBPcEdl
dEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDVd
LCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFn
LCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIFVu
ZGVmaW5lZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1
LCBVbmRlZmluZWRUYWcsIDApCiAgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0
QnlJZERlZmF1bHQ6CkBAIC0xNDMwLDcgKzE0MzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dAogICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0
TW9kZS5jYWNoZWRPZmZzZXRbdDVdLCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0
MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAg
ICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFNsb3c6CkBAIC0xNDQwLDcgKzE0NDEsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNl
dHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEo
dDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCByMSwgcjApCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihy
MSwgcjApCiAKIGVuZCkKQEAgLTE1MTgsNyArMTUxOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQogICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9h
ZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBheWxvYWQpCisgICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkK
ICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTI3LDcgKzE1MjgsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3Jh
dGNoMwogICAgICAgICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4
XQogICAgICAgICBzdG9yZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwg
OF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCBzY3JhdGNoMywgc2NyYXRj
aDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3Jh
dGNoMywgc2NyYXRjaDIpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU3Miw3
ICsxNTczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFs
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vcEdldEJ5VmFsTm90RW1wdHk6
CiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUs
IHQyLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIs
IHQxKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAg
LTE1ODUsNyArMTU4Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9p
bnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNp
emUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0
MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCBy
MSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTk1NywxMCArMTk1OCwxMCBA
QCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwg
cHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsg
VGFnT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAogICAgICAgICBwcmVwYXJlQ2FsbCgl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwg
SlNFbnRyeVB0clRhZykKKyAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpT
RW50cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxs
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVw
YXJlQ2FsbCkKKyAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29k
ZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI4OCw3ICsyMjg5LDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJv
bVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9t
U2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAg
ICBlbmQKIApAQCAtMjI5Nyw3ICsyMjk4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
ZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAg
ICAgICAgbG9hZHAgVGFnT2Zmc2V0W3QwXSwgdDEKICAgICAgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFt0MF0sIHQyCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDEpCi0gICAgICAgIHZhbHVl
UHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCiAgICAgICAgIHJldHVybih0
MSwgdDIpCiAgICAgZW5kCiAKQEAgLTIzMDUsNyArMjMwNiw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5k
W3Q1XSwgdDMKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsg
VGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCiAgICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25t
ZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAsIHQzLCA4XSwgdDIKLSAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJu
KHQxLCB0MikKICAgICBlbmQKIApAQCAtMjU5NCw2ICsyNTk1LDE1IEBAIGxsaW50T3BXaXRoUmV0
dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIGVuZCkKIAorbGxpbnRPcChvcF9p
dGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gp
CisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9yX29wZW4sIHNpemUpCisg
ICAgYnJlYWsKK2VuZCkKKworbGxpbnRPcChvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxh
YmVsKG9wX2l0ZXJhdG9yX25leHQsIHNpemUpCisgICAgYnJlYWsKK2VuZCkKIAogbGxpbnRPcFdp
dGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX2Jhc2UsIHQwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQppbmRleCBhZTJlMzc3M2ZmZGNjNDA2NzRjN2FhYzBjMWQ0ZmU2Y2QwZmI3ODU5Li44NjEz
NmU4NTdjOWY3ODIyYjI0NDZjNjI2YmZkYzdhM2RmYmIyZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNjgs
MjYgKzY4LDI2IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwg
bWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKICAgICBmbihtYWNybyAodmFsdWUpCiAgICAgICAgIG1v
dmUgdmFsdWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdDEsIHQzKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBtX3Byb2ZpbGUsIHQxLCB0MykKICAgICAgICAgZ2V0KG1fZHN0LCB0MSkKICAgICAgICAg
c3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVu
ZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdmFsdWUpCi0g
ICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1
Y2tldHNbbWV0YWRhdGFdCittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxl
TmFtZSwgbWV0YWRhdGEsIHZhbHVlKQorICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRhZGF0YV0KIGVuZAogCiAjIEFm
dGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJz
IGFyZSBub3QgdXNlZC4KLW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAgICAgbG9h
ZFBDKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6
Om1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBCCi0gICAgZ2V0KHNpemUsIG9wY29kZVN0
cnVjdCwgbV9kc3QsIHQxKQorICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShz
aXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgdDIsIHIwKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZERpcmVj
dFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0s
IHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdl
dEJ5SWREaXJlY3RTbG93OgpAQCAtMTM0OCw1MyArMTM0OCw1OSBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCisjIFRoZSBiYXNlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MworbWFjcm8gcGVy
Zm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVBy
b2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRh
dGEodDIsIHQxKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
Lm1vZGVbdDJdLCB0MQotICAgIGdldChtX2Jhc2UsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGIgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKIC5v
cEdldEJ5SWREZWZhdWx0OgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkRl
ZmF1bHQsIC5vcEdldEJ5SWRQcm90b0xvYWQKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdl
dEJ5SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZGkgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURb
dDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9m
ZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQw
KQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQog
CiAub3BHZXRCeUlkUHJvdG9Mb2FkOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1v
ZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3RoCiAgICAgbG9hZGkgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKLSAgICBiaW5lcSB0
MywgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1f
bW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKLSAgICBsb2Fk
cCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hl
ZFNsb3RbdDJdLCB0MworICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVN
ZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MworICAgIGJpbmVx
IHQzLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90
b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisg
ICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQog
ICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBj
b25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBt
b3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVN
ZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0
aXogdDAsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93Ci0gICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFw
ZU1hc2ssIC5vcEdldEJ5SWRTbG93CisgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUs
IHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCisgICAgYnRpeiB0
MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNP
YmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQw
Ci0gICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFi
ZWwKICAgICBvcnEgbnVtYmVyVGFnLCB0MAotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQy
LCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CiAgICAgbG9hZGkgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVx
IHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0Miwg
VmFsdWVVbmRlZmluZWQpCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9k
ZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0
MCwgdDEsIHNsb3dMYWJlbAorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQp
CiAKK2VuZAorCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9i
YXNlLCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5v
cEdldEJ5SWRTbG93KQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2Rl
TWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1
cm4pCisKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dldF9ieV9pZCkKICAgICBkaXNwYXRjaCgpCkBAIC0xNDAyLDcgKzE0MDgsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4
aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQot
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCkKICAgICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE0
OTcsNyArMTUwMyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRC
eVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgbWFjcm8gZmluaXNo
R2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAg
ICAgICAgIHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5VmFsLCB0NSwgcmVzdWx0KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5k
CiAKQEAgLTE1NTgsNyArMTU2NCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdl
dEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJv
ZmlsZSwgdDUsIHQyKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3Rv
cmFnZToKQEAgLTE1NzEsNyArMTU3Nyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3Ny
UmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9i
eV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5VmFsLCB0NSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwg
dDUsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTk0OCw2ICsxOTU0LDMwIEBAIG1h
Y3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBnZXR1KQogLmRvbmU6CiBlbmQK
IAorbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHByZXBhcmVDYWxsLCBzaXplLCBk
aXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgbWV0YWRhdGEodDUsIHQwKQorICAgIGdldENhbGxl
ZSh0MCkKKworICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQorICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2Fs
bFNsb3cKKworICAgIGdldEFyZ3VtZW50U3RhcnQodDMpCisgICAgbHNoaWZ0aSAzLCB0MworICAg
IG5lZ3AgdDMKKyAgICBhZGRwIGNmciwgdDMKKyAgICBzdG9yZXEgdDIsIENhbGxlZVt0M10KKyAg
ICBnZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyh0MikKKyAgICBzdG9yZVBDKCkKKyAgICBz
dG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10K
KyAgICBtb3ZlIHQzLCBzcAorICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpT
RW50cnlQdHJUYWcpCisgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhG
b3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorZW5k
CisKIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0
LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCkBAIC0xOTU2LDI0ICsxOTg2LDE5IEBA
IG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBw
cmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVj
dCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAgIGVuZCwgbWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0
KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQy
Ci0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQotICAgICAgICBi
cW5lcSB0MywgdDIsIC5vcENhbGxTbG93Ci0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBtX2FyZ3YsIHQzKQotICAgICAgICBsc2hpZnRpIDMsIHQzCi0gICAgICAgIG5lZ3AgdDMKLSAg
ICAgICAgYWRkcCBjZnIsIHQzCi0gICAgICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQotICAgICAg
ICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVQQygp
Ci0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2Fk
T2Zmc2V0W3QzXQotICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRb
dDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rp
b24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNF
bnRyeVB0clRhZykKLQotICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwo
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBh
cmVDYWxsKQorICAgICAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICAgICAgZ2V0KG1f
Y2FsbGVlLCB0MCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFy
dChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCBkc3Qp
CisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50Q291bnQoZHN0KQorICAg
ICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgZHN0KQorICAgICAgICBl
bmQKKworICAgICAgICBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1
Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRh
dGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudCkKICAgICBl
bmQpCiBlbmQKIApAQCAtMjI3Niw3ICsyMzAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMK
ICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MSwgdDAsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IHQ1LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUs
IHQ1LCB0MikKICAgICAgICAgcmV0dXJuKHQyKQogICAgIGVuZAogCkBAIC0yMjg0LDE0ICsyMzA5
LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNj
b3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNj
b3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAgICAgbG9hZHEgW3QwXSwgdDAK
ICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29w
ZSwgbV9wcm9maWxlLCB0NSwgdDApCiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIAogICAg
IG1hY3JvIGdldENsb3N1cmVWYXIoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0
YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRxIEpTTGV4aWNhbEVudmlyb25t
ZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRG
cm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBt
X3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCkBAIC0yNTUx
LDcgKzI1NzYsNiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfY29udHJvbF9mbG93
LCBPcFByb2ZpbGVDb250cm9sRmxvdywgbWFjcm8gKHNpemUsCiAgICAgZGlzcGF0Y2goKQogZW5k
KQogCi0KIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVu
Z3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRpIFBheWxv
YWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1Ymkg
MSwgdDAKQEAgLTI1NjcsNiArMjU5MSwxNDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jl
c3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIGVu
ZCkKIAogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JP
cGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBt
ZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93
UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8g
ZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxT
bG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6
ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxs
T3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBh
c3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4
cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yT3BlbkdlbmVyaWMKKyAgICBkaXNw
YXRjaCgpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXRCeUlkQ2hl
Y2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0QnlJZFN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNy
byBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9zeW1ib2xJdGVyYXRvciwgZHN0KQorICAg
IGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAg
ICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JPcGVuLCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAg
ZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAg
ICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKworICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jf
b3BlbiwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVu
LCBtX2l0ZXJhdG9yUHJvZmlsZSwgbV9pdGVyYXRvciwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBz
aXplLCBnb3RvR2V0QnlJZENoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3Vt
ZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKwor
LmdldEJ5SWRTdGFydDoKKyAgICBtYWNybyBzdG9yZU5leHRBbmREaXNwYXRjaCh2YWx1ZSkKKyAg
ICAgICAgbW92ZSB2YWx1ZSwgdDIKKyAgICAgICAgZ2V0KG1fbmV4dCwgdDEpCisgICAgICAgIHN0
b3JlcSB0MiwgW2NmciwgdDEsIDhdCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAg
IGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxs
TWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdworICAgIHBlcmZvcm1HZXRCeUlE
SGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0
ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFu
ZERpc3BhdGNoKQorCisuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93OgorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCisgICAgZGlz
cGF0Y2goKQorCitlbmQpCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwg
T3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9uZXh0LCB0MCkKKyAgICBidHFueiB0MCwg
dDAsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgbWV0YWRhdGEoYTIsIHQ1KQorICAgIG1hY3Jv
IGZhc3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zh
c3RfbmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMTYoKQorICAgICAgICBjYWxs
U2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KQorICAgIGVuZAorICAgIG1h
Y3JvIGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5
X2Zhc3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUoZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwg
ZmFzdFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9wKCkgZW5kKQorCisgICAgIyBGSVhNRTog
V2Ugc2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNzZW1ibHkgc2luY2UgaXQncyB0aGUgImZh
c3QiIGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHByIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMs
IC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgZGlzcGF0Y2goKQorCisuaXRlcmF0b3JOZXh0R2Vu
ZXJpYzoKKyAgICBtYWNybyBnb3RvR2V0RG9uZUNoZWNrcG9pbnQoKQorICAgICAgICBqbXAgLmdl
dERvbmVTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAg
Z2V0KG1fbmV4dCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRp
bmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JOZXh0LCBtX3N0
YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGlu
Z1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKyAgICAjIFVz
ZSBtX3ZhbHVlIHNsb3QgYXMgYSB0bXAgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIHdyaXRlIHRvIGl0
IGxhdGVyLgorICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3JfbmV4dCwgX2xsaW50X3Nsb3dfcGF0
aF9pdGVyYXRvcl9uZXh0X2NhbGwsIE9wSXRlcmF0b3JOZXh0LCBtX25leHRSZXN1bHRQcm9maWxl
LCBtX3ZhbHVlLCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9HZXREb25lQ2hlY2tw
b2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQs
IGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0RG9uZVN0YXJ0OgorICAgIG1h
Y3JvIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUoZG9uZVZhbHVlKQorICAgICAgICAjIHVzZSB0
MCBiZWNhdXNlIHBlcmZvcm1HZXRCeUlESGVscGVyIHVzdWFsbHkgcHV0cyB0aGUgZG9uZVZhbHVl
IHRoZXJlIGFuZCBvZmZsaW5lYXNtIHdpbGwgZWxpZGUgdGhlIHNlbGYgbW92ZS4KKyAgICAgICAg
bW92ZSBkb25lVmFsdWUsIHQwCisgICAgICAgIGdldChtX2RvbmUsIHQxKQorICAgICAgICBzdG9y
ZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgICAgICBqbXAgLmdldFZhbHVlU3RhcnQKKyAgICBlbmQK
KworCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAgYnRxbnogdDMsIG5v
dENlbGxNYXNrLCAuZ2V0RG9uZVNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJh
dG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3cs
IHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKQorCisuZ2V0RG9uZVNs
b3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRf
ZG9uZSkKKyAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhf
dHJhbXBvbGluZSkKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2RvbmUsIHQwKQorCisgICAgIyBz
dG9yZURvbmVBbmRKbXBUb0dldFZhbHVlIHB1dHMgdGhlIGRvbmVWYWx1ZSBpbnRvIHQwCisuZ2V0
VmFsdWVTdGFydDoKKyAgICAjIEJyYW5jaCB0byBzbG93IGlmIG5vdCBtaXNjIHByaW1pdGl2ZS4K
KyAgICBidHFueiB0MCwgfjB4ZiwgLmdldFZhbHVlU2xvdworICAgIGJ0aXogdDAsIDB4MSwgLm5v
dERvbmUKKyAgICBkaXNwYXRjaCgpCisKKy5ub3REb25lOgorICAgIG1hY3JvIHN0b3JlVmFsdWVB
bmREaXNwYXRjaCh2KQorICAgICAgICBtb3ZlIHYsIHQyCisgICAgICAgIGdldChtX3ZhbHVlLCB0
MSkKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgY2hlY2tTdGFja1Bv
aW50ZXJBbGlnbm1lbnQodDAsIDB4YmFkZGIwMWUpCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBl
bmQKKworICAgICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9p
ZCBhYm92ZSBtYXkgaGF2ZSBjbG9iYmVyZWQgdDMuCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92
YWx1ZSwgdDMpCisgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciBy
ZXN1bHQgaXMgYSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBi
ZWZvcmUuCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVN
b2RlTWV0YWRhdGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0
YSwgc3RvcmVWYWx1ZUFuZERpc3BhdGNoKQorCisuZ2V0VmFsdWVTbG93OgorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQorICAgIGRpc3Bh
dGNoKCkKK2VuZCkKKworCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxk
LCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4p
CiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9iYXNlLCB0MSkKICAgICBnZXR1KHNpemUsIE9wR2V0
SW50ZXJuYWxGaWVsZCwgbV9pbmRleCwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIKaW5kZXggOGQ3NjcxMTZjMDU0ZTVlYTY2NGVmNDA2MmM1NmYy
NjA1ZTBkOGI0NS4uNTg5YWUwZTBmM2VkMzRiNjYxZTg1NjJiY2EyOTgwMmVjMTBlNWI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgpAQCAtNjI5
LDcgKzYyOSw3IEBAIGVuZAogCiBjbGFzcyBOb2RlCiAgICAgZGVmIHZhbGlkYXRlCi0gICAgICAg
IHJhaXNlICJVbnJlc29sdmVkICN7ZHVtcH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAg
ICAgcmFpc2UgIlVucmVzb2x2ZWQgJyN7ZHVtcH0nIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCiAg
ICAgZW5kCiAgICAgCiAgICAgZGVmIHZhbGlkYXRlQ2hpbGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGI4ZGU5NjU1ODJm
N2Q5MTI3MTMzN2Q1NDMxOTAzZTgzMThjMjZmNDcuLjkzZTdlNzM2MDFiZjczZTdkYWQ3NTRlYWJj
MTU2M2Q4YTBlODcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9y
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVy
YXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CkBAIC0xNTMsOCArMTU0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBSRVRVUk5fUFJP
RklMRUQodmFsdWVfXykgXAogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyh2YWx1ZV9fLCBQUk9G
SUxFX1ZBTFVFKHJldHVyblZhbHVlX18pKQogCi0jZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWUp
IGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisjZGVmaW5lIFBST0ZJTEVf
VkFMVUUodmFsdWVfXykgXAorICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9maWxl
KQorCisjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwK
KyAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAK
IHN0YXRpYyB2b2lkIHRocm93QXJpdHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKQEAgLTk2NSw2ICs5NjksMTI4
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCkKICAgICBSRVRVUk4oanNCb29s
ZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKSkpOwogfQogCit0ZW1wbGF0ZTxP
cGNvZGVTaXplIHdpZHRoPgorU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9v
cGVuX3RyeV9mYXN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMs
IHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIC8vIERvbid0IHNldCBQQzsgd2UgY2FuJ3QgdGhy
b3cgYW5kIGl0J3MgcmVsYXRpdmVseSBzbG93LgorICAgIEJFR0lOX05PX1NFVF9QQygpOworCisg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck9wZW4sIHdpZHRo
PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck9w
ZW46Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworICAgIEpTVmFsdWUgaXRlcmFibGUgPSBHRVRf
QyhieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCk7CisgICAgUFJPRklMRV9WQUxVRV9JTihp
dGVyYWJsZSwgbV9pdGVyYWJsZVByb2ZpbGUpOworICAgIEpTVmFsdWUgc3ltYm9sSXRlcmF0b3Ig
PSBHRVRfQyhieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgYXV0byYg
aXRlcmF0b3IgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisKKyAgICBhdXRvIHByZXBhcmVG
b3JGYXN0QXJyYXlJdGVyYXRpb24gPSBbJl0geworICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAgICAgLy8gVGhp
cyBpcyBjb3JyZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVja2VkIHRoZSB3YXRjaHBvaW50IGlzIHN0
aWxsIHZhbGlkLgorICAgICAgICBKU0Z1bmN0aW9uKiBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0g
anNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAg
aWYgKCFzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWM7IAorCisgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpICE9IHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBX
ZSBzaG91bGQgYmUgZ29vZCB0byBnby4KKyAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRh
ZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8
IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAgICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkg
PSBKU1ZhbHVlKCk7CisgICAgICAgIGF1dG8qIGl0ZXJhdGVkT2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oaXRlcmFibGUpOworICAgICAgICB7CisgICAgICAgICAgICBpdGVyYXRvciA9IEpTQXJy
YXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1
cmUoKSwgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CisgICAgICAgIH0K
KyAgICAgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYXRvci5qc1ZhbHVlKCksIG1faXRlcmF0b3JQ
cm9maWxlKTsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICB9
OworCisgICAgaWYgKGl0ZXJhYmxlLmluaGVyaXRzPEpTQXJyYXk+KHZtKSkgeworICAgICAgICBp
ZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbigpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RB
cnJheSkKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkpOworICAgIH0KKworICAgIC8vIFJl
dHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5l
cmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7
CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBj
LCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK3Rl
bXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0
ZXJhdG9yX25leHRfdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgQkVHSU4oKTsKKworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JOZXh0LCB3aWR0aD4oKTsKKyAg
ICBhdXRvJiBtZXRhZGF0YSA9ICpyZWludGVycHJldF9jYXN0PE9wSXRlcmF0b3JOZXh0OjpNZXRh
ZGF0YSo+KG1ldGFkYXRhUHRyKTsKKworICAgIEFTU0VSVCghR0VUKGJ5dGVjb2RlLm1fbmV4dCku
anNWYWx1ZSgpKTsKKyAgICBKU09iamVjdCogaXRlcmF0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihH
RVQoYnl0ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgpKTs7CisgICAgSlNDZWxsKiBpdGVyYWJs
ZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCkuYXNDZWxsKCk7CisgICAgaWYg
KGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0s
IGl0ZXJhdG9yKSkgeworICAgICAgICBpZiAoYXV0byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNB
cnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQ
cm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChhcnJheS0+c3RydWN0dXJlSUQoKSk7CisKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEu
bV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7
CisgICAgICAgICAgICBhdXRvJiBpbmRleFNsb3QgPSBhcnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZp
ZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KTsKKyAgICAgICAgICAgIGludDY0X3Qg
aW5kZXggPSBpbmRleFNsb3QuZ2V0KCkuYXNBbnlJbnQoKTsKKyAgICAgICAgICAgIEFTU0VSVCgw
IDw9IGluZGV4ICYmIGluZGV4IDw9IG1heFNhZmVJbnRlZ2VyKCkpOworCisgICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlOworICAgICAgICAgICAgYm9vbCBkb25lID0gaW5kZXggPT0gLTEgfHwgaW5k
ZXggPj0gYXJyYXktPmxlbmd0aCgpOworICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fZG9uZSkg
PSBqc0Jvb2xlYW4oZG9uZSk7CisgICAgICAgICAgICBpZiAoIWRvbmUpIHsKKyAgICAgICAgICAg
ICAgICAvLyBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVyZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBp
cyBhIHByaW1pdGl2ZS4KKyAgICAgICAgICAgICAgICBpbmRleFNsb3Quc2V0V2l0aG91dFdyaXRl
QmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5k
ZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBhcnJheS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5kZXgpKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgICAg
ICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBtX3ZhbHVlUHJvZmlsZSk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJl
IGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGlu
ZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIEdFVChieXRlY29kZS5tX3ZhbHVlKSA9IHZhbHVlOworICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRl
cmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8vIFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8g
dHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNl
ZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0
aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7
CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8TmFycm93PihjYWxsRnJhbWUsIHBj
LCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3JfbmV4dF90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Ns
b3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRh
dGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTMyPihjYWxs
RnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfdmFsKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3MTM1ZTJiNzg0YWI2OGRiNWY1NThmYTc4
NTA0Y2FiMDk2NDNjNjEuLjdhYjA4YTJmYWQ2OWE0YjBkNDU5MjM3NzkzNzVkY2Q4YjJlZTBhMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CkBAIC0yNDYsNiArMjQ2LDggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19v
YmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0
aW9uKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfaWQpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwpOworLy8gU0xPV19QQVRIX0hJRERF
Tl9ERUNMKGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QpOworLy8gU0xPV19QQVRIX0hJRERFTl9ERUNM
KGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9kZWxfYnlfdmFsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3RyY2F0KTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsKQEAgLTI4Myw2
ICsyODUsMTggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0
aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVm
ZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3ByZWFkKTsKIAordGVtcGxh
dGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEgg
aXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMs
IHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFU
SCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqLCBjb25z
dCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJh
bWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKKwordGVtcGxhdGU8
T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRl
cmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZv
aWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBp
dGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlv
biogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUq
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKKwogdXNpbmcgU2xvd1Bh
dGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlwZShTTE9XX1BBVEggKikoQ2FsbEZyYW1lKiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNk
OGJiYjRmODc1YmIzODE4YzIyZDNlLi42ODc0ZWM3OTAzNzU4Y2Y5ZGY0NDM5YTYyMzkwNjFjZjI3
MDU4OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAK
QEAgLTMzMCw2ICszMzAsMjQgQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMg
aW50cmluc2ljKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitPcHRpb25hbDxJdGVyYXRpb25L
aW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQorewor
ICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzoK
KyAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiBJdGVy
YXRpb25LaW5kOjpWYWx1ZXM7CisgICAgY2FzZSBBcnJheUtleXNJbnRyaW5zaWM6CisgICAgY2Fz
ZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6
OktleXM7CisgICAgY2FzZSBBcnJheUVudHJpZXNJbnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFy
cmF5RW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OkVudHJp
ZXM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9Cit9
CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCA2YmZmZjkwMDYzY2UyZDdkOGFjMjA1
NDJlOGE4ZDdlMThjNDJiYWU5Li43MWJhM2FhZDM1OTY5NTZhZmMyZDBhYmZjNmZkMWRlMTdhZjFl
ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtMTg3
LDYgKzE4Nyw4IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7CiAgICAgRGF0YVZpZXdTZXRG
bG9hdDY0LAogfTsKIAorT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJ
bnRyaW5zaWMoSW50cmluc2ljKTsKKwogY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5z
aWMpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKaW5kZXggNTk5ZTc3NGIwM2RkM2U1YmE2ZDRkN2ZhMzRi
Yjk4YTk2ODdlYzYwOS4uNGZkMGExMTY1MjVjZGM1MzJhNTNkMGI4YjVhY2I1MzM4N2E4ZGJiNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgK
QEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJ
dGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUg
a2luZCk7CisgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBr
aW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBpdGVyYXRl
ZE9iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpKSk7CisgICAgfQog
ICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwg
U3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQyYzUzNzc3Y2NkZWM1ZmNkNGRiODEwZDE4NTRmYTYwYzlm
NDgxZWQuLmQzMDJiMTg2NTNlMzg0OTc4OTJiNjA1ZmExMjhhOTljMGY5NGYwZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIyNSw2ICsyMjUsNyBA
QCBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKFZNJikgY29uc3Q7CisgICAgYm9vbCBpc0NhbGxh
YmxlKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJiwgQ2FsbFR5cGUmLCBDYWxs
RGF0YSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYpIGNvbnN0OwogICAgIGJv
b2wgaXNDb25zdHJ1Y3RvcihWTSYsIENvbnN0cnVjdFR5cGUmLCBDb25zdHJ1Y3REYXRhJikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCA1YjNmZjhhYzQ0ZTY1NzhhZWVmZjY5YzFjZmRiZWJlYWJhZDgwYWY3Li42MmY5
ZDI0ZjE1ZDA3MjQ1YWQ3NzZjNDg3OWQyMDdmMTU1N2NhYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTgyNyw2ICs4Mjcs
MTMgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGdW5jdGlvbihWTSYgdm0pIGNvbnN0CiAgICAg
cmV0dXJuIGFzQ2VsbCgpLT5pc0Z1bmN0aW9uKHZtKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNvbnN0Cit7CisgICAgQ2FsbFR5cGUgdW51c2VkVHlwZTsK
KyAgICBDYWxsRGF0YSB1bnVzZWREYXRhOworICAgIHJldHVybiBpc0NhbGxhYmxlKHZtLCB1bnVz
ZWRUeXBlLCB1bnVzZWREYXRhKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJs
ZShWTSYgdm0sIENhbGxUeXBlJiBjYWxsVHlwZSwgQ2FsbERhdGEmIGNhbGxEYXRhKSBjb25zdAog
ewogICAgIGlmICghaXNDZWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5o
CmluZGV4IGU4YjIzY2U1OTlkMzYyZGM2NWYzM2Y4ZWYyM2FkOGY1ZDZkOTcxMWIuLmIyNTAzNTY5
Yzg0MjI1NjAxMTQxYTgwY2Y1OTg0OGY1ZDY3M2I3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FzdC5oCkBAIC02MCwxMyArNjAsMTMgQEAgaW5saW5lIFRvIGpzQ2FzdChKU1Zh
bHVlIGZyb20pCiAvLyBTcGVjaWZpYyB0eXBlIG92ZXJsb2Fkcy4KICNkZWZpbmUgRk9SX0VBQ0hf
SlNfRFlOQU1JQ19DQVNUX0pTX1RZUEVfT1ZFUkxPQUQobWFjcm8pIFwKICAgICBtYWNybyhKU0lt
bXV0YWJsZUJ1dHRlcmZseSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUsIEpTVHlw
ZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlKSBcCi0gICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9y
LCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlw
ZSkgXAogICAgIG1hY3JvKEpTU3RyaW5nSXRlcmF0b3IsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRv
clR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUpIFwKICAgICBtYWNybyhKU09iamVj
dCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0T2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRmluYWxP
YmplY3QsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlLCBKU1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkg
XAogICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6
SlNGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhJbnRlcm5hbEZ1bmN0aW9uLCBKU1R5cGU6Oklu
dGVybmFsRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkludGVybmFsRnVuY3Rpb25UeXBlKSBcCiAgICAg
bWFjcm8oSlNBcnJheSwgSlNUeXBlOjpBcnJheVR5cGUsIEpTVHlwZTo6RGVyaXZlZEFycmF5VHlw
ZSkgXAorICAgIG1hY3JvKEpTQXJyYXlJdGVyYXRvciwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JU
eXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVm
ZmVyLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSwgSlNUeXBlOjpBcnJheUJ1ZmZlclR5cGUpIFwK
ICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlldywgRmlyc3RUeXBlZEFycmF5VHlwZSwgTGFzdFR5
cGVkQXJyYXlUeXBlKSBcCiAgICAgbWFjcm8oSlNQcm9taXNlLCBKU1R5cGU6OkpTUHJvbWlzZVR5
cGUsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDI2YWEwZDdjNmVkZmE2M2UzYzhmZjYy
MDhmNjI1ZjU3MDM2ODczZjAuLjExNzNhYTA4OGRjYjc2YzA0ZmU0YjVmYzBiMWE0OTM5MzM5MWU3
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTU1OSwxMCArNTU5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewog
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3du
ZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcuc3RyaW5nKCksIGFycmF5UHJv
dG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwotICAgIG1fYXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT52
YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNp
YykpOwotICAgICAgICB9KTsKKyAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5zZXQodm0s
IHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgdm0ucHJvcGVydHlOYW1lcy0+
dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5z
aWMpKTsKIAogICAgIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmluaXRMYXRlcigKICAgICAg
ICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CkBAIC0xNzQ5LDcg
KzE3NDYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUludEZ1bmN0
aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGFyc2VGbG9hdEZ1bmN0aW9u
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1RvU3RyaW5nRnVu
Y3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0
aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVG
dW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDJjMjhlOGJmNmNhNGU3M2I1NmNkYTM3NzRiMjE3NjQ3
MWE5ZjA1MTMuLjBhY2RmYWVkOWU5YWRmYzIzOGFiN2MyMzQyZTM1NDkzMGFhNjkyMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjk5
LDcgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpT
RnVuY3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9uOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwotICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFs
dWVzRnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1
bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKQEAgLTYw
OCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiog
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJv
dG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdG
dW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhp
cyk7IH0KKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rp
b24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQ
cm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIG5ld1Byb21pc2VD
YXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2
ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLmdldCh0
aGlzKTsgfQpAQCAtNjE5LDYgKzYxOSw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBudW1i
ZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3RvVG9T
dHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsgfQogICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsg
fQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29uc3Q7CisgICAg
SlNGdW5jdGlvbiogYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCk7IH0KICAgICBKU09iamVjdCogcmVn
RXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFBy
b3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9H
bG9iYWxHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29k
ZUdldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKaW5kZXggOTk2OTRkMDEyN2JhZTFjZWE1Y2Y2M2ZhOWNkZDk3NzAwMGNiN2FhNC4uZmI0
MGZjOTUwNzZhYzUwYTBhMzk0ZjU4YzUzZWIxY2JkYjA2ZmM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC0xMTksNiArMTE5LDggQEAgY29uc3Rl
eHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KFVu
c2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAwMCwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRhaWxEZWxldGVkRnJhbWVzU2l6ZSwgMTI4
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCisgICAgdihCb29sLCB1c2VJdGVyYXRpb25JbnRy
aW5zaWNzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICBcCiAgICAgdihCb29sLCB1c2VP
U0xvZywgZmFsc2UsIE5vcm1hbCwgIkxvZyBkYXRhTG9nKClzIHRvIG9zX2xvZyBpbnN0ZWFkIG9m
IHN0ZGVyciIpIFwKICAgICAvKiBkdW1wRGlzYXNzZW1ibHkgaW1wbGllcyBkdW1wREZHRGlzYXNz
ZW1ibHkuICovIFwKICAgICB2KEJvb2wsIGR1bXBEaXNhc3NlbWJseSwgZmFsc2UsIE5vcm1hbCwg
ImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFsbCBKSVQgY29tcGlsZWQgY29kZSB1cG9uIGNvbXBpbGF0
aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5k
ZXggNzY0YWQwNjVhYzAxMWUzM2MzMjM4Y2Q5ZGE5NTM5YzE1ODM5MjNlNS4uOWMyY2U3YWZhZTZl
MzhlN2E2MDgwMjZmNTE3NzExMGUzYzg1NTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjY4LDYgKzEyNjgsOCBAQCB2b2lkIFN0cnVjdHVy
ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29uc3QKIHZvaWQgU3RydWN0dXJlOjpkdW1wQnJpZWYoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
Q1N0cmluZyYgc3RyaW5nKSBjb25zdAogewogICAgIG91dC5wcmludCgiJSIsIHN0cmluZywgIjoi
LCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBpZiAoaW5kZXhpbmdUeXBlKCkgJiBJbmRl
eGluZ1NoYXBlTWFzaykKKyAgICAgICAgb3V0LnByaW50KCIsIiwgSW5kZXhpbmdUeXBlRHVtcChp
bmRleGluZ1R5cGUoKSkpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6ZHVtcENvbnRleHRIZWFkZXIo
UHJpbnRTdHJlYW0mIG91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09w
ZXJhdG9yT3ZlcmxvYWRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJs
b2Fkcy5oCmluZGV4IDM1N2JhMmZhMmY3OTI5YTZhOTk4YTlhNGVmMTRkMmJlNTc1NDYzNzEuLjU2
YWJjNGI1M2VjOWZhYjYwNzViZjZkMmViYmJlZDFmMzNjZGY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKKysrIGIvU291cmNlL1dURi93
dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaApAQCAtNTksMyArNTksOSBAQAogCiAjZGVm
aW5lIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5U
RUdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9SRUxBVElPTkFMX09QRVJBVE9SU19GT1JfRU5VTV9D
TEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCiAKKyNkZWZpbmUgT1ZF
UkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgZW5h
YmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dI
RU4oZW51bU5hbWUsIHwsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVSTE9BRF9PUEVSQVRP
Ul9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCAmLCBlbmFibGVFeHByZXNzaW9uKSBcCisg
ICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgXiwgZW5h
YmxlRXhwcmVzc2lvbikgXAorCisjZGVmaW5lIE9WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZP
Ul9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhlbnVtTmFtZSkgT1ZFUkxPQURfQklUV0lTRV9P
UEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgc3RkOjppc19pbnRlZ3JhbF92
PFQ+KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCA5ZGM5ODljNTViNDM0ZWZmNmZkM2VmNGRhM2E1MjNjN2ZkNTczYWIyLi5iNDliZTU0MDk0
NGQyOGI4YTdhYjk4ZWMwZDE3NzEwY2I3ODg2NjY1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA0LTE1
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZGVz
aWduIGhvdyB3ZSBkbyBpdGVyYXRpb24gZm9yIGtub3duIHR5cGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJl
c3MvY3VzdG9tLWl0ZXJhdG9ycy5qczoKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKGl0ZXIu
cmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KToKKyAgICAgICAg
KGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50
ZXJmYWNlQnJlYWtUZXN0UmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWNvbnRh
aW5pbmctZm9yLW9mLW9uLW1hcC5qczoKKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoaS5sZXQu
di5vZi5maW5kKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9m
LW9uLXNldC5qczoKKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoc2V0IGFkZCk6CisgICAgICAg
ICogc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qczoKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCBkb25lKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
Lm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgICogc3RyZXNzL29zci1mcm9tLWZv
ci1vZi12YWx1ZS1nZXR0ZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0LnJldHVy
bi5nZXQgdmFsdWUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChp
LmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
cmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24t
b2JqZWN0LmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0
dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mcm9tLWRv
bmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCBkb25lKToKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1
cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tbmV4
dC1pbi1mb3Itb2YtaGVhZGVyLmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6Cisg
ICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90
aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzOgorICAgICAgICAoaS5s
ZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQgdmFsdWUpOgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNoKToKKwogMjAyMC0wNC0xNCAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIGFsbCBsb3cgZXhl
Y3V0YWJsZSBtZW1vcnkgd2FzbSB0ZXN0cyBvbiBhcm02NApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMKaW5kZXggNTVl
Y2MwYmZjZjkxOWNhY2FlN2ZkMTVkZGI0MGIxNGZkY2E5NGVkYS4uMjAxMmI5MTI4NTBmNTgxMTY3
ZmJkMzEwNTA1OWI3NmQ3NjYzYjZkOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCkBAIC0zLDEwICszLDEyIEBA
IGZ1bmN0aW9uIGZvbygpIHsKICAgICB2YXIgYXJyYXkgPSBbXTsKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDI1MDAwOyBpKyspCiAgICAgICAgIGFycmF5LnB1c2goaSk7Ci0gICAgCisKICAgICB2
YXIgcmVzdWx0ID0gMDsKLSAgICBmb3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgYXJyYXkuZW50cmll
cygpKQorICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpIHsKKyAg
ICAgICAgcHJpbnQoa2V5ICsgIiAiICsgJHZtLmluZGV4aW5nTW9kZShhcnJheSkpOwogICAgICAg
ICByZXN1bHQgKz0ga2V5ICsgdmFsdWUgKyBhcnJheVtrZXldOworICAgIH0KICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJh
dG9ycy5qcyBiL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKaW5kZXggZmQ2NDEz
ZmUzYjVlOTAzYWZmZTM4MDNmZDAwNGMwY2IxZjFjNjRmMy4uZDNkMWJkN2U4NThlODc0ZmJkMTEz
ZDgyZjkyMTFlYTRiZDVlZjdiNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0
ZXJhdG9ycy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCkBAIC0y
Miw3ICsyMiw3IEBAIGZvciAodmFyIHZhbHVlIG9mIGl0ZXIpIHsKICAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhy
b3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1
cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtNTMsNyArNTMsNyBAQCB0cnkgewogICAgIH0KIH0g
Y2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVy
YXRpb24uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsK
KyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJv
cjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTEwOCwxMCArMTA4LDEwIEBAIHRyeSB7CiAg
ICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9va2lu
ZyB1cCBuZXh0LiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiAr
IGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJF
cnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdh
cyBjYWxsZWQiKTsKIAogCiAKQEAgLTEzNiw3ICsxMzYsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0
Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IGxvb2tpbmcgdXAgcmV0dXJu
LiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAg
ICAgIHRocm93IGU7CiB9CiAKIApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdHJ5IHsKICAgICB9CiB9
IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBuZXh0IGlzIGNhbGxl
ZC4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAg
ICAgICB0aHJvdyBlOwogfQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJl
dHVybiBpcyBjYWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVk
Iik7CiAKIAogCkBAIC0xODMsNyArMTgzLDcgQEAgdmFyIGl0ZXIgPSB7CiAgICAgfSwKICAgICBy
ZXR1cm46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKLSAgICAg
ICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRocm93IG5ldyBF
cnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKICAgICB9CiB9OwogCkBAIC0xOTMsNyArMTkzLDcg
QEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVy
cm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVy
cm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxl
ZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVkLiI7CkBAIC0yMTAsNyAr
MjEwLDcgQEAgdmFyIGl0ZXIgPSB7CiAgICAgfSwKICAgICByZXR1cm46IGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1
cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxs
ZWQiKTsKICAgICB9CiB9OwogdHJ5IHsKQEAgLTIxOCw4ICsyMTgsOCBAQCB0cnkgewogICAgICAg
ICBicmVhazsKICAgICB9CiB9IGNhdGNoIChlKSB7Ci0gICAgaWYgKFN0cmluZyhlKSAhPT0gIkVy
cm9yOiByZXR1cm4gaXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9y
IHRocm93bjogIiArIGU7CisgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gd2Fz
IGNhbGxlZCIpCisgICAgICAgIHRocm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0
aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVkLiI7CkBAIC0yNTUsMTAgKzI1NSwxMCBA
QCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdChub3RJdGVyYXRvclJlc3VsdCkg
ewogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9
PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3Qu
IikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7Cisg
ICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAocmV0dXJuQ2FsbGVkKQotICAgICAg
ICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogfQogCiBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFj
ZUVycm9yVGVzdFJldHVybihub3RJdGVyYXRvclJlc3VsdCkgewpAQCAtMjgyLDcgKzI4Miw3IEBA
IGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVz
dWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJpbmco
ZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAg
ICAgfQogICAgIGlmICghcmV0dXJuQ2FsbGVkKQogICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVy
biBpcyBub3QgY2FsbGVkLiI7CkBAIC0zMTMsNyArMzEzLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJ
bnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQog
ICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIlR5cGVFcnJvcjog
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCi0gICAgICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhy
b3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJv
cjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zv
ci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXkt
bWl4ZWQtdmFsdWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0OThhNjA0MzNkZjJkYzE3NTNhOWQ3Yjg4Yjk2
YmQzMjQwMDZmODEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJy
YXktbWl4ZWQtdmFsdWVzLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIHRlc3QoYXJyYXkp
IHsKKyAgICBsZXQgc3VtID0gMDsKKyAgICBmb3IgKGxldCB2IG9mIGFycmF5KSB7CisgICAgICAg
IGlmICh0eXBlb2YgdiA9PT0gIm51bWJlciIpCisgICAgICAgICAgICBzdW0gKz0gdjsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHN1bTsKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
KTsKKworbGV0IGFycmF5ID0gWzEsMiwzLDQsInN0cmluZyJdOworZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTU7ICsraSkgeworICAgIGlmICh0ZXN0KGFycmF5KSAhPT0gMTApCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigpOworfQorCisKK2FycmF5ID0gWzEsMiwzLDQse31dCitmb3IgKGxldCBpID0g
MDsgaSA8IDFlNTsgKytpKSB7CisgICAgaWYgKHRlc3QoYXJyYXkpICE9PSAxMCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzhiN2VlODE0MjRhMmQy
ZjUzOGNlN2IyMDU5ZDhkNmU0NThlNGJhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qcwpAQCAtMCwwICsxLDE4IEBA
CitmdW5jdGlvbiAqZmluZChub2RlcywgcCkKK3sKKyAgICBmb3IgKGxldCBbYXJyYXldIG9mIG5v
ZGVzKSB7CisgICAgICAgIGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUo
ZmluZCk7CisKK2xldCBtYXAgPSBuZXcgTWFwKCk7Citub0lubGluZShtYXBbU3ltYm9sLml0ZXJh
dG9yXSgpLm5leHQpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBtYXAuc2V0
KFsxLDIsNCw1LDVdLCB7fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAg
ICBmb3IgKGxldCB2IG9mIGZpbmQobWFwLCBpICUgMikpIHsgfQorfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLXNldC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDJmMzI3MzkwZDczNzVhMjIwMmFlNTlhMTEyNDY1Njk4Y2I2ZWFiNgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQu
anMKQEAgLTAsMCArMSwyMyBAQAorZnVuY3Rpb24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9y
IChsZXQgYXJyYXkgb2Ygbm9kZXMpIHsKKyAgICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2
ID09PSBwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAg
ICB9Cit9Citub0lubGluZShmaW5kKTsKKworbGV0IHNldCA9IG5ldyBTZXQoKTsKK25vSW5saW5l
KHNldFtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsg
KytpKQorICAgIHNldC5hZGQoWzEsMiw0LDUsNV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTU7ICsraSkgeworICAgIGZvciAobGV0IHYgb2YgZmluZChzZXQsIGkgJSAyKSkgeworICAg
ICAgICBpZiAoaSAlIDIgIT09IDEpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vIHJl
c3VsdCBzaG91bGQgaGF2ZSBiZWVuIHByb2R1Y2VkIGhlcmUiKTsKKyAgICAgICAgaWYgKCEodiBp
bnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigicmVzdWx0IHdh
cyBub3QgYW4gYXJyYXkiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9v
c3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1m
b3Itb2YtZG9uZS1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI0YzQ5YzkzYjI5ZmNiMGY3MTBjNmM4
MmQxZmQ4ODAwMWEyMmUyNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1m
cm9tLWZvci1vZi1kb25lLWdldHRlci5qcwpAQCAtMCwwICsxLDIzIEBACitmb3IgKGxldCBpID0g
MDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxl
dCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgZ2V0IGRvbmUoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0Zp
bmFsVGllcigpKQorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VPU1IoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9LAorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhp
czsgfSwKKyAgICAgICAgcmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07
CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNo
IHsKKyAgICB9CisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUt
Z2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NzA5NmVlMDNlMTUyNTczYWVkYzY0ZDA0MzlmYjJiZjIyYzY0MTViCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdl
dHRlci5qcwpAQCAtMCwwICsxLDIxIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7
CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAg
ICAgICAgZG9uZTogMCwKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgZG9uZTogdGhpcy5kb25lKyssCisgICAgICAgICAgICAgICAgZ2V0IHZh
bHVlKCkgeyBpZiAoaXNGaW5hbFRpZXIoKSkgRm9yY2VPU1IoKTsgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7
IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9Owor
ICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7
CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigp
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJu
cy1ub24tb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJu
cy1ub24tb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYmQzMmFkZDdjYzNiYTM0MzI1NGRhNzEwOGU1
MTlmZjc1YjMyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3It
b2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanMKQEAgLTAsMCArMSwxNiBAQAorZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAg
ICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7IHJldHVybiAxOyB9LAorICAgICAg
ICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigp
IHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZv
ciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAh
PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3Qu
IikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
dGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJl
c3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4YTE0MmM4YTZjNTRmNDc2ZWMwMzlhMTRlOWUyZDNlN2I5NmRmMWEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFk
ZXIuanMKQEAgLTAsMCArMSwyNCBAQAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsK
KyAgICBsZXQgZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUg
PSB7CisgICAgICAgIG5leHQoKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBnZXQgZG9uZSgp
IHsKKyAgICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisg
ICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0
dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0g
ZXJyb3IpCisgICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxs
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVz
cy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjE5NGZk
N2NhNWFjNTlhZDY5NjE5NDJmODYyN2I2MGE1YWEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCAr
MSwyNCBAQAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7
CisgICAgbGV0IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5l
eHQoKSB7CisgICAgICAgICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9
LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAg
IHJldHVybigpIHsKKyAgICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9OworICAgIG5vSW5saW5lKGl0ZXJhYmxlLm5leHQpOworICAgIHRyeSB7CisgICAgICAg
IGZvciAoXyBvZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcm9ycigpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhy
b3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUt
Z2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZh
bHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwODc4ODM1OGU0ZWQz
MDYxMmFjYzZmMmVmM2EzMGQ4ZDU2NjY3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAg
KzEsMjcgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9y
OworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7Cisg
ICAgICAgIG5leHQoKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBkb25lOiBmYWxzZSwKKyAg
ICAgICAgZ2V0IHZhbHVlKCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3Io
KTsKKyAgICAgICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlz
OyB9LAorICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVl
OworICAgICAgICB9CisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFi
bGUpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7
CisgICAgICAgIH0KKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikK
KyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396555</attachid>
            <date>2020-04-15 11:41:04 -0700</date>
            <delta_ts>2020-04-15 12:17:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415114103.patch</filename>
            <type>text/plain</type>
            <size>292822</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4zYWIzOTlmOWUzMDJhZTgy
Zjc0ODEzMTY1NjcyZjliZDA5NmRhYzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NjcgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZSBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1ib2wuaXRlcmF0
b3IuIFdlIGRvIHRoaXMgYnkgYWRkaW5nIHR3byBuZXcgYnl0ZWNvZGVzIG9wX2l0ZXJhdG9yX29w
ZW4gYW5kIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNlIGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkg
YSBmdXNlZCBzZXQgb2YgZXhpc3RpbmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9y
IG91ciBpbnRyaW5zaWNlZCBKU0FycmF5IGNhc2UuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJhdG9y
X29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBgaXRl
cmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0O2As
CisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQgc3lt
Ym9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxlLnN5
bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2RlIGlz
IHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0LkBj
YWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUgPSBkb25lID8gdW5k
ZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsCisgICAgICAgIHdoZXJlIG5leHRSZXN1bHQgaXMg
YSB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhlIExMSW50L0Jhc2Vs
aW5lIGFuZCBhIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAgICBJbiBvcmRlciB0byBtYWtlIHN1
cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVyZm9tYW5jZSBhcyB0aGUgZXhpc3Rp
bmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5lZWQgdG8gbWFrZSBzdXJlCisgICAgICAgIHdlIGhh
dmUgdGhlIHNhbWUgcHJvZmlsaW5nIGRhdGEgYW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRo
ZSBleGlzdGluZyBnZXRfYnlfaWQgY29kZSBhc3N1bWVkCisKKworICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6b3I4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmU4KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6Om9yOCk6CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXJyYXlJdGVyYXRvck5leHRIZWxwZXIp
OgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcnJh
eVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmls
ZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAg
ICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCk6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVQcm9maWxlRm9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVG
b3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6
CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVl
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0aW9uRm9yKToKKyAgICAgICAgKEpT
Qzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNG
b3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElu
bGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5z
dHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3Ry
dWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oLgor
ICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENh
Y2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc1N1YnR5cGVTcGVj
dWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uQ29udGFpbnMpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29w
ZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNDbG9z
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRv
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcyk6
CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmJvdHRvbVZh
bHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
VmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVN
aW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklU
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJ
VEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVk
QXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNl
OjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlv
blBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNh
dGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6REZH
Ojpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YmVn
aW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmVu
ZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpt
ZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNpemUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3BlcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
TGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3BlY3VsYXRl
ZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAg
ICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvTWV0YWRhdGEucmI6Cisg
ICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNsb29wU3RhY2spOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2hlY2tlZFJldHVybik6CisgICAgICAgIChKU0M6OmNh
bGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENhbGxSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29w
ZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4pOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpjaGVj
a3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RGb3JD
aGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgIChKU0M6OkxM
SW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6Cisg
ICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpT
Qzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNM
aXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpvcjgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHA6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjphcnJh
eVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9maWxlRm9yKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxl
Rm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChK
U0M6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0aW9uRm9yKToKKyAg
ICAgICAgKEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2Fs
bCk6CisgICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1w
bCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFs
dWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgorICAgICAgICAoSlND
OjpCYXNlSW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNl
SW5zdHJ1Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlv
bjo6d2lkZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRh
dGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2Ft
cGxlci5oLgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50
R2V0QnlJZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoK
KyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc1N1
YnR5cGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uQ29udGFpbnMpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAoSlNDOjpTdXBlclNh
bXBsZXJTY29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmlj
RW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1l
cmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0
aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdl
bmVyaWNDbG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5
bmNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdh
dGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0V2l0aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJdGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFs
bFZhbHVlcyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDRkdT
aW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNh
dGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1w
bGlmaWNhdGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdT
aW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0
U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFj
dFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNpemUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphdEluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3BlcmFuZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6
c3BlY3VsYXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6
CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvTWV0YWRh
dGEucmI6CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNsb29wU3Rh
Y2spOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2hlY2tlZFJldHVybik6CisgICAgICAg
IChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAg
ICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENhbGxS
ZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29w
ZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJ
VENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6
SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93
VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxp
bmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgor
ICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAg
ICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAg
ICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlND
OjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9y
X29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlf
ZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAg
ICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlND
OjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAg
IChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvVmFs
dWVzRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgor
ICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjphcnJheVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9maWxl
Rm9yKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6dmFs
dWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6Cisg
ICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0aW9u
Rm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVnaXN0
ZXJzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29k
ZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1
ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0
QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0
aW9uLmg6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgorICAg
ICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJ
bnN0cnVjdGlvbjo6d2lkZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRpb25N
b2RlTWV0YWRhdGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N1cGVyU2FtcGxlci5oLgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpj
bGVhckxMSW50R2V0QnlJZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAo
SlNDOjppc1N1YnR5cGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uQ29u
dGFpbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAoSlND
OjpTdXBlclNhbXBsZXJTY29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZW5lcmljRW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9w
ZW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNO
ZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVy
aWNOZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
dGVyYXRvckdlbmVyaWNDbG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QXN5bmNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SXRlcmF0b3JOZXh0V2l0aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1
ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmZvckFsbFZhbHVlcyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRm
Zy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdT
aW1wbGlmaWNhdGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZH
OjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICogZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVs
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNpemUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1iZXJP
ZlRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjph
dEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3BlcmFu
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5
SlNWYWx1ZTo6c3BlY3VsYXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYWxp
ZGF0ZS5jcHA6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5lcmF0
b3IvTWV0YWRhdGEucmI6CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmNsb29wU3RhY2spOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2hlY2tlZFJldHVybik6
CisgICAgICAgIChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFB1dENhbGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFs
dWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6
CisgICAgICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
bmVyaWNDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNr
cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2lu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6
CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c206CisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9m
YXN0KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAg
ICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6
Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jf
bmV4dF90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFy
cm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAg
ICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6
CisgICAgICAgIChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBy
dW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJh
eVByb3RvVmFsdWVzRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6Om9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJv
ZmlsZS5oOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2tw
b2ludCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJy
YXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAg
KEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmls
ZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRl
c3RpbmF0aW9uRm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNl
dEluUmVnaXN0ZXJzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICog
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZv
ckVhY2hWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJh
eVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAg
KEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0luc3RydWN0aW9uLmg6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29u
c3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgor
ICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9J
dGVyYXRpb25Nb2RlTWV0YWRhdGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oLgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFs
KToKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgor
ICAgICAgICAoSlNDOjppc1N1YnR5cGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1
bGF0aW9uQ29udGFpbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAg
ICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRJc0VtcHR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
dGVyYXRvck9wZW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJh
dG9yTmV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJp
Y0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ckdlbmVyaWNOZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3Ry
YWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXpl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJP
ZlRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0
SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFj
a0VudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAg
ICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAg
KEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJp
bGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxs
S2lsbHMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAg
ICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3Rh
dGU6OnNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFj
dFN0YXRlOjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0
ZTo6b3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Omxv
Y2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQp
OgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpMYXp5SlNWYWx1ZTo6c3BlY3VsYXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAg
ICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAg
KiBnZW5lcmF0b3IvTWV0YWRhdGEucmI6CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmNsb29wU3RhY2spOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2hlY2tl
ZFJldHVybik6CisgICAgICAgIChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dENhbGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1
cEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0
b3JfbmV4dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5
cGVDYWNoZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9y
T3BlbkNoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0
Q2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9v
c3JfZXhpdCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9v
cGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJy
b3cpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAg
ICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6
aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5
X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRl
MTYpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJp
bnNpYy5jcHA6CisgICAgICAgIChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAg
ICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0
ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisK
IDIwMjAtMDQtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IERlYnVnZ2VyOiBhZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBl
eHByZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IGUwMzk0YjdiZTViNWJiMDE4YjRlZmJjYzk4NWY1Yjc4ZGEyMjY4NmQu
LjE5NmM0MjJmNDBjMDhhMWVjMTcxMGJmMDE0Y2IxODk5YzBjODE4MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJy
YXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oOgorCiAyMDIwLTA0LTE0ICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgaW50ZXJmYWNlIEFWQXVkaW9S
b3V0aW5nQXJiaXRlciBmb3IgTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggNTJiNDZl
Y2M5ZTI4OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4uNWE5YTBiNDQ0MTEwNzIzZDczOWEz
MjUwMjg1ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtNDAsOCAr
NDAsOCBAQCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltzZGs9bWFjb3N4Kl0gPSAtV2wsLW9y
ZGVyX2ZpbGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdDQ19QUkVGSVhfSEVBREVSID0gSmF2
YVNjcmlwdENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwot
T1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29k
ZS87Ci1PVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtLXN5c3RlbS1oZWFkZXIt
cHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC1mbm8tc2xwLXZl
Y3Rvcml6ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ1BMVVNQTFVT
RkxBR1MgPSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXplIC0tc3lzdGVtLWhlYWRlci1w
cmVmaXg9dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIgJChIRUFERVJfU0VBUkNIX1BBVEhT
KTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RBTExfUEFUSCA9ICQoSkFWQVND
UklQVENPUkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiMjUwMTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4MWNjMjhlLi5kZjQyN2RmNWEwMjc1
OTMzYjQ5Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIyMUIxQTQwOTAwMkZEMDA5IC8qIEpT
QVBJR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCAq
LzsgfTsKIAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzZGRUVFMUU4
QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggKi87IH07CiAJCTUzQ0E3MzBBMUVB
NTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQ
bGFuLmggKi87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2Zp
bGVGb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
RDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLzsgfTsKKwkJ
NTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgx
MDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAv
KiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFs
dWUuaCAqLzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhG
NzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQg
LyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFG
RTBDMDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdh
c21CQlFQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBE
RCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUz
RDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVzZURlZi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9u
TW9kZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NERCMURB
RjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21BZGRy
ZXNzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REQxREFGMDlB
MDAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNt
QWRkcmVzc1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFMUY4Rjcy
MTU0NzE0OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUwRTE3QTlDMjRFMDAzNEM3MzUgLyog
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJCQlDMkZDQUUwRjE3QTlDMjRFMDAz
NEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi8sCiAJCQkJMEY2NjZFQkUxODM1
NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKKwkJ
CQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggKi8sCiAJ
CQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAog
CQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCisJ
CQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAqLywKIAkJ
CQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQlF
MzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywKIAkJCQkwRjgwMjNF
OTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1LDYgKzgzMjIsNyBA
QAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5jcHAg
Ki8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmgg
Ki8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyog
SnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFs
dWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJMEYyREQ4MEIxQUIz
RDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNB
RTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4
OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4REFF
QjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVh
ZGVycyAqLywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5
NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RTBGRTcy
MDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0
aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQg
LyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRG
MkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAppbmRleCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2JmNWJhNWViZWYwZWM4Li4xNTM5N2U4
YjdmNDhhODRmYjI3ZjExZDJmMTM3MWUwZTJhMzAxY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjg2LDYg
KzY4NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2ljYWxJ
bW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlm
IChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0
ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgbG9naWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNz
Lm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBv
cjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBvcjY0
KGRlc3QsIHNyYywgZGVzdCk7CkBAIC0xNjAzLDcgKzE2MTcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7
CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3Mp
CisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAg
ICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
YihzcmMsIG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CkBAIC0xNjE4LDcgKzE2MzIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRl
bXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwg
dm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2
b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nh
c3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBpZiAoIWltbTgubV92YWx1ZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCmluZGV4IDhjNjk3OWJiOWIyZmRlYjA0Y2EwMjZlNzY2ZDIwOGI3M2EwNjNmMmUu
LjJhMWRkZWRlZTM2ZGJlM2NkZTU3MmY0ODYwNWE0NjRjODBiNmU3ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpicmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3Iz
MjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IxNjsKKyAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpzdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDg7
CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKQEAgLTk2LDYgKzk3
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgb3IxNihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVy
KCkpKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBvcjgoaW1tLCBBZGRyZXNzKHNj
cmF0Y2hSZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIg
aW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IGZiMzQ4YjkyZGQyNjIz
YzA2NTFlZmQyZTRhOGMwZThkZTIzN2IyMDEuLjk0MjY1N2M2MmYwNzQ5Y2EwNWM0ZWVlNGQ2N2I5
NWZlNjQ1NWQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmgKQEAgLTIwNywxMCArMjA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3V0T2ZC
b3VuZHMoKSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9vbCogYWRkcmVzc09mT3V0
T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQogICAgIAotICAgIHZvaWQgb2Jz
ZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIG1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICB9CisgICAgdm9pZCBvYnNl
cnZlU3RydWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpIHsgbV9sYXN0U2VlblN0cnVj
dHVyZUlEID0gc3RydWN0dXJlSUQ7IH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgp
OyB9CiAKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RT
ZWVuU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCmluZGV4IDFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIu
LmUyODhhOTk3MjAwOGJjOTUyOTdmNThhZjA5NTlkM2ZjZDk0MGRkZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzQsNiArMzQsNyBA
QCB0eXBlcyBbCiAgICAgOkdldEJ5VmFsSGlzdG9yeSwKICAgICA6R2V0UHV0SW5mbywKICAgICA6
SW5kZXhpbmdUeXBlLAorICAgIDpJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgOkpTQ2VsbCwK
ICAgICA6SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsCiAgICAgOkpTR2xvYmFsT2JqZWN0LApA
QCAtMTE2Miw2ICsxMTYzLDU5IEBAIG9wIDpnZXRfcmVzdF9sZW5ndGgsCiAgICAgICAgIG51bVBh
cmFtZXRlcnNUb1NraXA6IHVuc2lnbmVkLAogICAgIH0KIAorIyBTZW1hbnRpY2FsbHksIHRoaXMg
aXMgaXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5u
ZXh0OworIyBGb3IgYnVpbHRpbiBpdGVyYXRvcnMsIGhvd2V2ZXIsIHRoaXMgaGFzIHNwZWNpYWwg
YmVoYXZpb3Igd2hlcmUgbmV4dCBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZSwgd2hpY2gKKyMgaW5k
aWNhdGVzIHRoYXQgd2UgYXJlIGluIGEga25vd24gaXRlcmF0aW9uIG1vZGUgdG8gb3BfaXRlcmF0
b3JfbmV4dC4KK29wIDppdGVyYXRvcl9vcGVuLAorICAgIGFyZ3M6IHsKKyAgICAgICAgaXRlcmF0
b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAg
ICAgICBzeW1ib2xJdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYWJsZTog
VmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgfSwK
KyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAg
ICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgaXRlcmF0b3JQcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRh
ZGF0YSwKKyAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICB9LAorICAgIGNo
ZWNrcG9pbnRzOiB7CisgICAgICAgIHN5bWJvbENhbGw6IG5pbCwKKyAgICAgICAgZ2V0TmV4dDog
bmlsLAorICAgIH0KKworIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgbmV4dFJlc3VsdCA9IG5leHQu
QGNhbGwoaXRlcmF0b3IpOyBkb25lID0gbmV4dFJlc3VsdC5kb25lOyB2YWx1ZSA9IGRvbmUgPyB1
bmRlZmluZWQgOiBuZXh0UmVzdWx0LnZhbHVlOworb3AgOml0ZXJhdG9yX25leHQsCisgICAgYXJn
czogeworICAgICAgICBkb25lOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAg
IG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6
IHsKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAg
ICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCisgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisg
ICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlTW9kZU1ldGFk
YXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKKyAgICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwK
KyAgICB9LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBuaWwsCisg
ICAgICAgIGdldERvbmU6IG5pbCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9CisKIG9w
IDp5aWVsZCwKICAgICBhcmdzOiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVy
LApAQCAtMTI5MCw2ICsxMzQ0LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9jYXRpb24K
IG9wIDpvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9pZF9yZXR1
cm5fbG9jYXRpb24KIG9wIDpvcF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0
ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5f
bG9jYXRpb24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9w
cm9sb2d1ZV9ub190bHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBkOGZmNmM3
OTg5NmFmZDAwZTIwY2M0Mjc3OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhkNDQyMDQw
OGNhYzUwYTM4ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIzMSwxMyBA
QCBCaXRtYXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChj
b25zdCBDb2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChPcENhbGxW
YXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJlc3VsdC5z
ZXQoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTAxNGFiZDkwNTlhOGJhMzdiMmEzYmVmZmQ3NTUwYzQ5Y2Y2ZmI1YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3Iu
aApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQg
aGFzTWVtYmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJv
ZmlsZSogYXJyYXlQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5z
aWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5k
ZXgpOworICAgIHJldHVybiAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGU7
CisKKyAgICAvLyBJbnNlcnQgcGVyIG1ldGFkYXRhIG92ZXJyaWRlcyBoZXJlIHdoZW4gd2UgbmVl
ZCB0aGVtLgorICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRl
Y29kZU1ldGFkYXRhPgorYm9vbCBoYXNBcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYg
bWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQ
cm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9y
KEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7
CisgICAgQVNTRVJUKGhhc0FycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4
KSk7CisgICAgcmV0dXJuICphcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50
SW5kZXgpOworfQorCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQgaGFz
TWVtYmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmls
ZSogdmFsdWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWdu
ZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgp
OworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRl
cmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAg
ICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gJm1ldGFkYXRhLm1faXRl
cmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1
cm4gJm1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIg
KEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAg
ICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4
dDo6Y29tcHV0ZU5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZTsKKyAg
ICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuICZtZXRhZGF0YS5tX2Rv
bmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJu
ICZtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSAKKyAgICAgICAgcmV0dXJu
ICZtZXRhZGF0YS5tX3Byb2ZpbGU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0
YWRhdGE+Citib29sIGhhc1ZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0
YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIHJldHVybiB2YWx1ZVByb2ZpbGVG
b3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3IoQnl0ZWNv
ZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBB
U1NFUlQoaGFzVmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKKyAg
ICByZXR1cm4gKnZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorT3BlcmFuZCBkZXN0aW5hdGlvbkZv
cihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCwgSklU
VHlwZSB0eXBlID0gSklUVHlwZTo6Tm9uZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2lu
dEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVy
YXRvcl9vcGVuKSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiBieXRlY29kZS5tX2l0ZXJh
dG9yOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gYnl0ZWNv
ZGUubV9uZXh0OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhw
ciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgc3dp
dGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29t
cHV0ZU5leHQ6IHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEpJVFR5cGU6OkRGR0pJVCB8fCB0
eXBlID09IEpJVFR5cGU6OkRGR0pJVCkKKyAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmFuZDo6
dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBieXRl
Y29kZS5tX3ZhbHVlOyAvLyBXZSByZXVzZSB2YWx1ZSBhcyBhIHRlbXAgYmVjYXVzZSBpdHMgZWl0
aGVyIG5vdCB1c2VkIG9yIHdyaXR0ZW4gYXMgdGhlIHRlbXAgb2JqZWN0IGRpZXMuCisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2Rl
Lm1fZG9uZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBi
eXRlY29kZS5tX3ZhbHVlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAg
ICAgIHJldHVybiBieXRlY29kZS5tX2RzdDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2Nh
dGlvbnMKKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2Fs
bGVlRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4
KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhw
ciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNT
RVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAg
ICAgIHJldHVybiBieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25z
dGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAg
IEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsK
KyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0
dXJuIGJ5dGVjb2RlLm1fY2FsbGVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4K
K3Vuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBi
eXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShj
aGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09
IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBP
cEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxz
ZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7
CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1
dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBi
eXRlY29kZS5tX2FyZ2M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlm
Zl90IHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29k
ZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3Bv
aW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0
ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJh
dG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNp
emVJblJlZ2lzdGVycyAtIGJ5dGVjb2RlLm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNl
IGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsK
KyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0
ZU5leHQpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMg
LSBieXRlY29kZS5tX2l0ZXJhdG9yLm9mZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1
cm4gYnl0ZWNvZGUubV9hcmd2OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFk
YXRhPgorTExJbnRDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRh
JiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJB
TShjaGVja3BvaW50SW5kZXgpOworICAgIHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2
OTdmNzBlMGQ1NjI2YzEzLi5hNWE1MDdlZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKQEAgLTI1OSw2ICsyNTksOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAg
VVNFUyhPcFlpZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9y
T3Blbiwgc3ltYm9sSXRlcmF0b3IsIGl0ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQs
IGl0ZXJhdG9yLCBuZXh0LCBpdGVyYWJsZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhf
c3ByZWFkOgogICAgICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3
QXJyYXlXaXRoU3ByZWFkPigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBA
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwg
dGhyb3duVmFsdWUpCiAKKyAgICBERUZTKE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkK
KyAgICBERUZTKE9wSXRlcmF0b3JOZXh0LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50
ZXI6IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAg
ICAgIGZ1bmN0b3IodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIy
NTkxOTQ3NzY4NTU3ZWE4N2E2NTdmMjNhNjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2
OWU5NjM0MTc1MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcApAQCAtNDAsMTggKzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxs
TGlua0luZm86OkNhbGxUeXBlIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bj
b2RlSUQpCiB7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3Bf
Y2FsbF9ldmFsKQorICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2Fs
bF92YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAg
ICAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6
CisgICAgY2FzZSBvcF9jYWxsX2V2YWw6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9w
Y29kZUlEID09IG9wX2NhbGxfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgog
ICAgICAgICByZXR1cm4gQ2FsbFZhcmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0
cnVjdCkKKworICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0
OwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ug
b3BfY29uc3RydWN0X3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwot
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2Fs
bDoKICAgICAgICAgcmV0dXJuIFRhaWxDYWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90
YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHMpOwotICAgIHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQ2FsbDsKIH0KIAogQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXgg
ZjEzZDE3MzRhMDJjNThhMzIxNzU5MjVkMjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEz
NzhhZWJlZjkwMjU2ZjExNWVmMTdlM2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlu
a0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRC
bG9jaykubV9jYWxsTGlua0luZm87CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0
b3Jfb3BlbjoKKyAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJh
dG9yT3Blbj4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0lu
Zm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVk
QmxvY2spLm1fY2FsbExpbmtJbmZvOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdl
NjE2MGI2NTNlN2E0ZTczMDRiMi4uYTRhN2M1YWFiZjA1NmIzODMxNDQ4NDE4ZjkxZGE4ODU0Zjdi
YTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUg
IkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVT
dHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgpAQCAtOTcsNiArOTgsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBs
Lmg+CiAKKwogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNl
dExpc3QuaCIKICNlbmRpZgpAQCAtNTgzLDYgKzU4NSwyMCBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJv
bEZsb3cpCiAKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJ
TklUSUFMSVpFX01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJl
ck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAg
SU5JVElBTElaRV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1i
ZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAg
IElOSVRJQUxJWkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsNiArMTI0MCwz
MyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDE4
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRkIG9wdGltaXphdGlvbnMgZm9yIG9wX3Jlc29sdmVf
c2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsIHRvIGRvIGxpbmsgdGltZSBzY29w
ZSByZXNvbHV0aW9uLgogCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9w
ZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBp
ZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJ
RFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgICAgICBk
YXRhTG9nRigiQ2xlYXJpbmcgaXRlcmF0b3Igb3BlbiBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4i
KTsKKyAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7Cisg
ICAgICAgIH0pOworCisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4
dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBjbGVhcklmTmVlZGVk
ID0gWyZdIChHZXRCeUlkTW9kZU1ldGFkYXRhJiBtb2RlTWV0YWRhdGEpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRT
dHJ1Y3R1cmVJRCA9IG1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAg
ICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJi
b3NlT1NSKCksICJDbGVhcmluZyBpdGVyYXRvciBuZXh0IExMSW50IHByb3BlcnR5IGFjY2Vzcy5c
biIpOworICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOworICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEpOworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9k
ZU1ldGFkYXRhKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEyMzEsNyArMTI3NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3Ry
dWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nl
c3MuIik7Ci0gICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEpOworICAgICAgICAgICAg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50
R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKICAgICAgICAgfSk7CiAKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM2OSwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAg
ICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihw
YWlyLmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAg
ICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OiB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5
SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAg
ICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5t
ZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBM
TEludCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRo
aXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAg
IGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJh
dG9yIG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtp
bmRhIGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRv
Li4uCisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENh
Y2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9OwpAQCAtMzA0MSw2ICszMTAyLDExIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlH
ZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvCiAKICN1
bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJldHVybiAm
dmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0
YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworICAgIGNhc2Ugb3BfaXRlcmF0
b3JfbmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFz
PE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9p
bnQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXgg
MjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5
MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAgdm9pZCBD
b2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAg
IGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3By
b2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZd
IChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsK
IAogICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAj
dW5kZWYgVklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJh
dG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMobWV0YWRh
dGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEu
bV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9u
ZXh0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAg
ICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyht
ZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9ICAgCiAK
IH0KIApAQCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2Zp
bGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJU0lUMgor
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUp
OworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1OTFlZGFl
NTE2NzdhMjg4YzIuLjI4MmNmOGY0MjdjMWZiZWFiMjk2YTM1ODNiMDc5OTQxZGExMGVmMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAt
ODYsNiArODYsMzUgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9wX2dldF9i
eV92YWw6CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7
CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRh
dGEocHJvZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVz
dCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2FkLgorICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAg
ICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAg
ICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1
Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0Owor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCku
bWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7
CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5k
ZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJv
cGVydHlOYW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtZXRh
ZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsK
KyAgICAgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5k
ZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJv
cGVydHlOYW1lcy0+dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgZGVmYXVsdDogewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggMDg1YWU4ZDE5OTc2Yjg4NmYwMDE5
Zjg1ZmE2N2IwMmJlMTRjZGE1ZS4uM2Q3MGNkNTQzZWNmYWU5MDIyNTAyOTYwMWEwZDQwNWVjNjcx
YjJkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgK
QEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBKU09wY29kZVRyYWl0
cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSA6OkpTQzo6T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRp
Y19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9DSEVDS1BPSU5UUyk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0
YSA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFU
QSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8
PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBP
cGNvZGVJRCB3aWRlMTYgPSBvcF93aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJ
RCB3aWRlMzIgPSBvcF93aWRlMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25l
ZCogb3Bjb2RlTGVuZ3RocyA9IDo6SlNDOjpvcGNvZGVMZW5ndGhzOwpAQCAtNDEsNyArNDMsOSBA
QCBzdHJ1Y3QgSlNPcGNvZGVUcmFpdHMgewogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CiAg
ICAgdXNpbmcgT3Bjb2RlSUQgPSBXYXNtT3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBP
cGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9w
Y29kZUlEPihOVU1CRVJfT0ZfV0FTTV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29u
c3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nh
c3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19h
c3NlcnQobnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29k
ZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0g
d2FzbV93aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3YXNt
X3dpZGUzMjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5n
dGhzID0gd2FzbU9wY29kZUxlbmd0aHM7CkBAIC05OCwxMiArMTAyLDI2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJh
aXRzOjp3aWRlMzI7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNP
cGNvZGVUcmFpdHM+CisgICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoaXNXaWRlMzI8VHJhaXRzPigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6
OldpZGUzMjsKKyAgICAgICAgcmV0dXJuIGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6
OldpZGUxNiA6IE9wY29kZVNpemU6Ok5hcnJvdzsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBib29sIGhhc01ldGFkYXRhKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51
bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6
bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3Vu
dCgpIGNvbnN0CiAgICAgewpAQCAtMTM3LDYgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBUOjpkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwog
ICAgIH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1l
IFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVCgoaXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIHJldHVybiBU
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2ln
bmVkVHlwZSo+KHRoaXMgKyAod2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7
CisgICAgfQorCiAgICAgdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CiAgICAgVCogY2FzdCgpCiAgICAgewpAQCAtMTYxLDcgKzE4Niw3IEBAIHB1Ymxp
YzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7Ci0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4K
QEAgLTE2OSwxNCArMTk0LDE2IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlz
V2lkZTMyPFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMp
ICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2Rl
U2l6ZTo6V2lkZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgSW5zdHJ1Y3Rp
b24gOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2Vy
dChzaXplb2YoSW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUg
YXMgYnl0ZSBtYXRoIik7CiAKIHN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3Ry
dWN0aW9uPFdhc21PcGNvZGVJRD4gewogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0
YW5jZSkgPT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkNjkxOTMxYzZj
Nzk0OGU1NTdlNGY1NjkyM2FlMzQ5MGZlYjllOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaApAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIEl0ZXJhdGlvbk1vZGUg
OiB1aW50OF90IHsKKyAgICBHZW5lcmljID0gMSA8PCAwLAorICAgIEZhc3RBcnJheSA9IDEgPDwg
MSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IG51bWJlck9mSXRlcmF0aW9uTW9kZXMgPSAyOwor
CitPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVSR1JB
TFMoSXRlcmF0aW9uTW9kZSk7CisKK3N0cnVjdCBJdGVyYXRpb25Nb2RlTWV0YWRhdGEgeworICAg
IHVpbnQ4X3Qgc2Vlbk1vZGVzIHsgMCB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0
eXBlKHNlZW5Nb2RlcykpID09IHNpemVvZihJdGVyYXRpb25Nb2RlKSk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggMmQxNDNiOWNmNjc0MzA1ZDQwYzkxZWIwYWUzNTEzMzEy
NTY5NDQxZi4uYmJlMWY2N2ZmYmVmZThlOGJiMTM2N2ViNmM3ZWQ2N2NiYWE4YWI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAKQEAgLTYwLDE0ICs2MCwzMSBAQCB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRgogICAgIH0KIAog
ICAgIGF1dG8mIGluc3RydWN0aW9uID0gbV9vd25lci0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRl
Y29kZU9mZnNldC5nZXQoKSk7Ci0gICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpKTsKKyAgICBzd2l0Y2gg
KGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAg
ICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5t
ZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENh
Y2hlKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShtX293bmVyLmdl
dCgpKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVy
YXRvcl9uZXh0OiB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9w
SXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpOworICAgICAgICBjbGVhckxM
SW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGNs
ZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAotdm9pZCBMTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlk
Q2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEpCit2b2lkIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShH
ZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICAvLyBLZWVwIGhpdENvdW50Rm9y
TExJbnRDYWNoaW5nIHZhbHVlLgotICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9E
ZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOworICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9k
ZVdpdGhvdXRDYWNoZSgpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDIyMGZm
ZjNlM2JmNTQzNDFlOTYxYzgyZGY4YzRlOGM5MDAwNzM0YmUuLjFkNTk1N2VmZjgxMDkyYTFkYWJk
ZWU1MDI1Y2FjNWU2ZjM4Njc4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBpbnN0YWxsKFZNJik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKE9wR2V0QnlJZDo6TWV0YWRhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50
R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmKTsKIAogICAgIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggMTg1MWI2M2M3Y2E2YWVmMmZiMzZi
ZjJmODdlOTJhMTllMGQ0MGMxOC4uYWE4ODU5YWRkNjI4NjBmZmRhZGI0ZDIyMjg3YzM0YjA3Y2U1
YjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTQ4LDYg
KzE0OCw5IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVM
ZW5ndGggPSBXVEY6OmdldE1TQlNldENvbnN0ZXhwcihtCiAgICAgbWFjcm8oT3BUYWlsQ2FsbCkg
XAogICAgIG1hY3JvKE9wQ2FsbEV2YWwpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorICAg
IG1hY3JvKE9wSXRlcmF0b3JPcGVuKSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck5leHQpIFwKKwog
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZDc2
ZDRmYTdiNDZlOThiOWY5NzAwZGMzODYzMGY0Li45NDY1OGIwOTZiZjE5M2M4N2NmZDcxYTlmNWJk
ZTE1ZjYxMzMyYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaApAQCAtMTIwLDYgKzEyMCwxNiBAQCBpbmxpbmUgYm9vbCBpc0FueVNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlKQogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9v
bCBpc1N1YnR5cGVTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5
cGUgY2F0ZWdvcnkpCit7CisgICAgcmV0dXJuICEodmFsdWUgJiB+Y2F0ZWdvcnkpICYmIHZhbHVl
OworfQorCitpbmxpbmUgYm9vbCBzcGVjdWxhdGlvbkNvbnRhaW5zKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBj
YXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKIGlubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNDZWxsKSAm
JiAhKHZhbHVlICYgflNwZWNDZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdXBlclNhbXBsZXIuaAppbmRleCA5NjEwZGNlNWNkYmMzZWMwOWNlMzNiMWQ2YmNjNGIzZmY4
YTZjM2M4Li5lOWJmOTUzMWY3YmE1OTU3MzExMGUzMWE3YTQ0Y2QyMjhiNzU3MTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC00OCw2ICs0
OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CiAgICAg
fQogCisgICAgdm9pZCByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvU2FtcGxl
KTsKKyAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOworICAgICAgICBtX2RvU2FtcGxlID0g
ZmFsc2U7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgbV9kb1NhbXBsZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDYzZDM2MmNhYzE5ZDQ5Mzk4OTQ3NzdiZWRhN2MwYWMyZDYzNjA2M2Yu
LjhmZWRlNjJiNTMwZWJkMTAxZmVkYTYxYWJhYjk0OWEzZjNiMzU5YjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC00MDE2LDE0ICs0MDE2LDE1IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlv
bihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3RO
b2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JM
b29wU3ltYm9sVGFibGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1l
cmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3Vi
amVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQq
IGZvckxvb3BTeW1ib2xUYWJsZSkKIHsKICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9k
ZSA/IGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkgOiBmYWxzZTsKLSAgICBBU1NFUlQoIWlzRm9y
QXdhaXQgfHwgKGlzRm9yQXdhaXQgJiYgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9k
ZSgpKSkpOworICAgIGF1dG8gc2hvdWxkRW1pdEF3YWl0ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2Fp
dDo6WWVzIDogRW1pdEF3YWl0OjpObzsKKyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgaXNBc3lu
Y0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3ViamVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCks
IHN1YmplY3ROb2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3
YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0
SXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0
ZXJhdG9yID0gaXNGb3JBd2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCks
IG5vZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFy
eSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgUmVmPExh
YmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00MTMwLDcgKzQxMzEsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUsIEV4cHJlc3NpbwogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgZW1p
dEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0
KCksIG5vZGUsIGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOwor
ICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRo
b2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwogCiAgICAg
ICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwogICAgICAgICAg
ICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
dmFsdWUpOwpAQCAtNDE0Myw3ICs0MTQ0LDE0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npbwog
ICAgICAgICBwb3BGaW5hbGx5Q29udHJvbEZsb3dTY29wZSgpOwogICAgICAgICBpZiAoYnJlYWtM
YWJlbElzQm91bmQpIHsKICAgICAgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9y
IGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4KLSAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0
ZXJhdG9yLmdldCgpLCBub2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdh
aXQ6Ok5vKTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5n
ZXQoKSwgbm9kZSwgc2hvdWxkRW1pdEF3YWl0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbWl0
TGFiZWwobG9vcERvbmUuZ2V0KCkpOworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdp
c3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVy
YXRpb25JbnRyaW5zaWNzKCkgfHwgaXMzMkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29w
Tm9kZS0+aXNGb3JBd2FpdCgpKSkgeworICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5v
ZGUsIHN1YmplY3ROb2RlLCBjYWxsQmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJs
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRl
cmFibGUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0Tm9kZShpdGVyYWJsZS5nZXQoKSwgc3Vi
amVjdE5vZGUpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yU3ltYm9sID0gZW1p
dEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhYmxlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
aXRlcmF0b3JTeW1ib2wpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0T3JJbmRleCA9IG5l
d1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG5ld1RlbXBv
cmFyeSgpOworICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAg
bW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBpdGVyYWJsZS5nZXQoKSk7CisgICAgZW1pdEl0ZXJh
dG9yT3BlbihpdGVyYXRvci5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIGl0ZXJhdG9yU3ltYm9s
LmdldCgpLCBhcmdzLCBub2RlKTsKKworICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJl
bCgpOworICAgIFJlZjxMYWJlbD4gdHJ5U3RhcnRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVm
PExhYmVsPiBmaW5hbGx5VmlhVGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVs
PiBmaW5hbGx5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9
IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBlbmRDYXRjaExhYmVsID0gbmV3TGFiZWwoKTsK
KworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVt
aXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIFJlZlB0cjxSZWdp
c3RlcklEPiBpdGVyYXRvcidzIGxpZmV0aW1lIG11c3QgYmUgbG9uZ2VyIHRoYW4gSXRlcmF0b3JD
bG9zZUNvbnRleHQuCisgICAgRmluYWxseUNvbnRleHQgZmluYWxseUNvbnRleHQoKnRoaXMsIGZp
bmFsbHlMYWJlbC5nZXQoKSk7CisgICAgcHVzaEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKGZpbmFs
bHlDb250ZXh0KTsKKworICAgIHsKKyAgICAgICAgUmVmPExhYmVsU2NvcGU+IHNjb3BlID0gbmV3
TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKKworICAgICAgICBSZWY8TGFiZWw+IGxvb3BT
dGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOwor
ICAgICAgICBlbWl0TGFiZWwoKnNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKKyAgICAgICAgZW1p
dExvb3BIaW50KCk7CisKKyAgICAgICAgaWYgKGZvckxvb3BOb2RlKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChmb3JMb29wTm9kZS0+aXNGb3JPZk5vZGUoKSk7CisgICAgICAgICAgICBw
cmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oZm9yTG9vcE5vZGUsIGZv
ckxvb3BTeW1ib2xUYWJsZSk7CisgICAgICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2Rl
LT5sZXhwcigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBkb25lID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIG5leHRBcmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICAgICAgICAgIG1vdmUobmV4dEFy
Z3MudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdEl0
ZXJhdG9yTmV4dChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgaXRlcmFibGUuZ2V0KCksIG5leHRP
ckluZGV4LmdldCgpLCBuZXh0QXJncywgbm9kZSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1
ZShkb25lLmdldCgpLCBsb29wRG9uZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0
TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBw
dXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpLCBI
YW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRGaW5hbGx5KTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMs
IHZhbHVlLmdldCgpKTsKKyAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAg
ICAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBhYnJ1cHQgY29tcGxldGlvbnMuCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZpbmFsbHkgYmxvY2sgZm9yIHRoZSBlbnVtZXJhdGlv
bi4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7Cisg
ICAgICAgICAgICBwb3BUcnkodHJ5RGF0YSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOwor
CisgICAgICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlCb2R5TGFiZWwgPSBuZXdMYWJlbCgpOwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZpbmFsbHlFeGNlcHRpb25SZWdpc3RlciA9
IG5ld1RlbXBvcmFyeSgpOworCisgICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRs
ZXIoZmluYWxseUNvbnRleHQuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgZmluYWxseUNvbnRl
eHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCB0cnlEYXRhKTsKKyAgICAgICAgICAgIG1vdmUo
ZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9u
VmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGVtaXRKdW1wKGZpbmFsbHlCb2R5TGFiZWwu
Z2V0KCkpOworCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseUxhYmVsLmdldCgpKTsKKyAg
ICAgICAgICAgIG1vdmVFbXB0eVZhbHVlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7
CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHkgZmFsbCB0aHJvdWdoIGNhc2UuCisgICAgICAgICAg
ICBlbWl0TGFiZWwoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICByZXN0b3Jl
U2NvcGVSZWdpc3RlcigpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlEb25lID0g
bmV3TGFiZWwoKTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhv
ZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLnJldHVybktleXdvcmQpOworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElz
VW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBmaW5hbGx5RG9u
ZS5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0
KCkpOworICAgICAgICAgICAgVHJ5RGF0YSogcmV0dXJuQ2FsbFRyeURhdGEgPSBwdXNoVHJ5KHJl
dHVybkNhbGxUcnlTdGFydC5nZXQoKSwgY2F0Y2hMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5
bnRoZXNpemVkQ2F0Y2gpOworCisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3Vt
ZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgZW1pdENhbGwodmFs
dWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5B
cmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RF
bmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUo
ZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGZpbmFsbHlEb25lLmdl
dCgpKTsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGlu
dGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChm
aW5hbGx5RG9uZS5nZXQoKSk7CisgICAgICAgICAgICBlbWl0RmluYWxseUNvbXBsZXRpb24oZmlu
YWxseUNvbnRleHQsIGVuZENhdGNoTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBwb3BUcnko
cmV0dXJuQ2FsbFRyeURhdGEsIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgLy8g
Q2F0Y2ggYmxvY2sgZm9yIGV4Y2VwdGlvbnMgdGhhdCBtYXkgYmUgdGhyb3duIHdoaWxlIGNhbGxp
bmcgdGhlIHJldHVybgorICAgICAgICAgICAgLy8gaGFuZGxlciBpbiB0aGUgZW51bWVyYXRpb24g
ZmluYWxseSBibG9jay4gVGhlIG9ubHkgcmVhc29uIHdlIG5lZWQgdGhpcworICAgICAgICAgICAg
Ly8gY2F0Y2ggYmxvY2sgaXMgYmVjYXVzZSBpZiBlbnRlcmVkIHRoZSBhYm92ZSBmaW5hbGx5IGJs
b2NrIGR1ZSB0byBhIHRocm93bgorICAgICAgICAgICAgLy8gZXhjZXB0aW9uLCB0aGVuIHdlIHdh
bnQgdG8gcmUtdGhyb3cgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBvbiBleGl0aW5nCisgICAgICAg
ICAgICAvLyB0aGUgZmluYWxseSBibG9jay4gT3RoZXJ3aXNlLCB3ZSdsbCBsZXQgYW55IG5ldyBl
eGNlcHRpb24gcGFzcyB0aHJvdWdoLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVt
aXRMYWJlbChjYXRjaExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAg
ICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwg
ZmluYWxseUNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCByZXR1cm5DYWxsVHJ5RGF0
YSk7CisgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBhIHN5bnRoZXNpemVkIGNhdGNo
IGJsb2NrIGFuZCB3ZSdyZSBndWFyYW50ZWVkIHRvIG5ldmVyIG5lZWQKKyAgICAgICAgICAgICAg
ICAvLyB0byByZXNvbHZlIGFueSBzeW1ib2xzIGZyb20gdGhlIHNjb3BlLCB3ZSBjYW4gc2tpcCBy
ZXN0b3JpbmcgdGhlIHNjb3BlCisgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaGVyZS4KKwor
ICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzRW1wdHkobmV3VGVtcG9yYXJ5KCksIGZp
bmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSksIHRocm93TGFiZWwuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIG1vdmUoZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlFeGNlcHRpb25S
ZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgp
KTsKKworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChlbmRDYXRjaExhYmVsLmdldCgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgYnJlYWtMYWJlbElzQm91bmQg
PSBzY29wZS0+YnJlYWtUYXJnZXRNYXlCZUJvdW5kKCk7CisgICAgICAgIGlmIChicmVha0xhYmVs
SXNCb3VuZCkKKyAgICAgICAgICAgIGVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7Cisg
ICAgICAgIHBvcEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKCk7CisgICAgICAgIGlmIChicmVha0xh
YmVsSXNCb3VuZCkgeworICAgICAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3Ig
YnJlYWstZWQgY29udHJvbCBmbG93LgorICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Ns
b3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBFbWl0QXdhaXQ6Ok5vKTsKICAgICAgICAgfQogICAg
IH0KICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwpAQCAtNDI2NSw1NiArNDQwNCw2IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICBPcElzRW1wdHk6OmVtaXQodGhpcywgZHN0LCBzcmMp
OwogICAgIHJldHVybiBkc3Q7CiB9Ci0gICAgCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRo
b2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKLSAgICAgICAgbW92ZShuZXh0QXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwg
bmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZv
dCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxs
OjpObyk7Ci0KLSAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAg
ICAgICAgICAgZW1pdEF3YWl0KGRzdCk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmVmPExhYmVs
PiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOwotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0
SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAg
ICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7Ci0gICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwot
ICAgIH0KLSAgICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29u
c3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCi17Ci0gICAgewotICAgICAgICBDYWxs
QXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOwotICAgICAgICBtb3Zl
KG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgbW92ZShu
ZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENh
bGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5v
ZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdn
YWJsZUNhbGw6Ok5vKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZHN0OwotfQotCi12b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29u
c3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkK
LXsKLSAgICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwotICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3Is
IHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0
SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0
KCkpOwotCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7Ci0g
ICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgIG1v
dmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgZW1pdENh
bGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBy
ZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+
ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgIGlmIChkb0VtaXRBd2FpdCA9
PSBFbWl0QXdhaXQ6OlllcykKLSAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKLQotICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkp
LCBkb25lLmdldCgpKTsKLSAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBp
bnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwotICAgIGVtaXRMYWJlbChkb25lLmdldCgp
KTsKLX0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEluZGV4ZWRGb3JJblNjb3BlKFJl
Z2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIpCiB7CkBA
IC00NTU1LDcgKzQ2NDQsMzUgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJl
Z2lzdGVySUQqIHZhbHVlKQogICAgIG1vdmUodmFsdWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIo
KSk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3Io
UmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRv
ciwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBD
YWxsQXJndW1lbnRzJiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUpCit7CisgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8
UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5z
YWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENh
bGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5h
cHBlbmQobmV3VGVtcG9yYXJ5KCkpOworCisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkp
CisgICAgICAgIGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZv
dFN0YXJ0KCkpOworCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUt
PmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck9wZW46OmVt
aXQodGhpcywgaXRlcmF0b3IsIG5leHRPckluZGV4LCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUu
dGhpc1JlZ2lzdGVyKCksIGl0ZXJhYmxlLnN0YWNrT2Zmc2V0KCkpOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVy
SUQqIHZhbHVlLCBSZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgs
IENhbGxBcmd1bWVudHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKK3sKKyAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3Rv
cjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1l
LmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3Mo
KSkKKyAgICAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRp
dm90U3RhcnQoKSk7CisKKyAgICBlbWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yTmV4dDo6
ZW1pdCh0aGlzLCBkb25lLCB2YWx1ZSwgaXRlcmFibGUsIG5leHRPckluZGV4LCBpdGVyYXRvci50
aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iuc3RhY2tPZmZzZXQoKSk7Cit9CisKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQs
IHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgZW1pdENhbGxJdGVyYXRvcihp
dGVyYXRvci5nZXQoKSwgYXJndW1lbnQsIG5vZGUpOwpAQCAtNDU2Myw2ICs0NjgwLDU3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCog
YXJndW1lbnQsIFRocm93YWJsZUV4CiAgICAgcmV0dXJuIGl0ZXJhdG9yLmdldCgpOwogfQogCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRv
ciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRB
d2FpdCkKK3sKKyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhp
cywgbnVsbHB0cik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
aXRlcmF0b3IpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgp
LCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGlmIChk
b0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAgICAgIGVtaXRBd2FpdChkc3Qp
OworICAgIH0KKyAgICB7CisgICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFi
ZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgp
LCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3Io
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAg
ICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsK
K30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNO
ZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFy
Z3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRo
b2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwor
ICAgIH0KKworICAgIHJldHVybiBkc3Q7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICBS
ZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1
cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5
TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmlu
ZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOworCisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFy
Z3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgIG1vdmUocmV0dXJu
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUu
Z2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1
bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQo
KSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdh
aXQ6OlllcykKKyAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKKworICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdl
dCgpKTsKKyAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2Ug
aXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKK30KKwor
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVn
aXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLmFzeW5jSXRlcmF0b3JTeW1ib2wpOwpAQCAtNDU3
NSw3ICs0NzQzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKICAgICBlbWl0SnVtcChhc3lu
Y0l0ZXJhdG9yRm91bmQuZ2V0KCkpOwogICAgIGVtaXRMYWJlbChhc3luY0l0ZXJhdG9yTm90Rm91
bmQuZ2V0KCkpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1p
dEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29t
bW9uSXRlcmF0b3IgPSBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAg
ICBtb3ZlKGl0ZXJhdG9yLmdldCgpLCBjb21tb25JdGVyYXRvci5nZXQoKSk7CiAKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBp
dGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwpAQCAtNDYwNCw3ICs0NzcyLDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lz
dGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWUgPSBuZXdUZW1wb3JhcnkoKTsKICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
dGVyYXRvciA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JC
b2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRJ
dGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVy
YXRvciA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5
TW9kZSA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRHZW5l
cmljSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
bmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwg
cHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBu
ZXdMYWJlbCgpOwpAQCAtNDY0Miw3ICs0ODEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUK
ICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdU
ZW1wb3JhcnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsK
IAogICAgICAgICAgICAgICAgICAgICBFbWl0QXdhaXQgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3Nl
ID0gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2Rl
ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOwotICAgICAgICAgICAgICAgICAgICBl
bWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRv
ckNsb3NlKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0
ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2Vz
IG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIl9zKTsKIApAQCAtNDcwMyw3ICs0ODcxLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW1p
dExhYmVsKG5leHRFbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRX
aXRoVmFsdWUodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2
YWx1ZS5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdp
dGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZh
bHVlLmdldCgpLCBub2RlKTsKIAogICAgICAgICAgICAgZW1pdExhYmVsKGJyYW5jaE9uUmVzdWx0
LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ1MzRjZDgyOGFhYzNkMTQwYjRmNDZjODY4NzY4
MDkxNGUwZGUzMjUuLjZiNzA4ZTk2YWIxNDYwZGE2YTBhZTBjYjk1MzY4YTc5ZGNmOGVmZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTgyOCw2ICs4MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJ
RCogcHJvcGVydHlOYW1lUmVnaXN0ZXIsCiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJl
Z2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVn
aXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKKyAgICAg
ICAgdm9pZCBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBl
bnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywg
Rm9yT2ZOb2RlKiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51
bGxwdHIpOwogICAgICAgICB2b2lkIGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0
IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2Fs
bEJhY2ssIEZvck9mTm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFi
bGUgPSBudWxscHRyKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0VGVtcGxhdGVPYmpl
Y3QoUmVnaXN0ZXJJRCogZHN0LCBUYWdnZWRUZW1wbGF0ZU5vZGUqKTsKQEAgLTg5OCw5ICs4OTks
MTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Rlcml2ZWRB
cnJheShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2Vs
bFdpdGhUeXBlKGRzdCwgc3JjLCBEZXJpdmVkQXJyYXlUeXBlKTsgfQogICAgICAgICB2b2lkIGVt
aXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGVycm9yKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6
RW1pdEF3YWl0OjpObyk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRo
VmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklE
KiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlKTsKLSAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBp
dGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9
IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJ
RCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJ
dGVyYXRvciwgQ2FsbEFyZ3VtZW50cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKik7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25l
LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5l
eHRPckluZGV4LCBDYWxsQXJndW1lbnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqKTsKKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9y
KFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqKTsKKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQg
PSBKU0M6OkVtaXRBd2FpdDo6Tm8pOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JH
ZW5lcmljTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRo
b2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckdlbmVy
aWNDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFy
YW1ldGVyc1RvU2tpcCk7CiAKQEAgLTk1MCw5ICs5NTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0UHVzaENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAg
ICAgICB2b2lkIGVtaXRQb3BDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9y
KFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotCiAgICAgICAgIHZvaWQg
ZW1pdEF3YWl0KFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2Nv
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IGQ0ZmRiNGRkNTRkNDkyZjkwZDJkNzIxZmQ3ZGFjMTJmZjdkMmY4NTAu
LjJiMTVjYWE0NzEzYTg4NTY1YzRjZDA5NTI2ZjkwYzI0NWY2M2EwMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ1
NzIsNyArNDU3Miw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV4dE1ldGhvZCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQp
OwogCiAgICAgaWYgKG1fdGFyZ2V0UGF0dGVybnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTg4LDcgKzQ1ODgsNyBAQCB2b2lkIEFycmF5
UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiByaHMpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRv
bmUuZ2V0KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQo
KSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVy
YXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5n
ZXQoKSwgdGhpcyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQo
KSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBl
ZC5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCks
IHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ2MjQs
NyArNDYyNCw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0
ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JH
ZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCks
IHRoaXMpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZh
bHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvbkRvbmUuZ2V0KCkp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00NjQyLDcgKzQ2NDIs
NyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAKICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yQ2xv
c2VkID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGRvbmUuZ2V0KCksIGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEl0
ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0SXRl
cmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoaXRlcmF0b3JDbG9zZWQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggMGE0YTExZjliNDBlNmIxM2M1OTY0MjI4ZTQxMTI4OWYxZDllZTg2Ni4uMThkYWUwMDRjNzIy
Y2Q2ZmRjZjg5MTJiYzVjNDIxM2E0MzFiMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDM5
OCwxMCArNDM5OCw4IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmZvckFsbFZhbHVlcygKICAgICAgICAgICAgICAgICBmdW5jdG9yKGZvck5vZGUobm9kZSkp
OwogICAgICAgICB9CiAgICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9m
QXJndW1lbnRzKCk7IGktLTspCi0gICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hcmd1bWVudChpKSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKLSAg
ICAgICAgZnVuY3RvcihtX3N0YXRlLmxvY2FsKGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gbV9z
dGF0ZS5zaXplKCk7IGktLTspCisgICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hdEluZGV4KGkpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDg5N2M3
MGRmZmJhMDY2YjY0OWNhZmRjYzFlZjA5MzM3NjgxMDRkMTMuLjQzOGUxNmRlODU5NTkyNTRkOTU1
NzIxYjZmMDhkYjk1ODE0ZmQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCkBAIC0xMzcsMTEgKzEzNywxNSBAQCBwdWJsaWM6
CiAgICAgICAgIG1ha2VIZWFwVG9wRm9yTm9kZShlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAor
ICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwu
c2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2ln
bmVkIG51bWJlck9mTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWls
Lm51bWJlck9mTG9jYWxzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7
IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCk7IH0KKyAgICBBYnN0
cmFjdFZhbHVlJiBhdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVz
QXRUYWlsLmF0KGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBv
cGVyYW5kKSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKTsg
fQogICAgIEFic3RyYWN0VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9j
ay0+dmFsdWVzQXRUYWlsLmxvY2FsKGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3Vt
ZW50KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50
KGluZGV4KTsgfQorICAgIEFic3RyYWN0VmFsdWUmIHRtcChzaXplX3QgaW5kZXgpIHsgcmV0dXJu
IG1fYmxvY2stPnZhbHVlc0F0VGFpbC50bXAoaW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjbG9i
YmVyU3RydWN0dXJlcygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwOTk3YmFiMDUyNTI2NGU2ZjE2NDg1NDI0MmQ5NGNl
M2I1N2UzNmRjLi43NWUyNTc1NTUyNjdhOGEzNDY3NTk2YmRlODIxNzE5N2I4ODc3NWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5VmFs
SW5mby5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJD
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CkBAIC0xNTcsNyArMTU4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEhlbHBlciBmb3IgbWluIGFu
ZCBtYXguCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhh
bmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1
bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAKICAg
ICB2b2lkIHJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0
KTsKICAgICAvLyBCbG9ja3MgY2FuIGVpdGhlciBiZSB0YXJnZXRhYmxlIChpLmUuIGluIHRoZSBt
X2Jsb2NrTGlua2luZ1RhcmdldHMgb2Ygb25lIElubGluZVN0YWNrRW50cnkpIHdpdGggYSB3ZWxs
LWRlZmluZWQgYnl0ZWNvZGVCZWdpbiwKQEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAg
IC8vIEhhbmRsZSBjYWxscy4gVGhpcyByZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5saW5p
bmcgYW5kIGludHJpbnNpY3MuCiAgICAgZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBOb25U
ZXJtaW5hbCB9OwogICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoCi0gICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2ln
bmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9w
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAg
ICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xODgsMjcgKzE4
OSwyNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9u
Q2hlY2tJZk5lZWRlZCk7CiAgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8v
IFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNv
bnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5s
aW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBw
bGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9k
ZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFy
YXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlz
QXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJn
dW1lbnRzT2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAg
ICAgdW5zaWduZWQgZ2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVz
dWx0IHsgT3B0aW1pemVkVG9KdW1wLCBJbmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9w
dGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwg
VmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Js
b2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwotICAgIENh
bGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUs
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3As
IElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAg
Q2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0
Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZp
cnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9j
ayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBP
cGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Js
b2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KTsKICAgICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQg
c3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJp
bnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhh
bmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBj
YWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNH
ZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmlu
c2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25z
dCBHZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0
cnVjdG9yKE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
ZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9k
ZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rp
b24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24oTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9u
KiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2Us
IHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAg
Tm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zm
c2V0KTsKLSAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZURP
TUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0
aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbik7CiAgICAgYm9vbCBoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyk7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KQEAgLTMxOCwxNSArMzE5LDE1IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBnZXRMb2NhbE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAg
IE5vZGUqIGdldChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFu
ZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5k
ZXgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1
YWxSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xk
U2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4
ID49IG9sZFNpemUgfHwgIW1fY29uc3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2s7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRD
b25zdGFudChvcGVyYW5kKTsKLSAgICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24gc291cmNlQ29kZVJlcHJlc2VudGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAg
ICAgICAgICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5k
LnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+
PSBvbGRTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3Rh
bnRJbmRleCArIDEpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRT
aXplOyBpIDwgbV9jb25zdGFudHMuc2l6ZSgpOyArK2kpCkBAIC0zNDcsMTAgKzM0OCwxMCBAQCBw
cml2YXRlOgogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lKCktPmlzQ2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBpbmxpbmVDYWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsK
LSAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlND
b25zdGFudChjYWxsZWUpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJh
bmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBp
ZiAob3BlcmFuZCA9PSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewog
ICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBi
ZWNhdXNlIHRoaXMgZW5hYmxlcyBDcmVhdGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAg
IC8vIHRoYXQgd2UgZG9uJ3QgaGF2ZSBzdWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3Ig
aW5saW5lZCB1c2VzIG9mIENhbGxlZSwgc2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2Fz
ZSBpZiB0aGUgZnVuY3Rpb24gaXMgYSBzaW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQu
CkBAIC00MTAsNyArNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNo
cmluaygwKTsKICAgICB9CiAKLSAgICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQs
IE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0
KE9wZXJhbmQgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNl
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVt
YXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1ZSwgc2V0TW9kZSk7CiAgICAgfQpAQCAtNjkxLDE1ICs2
OTIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAor
ICAgIE5vZGUqIGpzQ29uc3RhbnQoRnJvemVuVmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1
ZSkpOworICAgIH0KKwogICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJl
IHN0cm9uZ2x5IG1hcmtlZC4KICAgICBOb2RlKiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRW
YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5m
byhtX2dyYXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4g
anNDb25zdGFudChtX2dyYXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQog
CiAgICAgTm9kZSogd2Vha0pTQ29uc3RhbnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJl
ZXplKGNvbnN0YW50VmFsdWUpKSk7CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGgu
ZnJlZXplKGNvbnN0YW50VmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25z
IHRvIGdldC9zZXQgdGhlIHRoaXMgdmFsdWUuCkBAIC04NTAsNyArODU2LDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7
CiAgICAgICAgIGlmIChvcCA9PSBUYWlsQ2FsbCkgewpAQCAtOTU5LDcgKzk2NSwzNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgp
OwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGEgdHJ1ZSBi
b3R0b20gdmFsdWUgZm9yIGV4YW1wbGUgYW55IG9iamVjdCBzcGVjdWxhdGlvbiB3aWxsIG5vdyBi
ZSBPYmplY3R8T3RoZXIgYXMgdGhpcyByZXR1cm5zIG51bGwuCisgICAgLy8gV2Ugc2hvdWxkIGZp
eCB0aGlzIHdoZW4gd2UgY2FuIGFsbG9jYXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAg
RnJvemVuVmFsdWUqIGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlw
ZSBzcGVjKQorICAgIHsKKyAgICAgICAgLy8gSXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgd2hh
dCB3ZSByZXR1cm4gaGVyZS4KKyAgICAgICAgaWYgKHNwZWMgPT0gU3BlY05vbmUpCisgICAgICAg
ICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoc3Bl
Y3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjT3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1f
Z3JhcGguZnJlZXplKGpzTnVsbCgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlu
cyhzcGVjLCBTcGVjQm9vbGVhbikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUo
anNCb29sZWFuKHRydWUpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVj
LCBTcGVjRnVsbE51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNO
dW1iZXIoMCkpOworCisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNC
aWdJbnQpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPmJpZ0ludENv
bnN0YW50T25lLmdldCgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVj
LCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5m
cmVlemUobV92bS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworCisgICAgICAgIGlmIChz
cGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNDZWxsT3RoZXIgfCBTcGVjT2JqZWN0KSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgQVNT
RVJUKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY0VtcHR5KSk7CisgICAgICAgIHJldHVy
biBtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSBnZXRB
cnJheU1vZGUoQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewogICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jazsKQEAgLTExNzQs
NyArMTIxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIE9wdGlvbmFsOiBhIGNvbnRpbnVhdGlv
biBibG9jayBmb3IgcmV0dXJucyB0byBqdW1wIHRvLiBJdCBpcyBzZXQgYnkgZWFybHkgcmV0dXJu
cyBpZiBpdCBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgQmFzaWNCbG9jayogbV9jb250aW51YXRp
b25CbG9jazsKIAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1ZTsKKyAgICAg
ICAgT3BlcmFuZCBtX3JldHVyblZhbHVlOwogICAgICAgICAKICAgICAgICAgLy8gU3BlY3VsYXRp
b25zIGFib3V0IHZhcmlhYmxlIHR5cGVzIGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2Rl
IGJsb2NrLAogICAgICAgICAvLyB3aGljaCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMg
dGhhdCBwYXN0IERGRyBjb21waWxhdGlvbnMgb2YgdGhpcwpAQCAtMTE5NCw3ICsxMjMwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIENvZGVCbG9jayosCiAgICAgICAgICAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssCiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwg
aWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZXR1cm5WYWx1ZVZSLAorICAgICAgICAgICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICAgICAgICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZTo6S2luZCwKQEAgLTEyNjksNiArMTMwNSw3IEBAIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2Vy
OjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCkKICAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sg
PSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2soQnl0ZWNvZGVJbmRleCgpLCBtX251bUFyZ3VtZW50
cywgbV9udW1Mb2NhbHMsIG1fbnVtVG1wcywgMSkpOwogICAgIEJhc2ljQmxvY2sqIGJsb2NrUHRy
ID0gYmxvY2sucHRyKCk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7
CisgICAgVkVSQk9TRV9MT0coIkFkZGluZyBuZXcgdW50YXJnZXRhYmxlIGJsb2NrOiAiLCBibG9j
a1B0ci0+aW5kZXgsICJcbiIpOwogICAgIHJldHVybiBibG9ja1B0cjsKIH0KIApAQCAtMTMwMSw4
ICsxMzM4LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgogQnl0ZUNvZGVQYXJzZXI6OlRl
cm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBw
YywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8Q2FsbE9wPigpOwotICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoYnl0ZWNvZGUu
bV9jYWxsZWUpOwotICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5
dGVjb2RlLm1fYXJndik7CisgICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChjYWxsZWVGb3IoYnl0
ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkpOworICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5
dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKIAogICAgIENhbGxMaW5rU3Rh
dHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwK
QEAgLTEzMTAsOCArMTM0Nyw4IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vCiAKICAgICBJbmxp
bmVDYWxsRnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9k
ZSk7CiAKLSAgICByZXR1cm4gaGFuZGxlQ2FsbChieXRlY29kZS5tX2RzdCwgb3AsIGtpbmQsIHBj
LT5zaXplKCksIGNhbGxUYXJnZXQsCi0gICAgICAgIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJP
ZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOworICAgIHJldHVybiBoYW5k
bGVDYWxsKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50
KCksIEpJVFR5cGU6OkRGR0pJVCksIG9wLCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAor
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50
SW5kZXguY2hlY2twb2ludCgpKSwgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQ
cmVkaWN0aW9uKCkpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5
KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCkKQEAgLTEz
MjEsNyArMTM1OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2Fs
bExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsCiB9CiAKIEJ5dGVDb2RlUGFy
c2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUg
b3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUs
CiAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CkBAIC0xNjM3LDcgKzE2NzQsNyBAQCB1bnNpZ25l
ZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVk
Q3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNp
YWxpemF0aW9uS2luZEZvcihraW5kKTsKQEAgLTE2NzEsNyArMTcwOCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIENhCiAgICAgc2l6ZV90IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgu
bV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCk7CiAKICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkK
LSAgICAgICAgcmVzdWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCku
dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChyZXN1bHQpOwogCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJp
YWJsZSA9IG51bGxwdHI7CiAgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4
MjMsNyArMTg2MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgbV9jdXJyZW50SW5z
dHJ1Y3Rpb24gPSBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6
OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFu
dCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVu
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRl
eCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2Nr
LCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0
aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFs
YW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2Fs
bGVlKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxl
ZSwgIlxuIik7CiAKQEAgLTE5MDAsNyArMTkzNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBj
CiAgICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZh
cmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAg
Y29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVu
dHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LAogICAgIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCkBAIC0yMDQ0LDcgKzIwODEsNyBAQCB1bnNp
Z25lZCBCeXRlQ29kZVBhcnNlcjo6Z2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3Rh
dHVzJiBjYWxsTGlua1N0YXR1cwogfQogCiBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlv
blJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLAogICAgIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQpAQCAtMjIyMCw3ICsyMjU3LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRp
b25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4
KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVz
dWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBB
U1NFUlQob3AgPT0gQXJpdGhNaW4gfHwgb3AgPT0gQXJpdGhNYXgpOwogCkBAIC0yMjUwLDcgKzIy
ODcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
Citib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwg
T3BlcmFuZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0co
IiAgICAgICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTIzODks
MjcgKzI0MjYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJh
eVZhbHVlc0ludHJpbnNpYzogewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAg
ICAgICAgIEl0ZXJhdGlvbktpbmQga2luZDsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2lj
KSB7Ci0gICAgICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAg
Y2FzZSBUeXBlZEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJ
dGVyYXRpb25LaW5kOjpWYWx1ZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUtl
eXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5RW50cmllc0lu
dHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0g
ICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJh
dGlvbktpbmRGb3JJbnRyaW5zaWMoaW50cmluc2ljKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCEha2luZCk7CiAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4
aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRh
bnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1cC4KLSAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0g
anNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKyAgICAg
ICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oKmtpbmQpKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gZXhp
c3RpbmcgZXJyb3Igc3RyaW5nLgogICAgICAgICAgICAgdW5zaWduZWQgZXJyb3JTdHJpbmdJbmRl
eCA9IFVJTlQzMl9NQVg7CkBAIC0zNjQ3LDcgKzM2NjgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgSQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJl
c3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2Niw3ICszNjg3
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKQogewogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAg
IGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKQEAgLTM3ODAsNyArMzgwMSw3
IEBAIHN0YXRpYyB2b2lkIGJsZXNzQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBu
b2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYg
dmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODU5LDcgKzM4ODAsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIFNwZWN1bGF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAotICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsCisgICAgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBU
eXBlZEFycmF5VHlwZSB0eXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7
CiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlKSkKQEAgLTM5MTYsNyArMzkzNyw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0
YW50SW50ZXJuYWxGdW5jdGlvbigKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9m
ZnNldCwKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIEludGVybmFs
RnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsK
ICAgICBWRVJCT1NFX0xPRygiICAgIEhhbmRsaW5nIGNvbnN0YW50IGludGVybmFsIGZ1bmN0aW9u
ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiXG4iKTsKQEAgLTY2MDQsMjAgKzY2MjUsNDI1IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgTEFTVF9PUENPREUob3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9j
b25zdHJ1Y3RfdmFyYXJnczogewogICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGw8T3BDb25z
dHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbnN0cnVjdFZhcmFyZ3MsIENhbGxN
b2RlOjpDb25zdHJ1Y3QpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJl
bnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwg
d2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3Ry
dWN0aW9uIik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7
CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENh
bGxFdmFsPigpOwogICAgICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1f
YXJndjsKICAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcElu
Zm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2Rl
Lm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9jYWxsX2V2YWwpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAg
ICAgdWludDMyX3Qgc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVu
TW9kZXM7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9kZXMgPSBX
VEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7CisgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZSZW1h
aW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAgIGJvb2wg
Z2VuZXJhdGVkQ2FzZSA9IGZhbHNlOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZv
cihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNC
bG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
c3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4OworCisgICAgICAgICAgICBOb2RlKiBzeW1ib2xJ
dGVyYXRvciA9IGdldERpcmVjdChieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKworICAgICAgICAgICAg
aWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRmlyc3Qgc2V0IHVwIHRoZSB3YXRjaHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29y
cmVjdG5lc3MuCisgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemls
eShhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAg
IEZyb3plblZhbHVlKiBmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gbV9ncmFwaC5mcmVl
emUoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSk7
CisgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPT0gMSkKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW5TeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2Nr
ID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGtub3duSXRlckZ1bmN0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhm
cm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpc0FycmF5ID0gYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJ
bmZvKEFycmF5VHlwZSksIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFk
ZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdl
dChmYXN0QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRh
a2VuID0gQnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogYW5kUmVzdWx0ID0gYWRkVG9HcmFwaChBcml0aEJpdEFuZCwgaXNBcnJheSwga25vd25J
dGVyRnVuY3Rpb24pOworCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGJpdCBh
bmQgY2Fubm90IGhhdmUgZWZmZWN0cyBzbyBpdCdzIG9rIHRvIGV4aXQgaGVyZS4KKyAgICAgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9w
SW5mbyhicmFuY2hEYXRhKSwgYW5kUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFz
dEFycmF5QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVGhlIGJyYW5jaCBhYm92ZSBtYXkgaGF2
ZSBtYWRlIGV4aXQgaW52YWxpZCBidXQgaXQncyBhY3R1YWxseSBvay4KKyAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwor
ICAgICAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uS2luZDo6VmFsdWVzKSkpOworICAgICAgICAgICAg
ICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1
Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRl
cmF0ZWRPYmplY3QpKSwgaXRlcmF0b3IsIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtp
bmROb2RlKTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgaXRlcmF0
b3IpOworCisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwganNDb25zdGFudChK
U1ZhbHVlKCkpKTsKKworICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBk
b24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4
dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5k
ZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOwor
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAg
aWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZ2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0
ZWRDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxv
Y2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAg
ICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVy
YXRvck9wZW4+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09
IE5vblRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQo
KTsKKworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRl
cmF0b3IpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlz
T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAg
ICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOwor
ICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0
QmxvY2spOworICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFy
Z2V0KG5vdE9iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwg
T3BJbmZvKGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvcikpOworCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5v
dE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAg
ICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBiZSBhIHR5cGUgZXJyb3IuLi4KKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvdywganNDb25zdGFudChqc051bGwoKSkp
OworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGlzT2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7
CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVk
aWN0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29k
ZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogbmV4dEltcGwgPSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUobmV4dElt
cGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6
OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3Rh
dHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4
dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisK
KworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fbmV4dCwgcHJl
ZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihuZXh0SW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBv
cGNvZGVMZW5ndGgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxz
LiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8g
dGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0g
Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlv
bi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChK
dW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9y
VGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVk
Q2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZ2VuZXJhdGVk
Q2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3RhbnQoSlNWYWx1
ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwgcmVzdWx0KTsKKworICAgICAgICAgICAgICAgIC8vIERv
IG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWlu
IHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgbV9jdXJy
ZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVu
dEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgcHJv
Y2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwg
T3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydElu
ZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgICAg
ICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pdGVyYXRv
cl9vcGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogewor
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMgPSBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVzKTsKKyAgICAg
ICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9mSXRlcmF0aW9u
TW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4OworICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAg
ICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0gZ2xvYmFsT2Jq
ZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogY29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAg
ICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5ICYmIGFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9ucyB3ZSBuZWVkIGZv
ciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRk
TGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworCisgICAgICAgICAg
ICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgIT0gMSkgeworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBoYXNOZXh0ID0gYWRkVG9HcmFwaChJc0VtcHR5LCBnZXQoYnl0ZWNvZGUubV9u
ZXh0KSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZmFzdEFycmF5
QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOwor
ICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0
QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0g
QnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGhhc05leHQpOworCisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Tm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSksIGl0ZXJhdG9yKTsK
KworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzRG9uZUJsb2NrID0gYWxsb2NhdGVVbnRh
cmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERvbmVCbG9j
ayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBkb0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4ID0ganNDb25z
dGFudChqc051bWJlcigtMSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFk
ZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihK
U0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMyT25seSksIGl0
ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNEb25lID0gYWRkVG9HcmFwaChD
b21wYXJlU3RyaWN0RXEsIGluZGV4LCBkb25lSW5kZXgpOworCisgICAgICAgICAgICAgICAgICAg
IEJyYW5jaERhdGEqIGlzRG9uZUJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQo
KTsKKyAgICAgICAgICAgICAgICAgICAgaXNEb25lQnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hU
YXJnZXQoaXNEb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBpc0RvbmVCcmFuY2hEYXRh
LT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGlzRG9uZUJyYW5jaERhdGEpLCBpc0RvbmUp
OworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9k
ZShtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAg
ICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChCeXRlY29k
ZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUp
KTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBub3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFs
RmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVs
ZDo6SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRv
cikpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYWJsZSA9IGdldChieXRlY29kZS5t
X2l0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYnV0dGVyZmx5ID0gYWRkVG9H
cmFwaChHZXRCdXR0ZXJmbHksIGl0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
bGVuZ3RoID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIGl0ZXJhYmxlLCBidXR0ZXJmbHkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBp
c0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIGluZGV4LCBsZW5ndGgpOworICAg
ICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IC8vIFRoZSBhYm92ZSBjb21wYXJlIGRv
ZXNuJ3QgcHJvZHVjZSBlZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5kZXggYW5kIGxlbmd0aCBhcmUg
aW50MzJzLgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAg
ICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hE
YXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5j
aFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5v
dFRha2VuID0gQnJhbmNoVGFyZ2V0KGRvTG9hZEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaXNEb25lKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBkb0xv
YWRCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmllbGQsIE9wSW5m
byhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwg
T3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikpOworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBvbmUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRo
QWRkLCBpbmRleCwgb25lKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGZhbHNlTm9kZSA9
IGpzQ29uc3RhbnQoanNCb29sZWFuKGZhbHNlKSk7CisKKworICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2Ug
aXQgb25seSB1c2VzIHRocmVlIGNoaWxkCisgICAgICAgICAgICAgICAgICAgIC8vIHNsb3RzLgor
ICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg0MTkyCisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRl
Y29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJv
b20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldEJ5
VmFsID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIEdldEJ5VmFsLCBPcEluZm8oYXJyYXlNb2Rl
LmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fdmFsdWUsIGdldEJ5VmFsKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fZG9uZSwgZmFsc2VOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJ
dGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSwgbmV3SW5k
ZXgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24n
dCB3YW50IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBi
eXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUlu
ZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExv
Y2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5m
byhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJvbGwgYmFjayB0aGUg
Y2hlY2twb2ludC4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7
CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
ID0gaXNEb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHRydWVOb2RlID0ganNDb25zdGFudChqc0Jvb2xlYW4odHJ1
ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpz
TnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJvdHRvbU5vZGUgPSBqc0Nv
bnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbU5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCB0cnVlTm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19j
YXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNv
ZGUubV9pdGVyYXRvciksIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8g
b3VyIHNldCBsb2NhbHMuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0
ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nl
c3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1w
LCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVy
bWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25N
b2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAgICAgICBj
bGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWluYWxpdHkg
dGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0PihjdXJyZW50SW5zdHJ1Y3Rp
b24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAgICAgICAg
ICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdl
dGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERvbmVCbG9jayA9
IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgIE9wZXJhbmQg
bmV4dFJlc3VsdCA9IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvclJlc3Vs
dCA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJh
bmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAg
ICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2Jq
ZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZv
KGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvclJlc3VsdCkpOworICAg
ICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IG5vdE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAg
ICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpu
ZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iX3MpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dy
YXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8o
RXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAg
ICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgYXV0byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5
dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2V4aXRP
SyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RC
bG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVl
TWF0Y2hpbmdTcGVjdWxhdGlvbih2YWx1ZVByZWRpY2l0aW9uKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byogZG9uZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKS5lbnN1cmUoZG9uZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5
cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAg
ICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1
dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jh
c2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChi
eXRlY29kZS5tX2RvbmUsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoZG9uZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBn
ZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8g
U2V0IGEgdmFsdWUgZm9yIG1fdmFsdWUgc28gd2UgZG9uJ3QgdGhpbmsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbVZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAg
QnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAg
ICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChjb250aW51
YXRpb24pOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5j
aFRhcmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJy
YW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBnZXQoYnl0ZWNvZGUubV9kb25lKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90
RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKS5lbnN1cmUodmFsdWVJbXBsKTsKKworICAgICAgICAgICAgICAgICAg
ICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsK
KworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3Rh
dHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZUdldEJ5SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVQcmVkaWNpdGlvbiwgYmFzZSwgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2YWx1ZUltcGwpLCBp
ZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcmVz
dWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCByZXN1bHQpOworCisg
ICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVu
IG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsK
KyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAg
ICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1
cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNv
bnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2l0ZXJhdG9yX25leHQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBv
cF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBv
aW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcikpOwpAQCAtNzEwNyw3ICs3
NTMzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxhdGVyLCBhcyB0
aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAgICAgICAgICAg
Ly8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVyLgogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4o
KTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxsRnJhbWVTbG90OjpjYWxsZWUp
OworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAgICAgICAgICAg
IGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxK
U0Z1bmN0aW9uKj4oKm1fdm0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdlYWtKU0NvbnN0
YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc0ODYsNyArNzkxMiw3IEBAIEJ5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICBKU0Z1bmN0aW9u
KiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJldHVyblZhbHVlLAogICAgIFZp
cnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsCkBAIC03NDk1
LDcgKzc5MjEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3Rh
Y2tFbnRyeSgKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRC
bG9jayhwcm9maWxlZEJsb2NrKQogICAgICwgbV9jb250aW51YXRpb25CbG9jayhjb250aW51YXRp
b25CbG9jaykKLSAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAgICAsIG1fcmV0
dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9p
bmxpbmVTdGFja1RvcCkKIHsKICAgICB7CkBAIC03NTYxLDcgKzc5ODcsNyBAQCBCeXRlQ29kZVBh
cnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgLy8gTWFj
aGluZSBjb2RlIGJsb2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sgPT0gYnl0ZUNv
ZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKCFjYWxsZWUpOwotICAgICAg
ICBBU1NFUlQoIXJldHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXR1
cm5WYWx1ZS5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZVN0YXJ0
LmlzVmFsaWQoKSk7CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOwpAQCAtNzk3Niw3
ICs4NDAyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gbm9k
ZUFuZEluZGV4ID0gYmxvY2stPmZpbmRUZXJtaW5hbCgpOwotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxlKTsKKyAgICAg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJbmRleC5ub2RlLCBub2RlQW5k
SW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICAgICAgYmxvY2st
PnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IGU3ZjZlNzYyNDY2OWIzMDFmNWEwMjA0
OGMyNWQ0ODE1YzNhMTMzOWQuLjYxMGQ3ZDIwZWY2NTM1ZjdhOGU5NWJjZWExMjFlZjNiOGFiNDAy
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJs
b2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2lj
QmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9k
ZU9yaWdpbiwgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgTm9kZSogbGl2ZW5lc3NO
b2RlID0gamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsK
ICAgICAgICAgaWYgKCFsaXZlbmVzc05vZGUpCkBAIC0zMDIsMTEgKzMwMiw5IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdm9pZCBqZXR0aXNvbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Js
b2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luKQogICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3Bl
cmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJP
ZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0
aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aSkpOwotICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVk
QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGtlZXBPcGVy
YW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0
aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOworCiAgICAg
ICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpldHRpc29uZWRCbG9jayk7CiAg
ICAgfQogICAgIApAQCAtMzUyLDExICszNTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8g
VGltZSB0byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUga2VwdCBh
bGl2ZSBpbiBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0byBoaXR0aW5n
IHRoZSBmaXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93biBhCiAgICAg
ICAgICAgICAvLyBkaWZmZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJsb2NrLgotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBr
ZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2Rl
T3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICAgICAga2VlcE9wZXJh
bmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9j
aywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5v
cGVyYW5kRm9ySW5kZXgoaSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNlY29uZEJsb2NrLT5waGlzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1OWI3NzgwYTZj
YzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjYwMDMzMmYxOTBmZjhiNDA0MmNkNTQyYWI5
NWI1MDUzNmFkN2E3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKQEAgLTI3NCw2ICsyNzQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQog
ICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9w
X2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBv
cF9pdGVyYXRvcl9uZXh0OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CiAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGU6CkBAIC0zMTEsNiArMzEzLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAg
ICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToK
ICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBjYXNlIGhhbmRs
ZVVuY2F1Z2h0RXhjZXB0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9j
YXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbjoKICAgICBj
YXNlIG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY29uc3RydWN0X3JldHVy
bl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlv
bjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFh
NGRlY2RhMGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYuLmRiYzgzMWMyZWJlMDg2Zjg3
MzY2YTdlNTRhMzVlNTkzYTliMDc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMjQxMSw3ICsyNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTogewotICAgICAgICAgICAgbm9k
ZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggYmY0MzUwYzRjZDE3ZTNk
NTAwNjYzOGY1NWFhYzM1YTU2NTI5OTRhMS4uZDljOTc0MjhmZDZhZTVlYTUwNmQwNTcyNjczMDIw
ZGQxYWZmMTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JB
bGxLaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMu
aApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGJlZm9yZUlubGlu
ZUNhbGxGcmFtZSk7CiAgICAgICAgIGlmIChhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2lu
dCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3Bv
aW50KCkgIT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSk7Ci0gICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0g
YWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpLCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBt
b3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1
cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
YmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29kZUluZGV4KCku
b2Zmc2V0KCkgfHwgbm9kZUFmdGVyLT5vcCgpID09IEV4aXRPSyB8fCBub2RlQWZ0ZXItPm9wKCkg
PT0gSW52YWxpZGF0aW9uUG9pbnQsICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBpdCBz
aG91bGQgY2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vycm91bmRpbmcg
Ynl0ZWNvZGVzLiIpOwogCiAgICAgICAgICAgICBhdXRvIGxpdmVCZWZvcmUgPSB0bXBMaXZlbmVz
c0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAg
ICAgICAgICBhdXRvIGxpdmVBZnRlciA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJs
b2NrLCBhZnRlci5ieXRlY29kZUluZGV4KCkpOwpAQCAtMTAyLDggKzEwMiw2IEBAIHZvaWQgZm9y
QWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBu
b2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpLCAiVHJhbnNpdGlv
bmluZyBhY3Jvc3MgYSBjaGVja3BvaW50IGJ1dCBiZWZvcmUgYW5kIGFmdGVyIGRvbid0IHNoYXJl
IGFuIGlubGluZUNhbGxGcmFtZS4iKTsKLQogICAgIC8vIERldGVjdCBraWxscyB0aGUgc3VwZXIg
Y29uc2VydmF0aXZlIHdheTogaXQgaXMga2lsbGVkIGlmIGl0IHdhcyBsaXZlIGJlZm9yZSBhbmQg
ZGVhZCBhZnRlci4KICAgICBCaXRWZWN0b3IgbGl2ZUFmdGVyID0gZ3JhcGgubG9jYWxzQW5kVG1w
c0xpdmVJbkJ5dGVjb2RlKGFmdGVyKTsKICAgICB1bnNpZ25lZCBudW1Mb2NhbHMgPSBncmFwaC5i
bG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCmluZGV4
IDIwMmQyMjUwNTNmYTlkZmJlNWMyM2M2NGJjZjhiZTM4NGUzZTc2NTQuLjdjYzM0YWUyZDBkNGU1
Zjg0OGU2OTU3MzAyNDkyYzEyMWQ3MWZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCkBAIC01OSw2ICs1OSw5IEBA
IHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNpY0Jsb2NrKiBi
YXNpY0Jsb2NrKQogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7
CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fscygp
ID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NF
UlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNC
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOworICAgIEFTU0VSVChiYXNp
Y0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFs
dWVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFi
bGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1i
ZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkp
OwogCiAgICAgbV9hYnN0cmFjdFZhbHVlcy5yZXNpemUoKTsKIApAQCAtMTYxLDYgKzE2NCwxMCBA
QCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgICAgIGVu
dHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwogICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgIH0KKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVy
T2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLnRt
cChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLnRtcChp
KS5jbGVhcigpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpAQCAtMTc1LDEzICsxODIsOSBA
QCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgYmxvY2st
PmNmYVRoaW5rc1Nob3VsZFRyeUNvbnN0YW50Rm9sZGluZyA9IGZhbHNlOwogICAgICAgICBibG9j
ay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7
CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1
cmVzQXJlV2F0Y2hlZDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFs
dWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICAgICAgYmxvY2st
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnZh
bHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyAr
K2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsK
LSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkW2ldLmNsZWFyKCk7CisgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTIzOSw3ICsyNDIsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Js
b2NrKCkKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICAgICAgY2FzZSBG
bHVzaDogewogICAgICAgICAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMgdGhlIHZhbHVl
IGZyb20gaGVhZCB0byB0YWlsLgotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gdmFyaWFi
bGVBdChpbmRleCk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBhdEluZGV4KGluZGV4
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKQEAgLTMwNCw3ICszMDcsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNp
Y0Jsb2NrKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IHZhcmlhYmxlQXQo
aSk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gYXRJbmRleChpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiB2YWx1ZUF0VGFp
bCA6IGJsb2NrLT5zc2EtPnZhbHVlc0F0VGFpbCkKQEAgLTM0Myw2ICszNDYsNyBAQCBib29sIElu
UGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0
bykKICAgICAgICAgZGF0YUxvZygiICAgTWVyZ2luZyBmcm9tICIsIHBvaW50ZXJEdW1wKGZyb20p
LCAiIHRvICIsIHBvaW50ZXJEdW1wKHRvKSwgIlxuIik7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlh
Ymxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1i
ZXJPZkxvY2FscygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7Cisg
ICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9PSB0by0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKICAgICAKICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKICAgICAKQEAgLTM1MiwxNCArMzU2LDkgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0
ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgCiAgICAgc3dp
dGNoIChtX2dyYXBoLm1fZm9ybSkgewogICAgIGNhc2UgVGhyZWFkZWRDUFM6IHsKLSAgICAgICAg
Zm9yIChzaXplX3QgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGZyb20tPnZhcmlhYmxlc0F0VGFp
bC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBBYnN0cmFj
dFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQp
OwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0
aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwgdG8tPnZhcmlh
Ymxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hcmd1
bWVudChhcmd1bWVudCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVf
dCBsb2NhbCA9IDA7IGxvY2FsIDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxz
KCk7ICsrbG9jYWwpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0g
dG8tPnZhbHVlc0F0SGVhZC5sb2NhbChsb2NhbCk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwu
bG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKSwgZnJvbS0+dmFy
aWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXQo
aW5kZXgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2Nr
cyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KSwgdG8tPnZhcmlhYmxl
c0F0SGVhZC5hdChpbmRleCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hdChpbmRleCkpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRleCAxODY1ZTZhMWVmZmMzZGFh
ZWZlNTg0Y2E4NjJjNDliYzM2ODU4NTAwLi5jNWQwMjY4NzNlMDEwZDA3ZjM4MTFjNmM0ZmVmNTY2
ZTFjYTcwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0xNTgsMTAgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4mIHZhcmlhYmxlc0ZvckRlYnVnZ2luZygpOwogCisg
ICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLnNpemUoKTsgfQog
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJs
ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2ln
bmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mVG1w
cygpOyB9CiAgICAgCi0gICAgQWJzdHJhY3RWYWx1ZSYgdmFyaWFibGVBdChzaXplX3QgaW5kZXgp
CisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgewogICAgICAg
ICBhY3RpdmF0ZVZhcmlhYmxlSWZOZWNlc3NhcnkoaW5kZXgpOwogICAgICAgICByZXR1cm4gZmFz
dEZvcndhcmQobV92YXJpYWJsZXNbaW5kZXhdKTsKQEAgLTE2OSwxNyArMTcxLDE3IEBAIHB1Ymxp
YzoKIAogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJh
bmQpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9w
ZXJhbmQpKTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90IGlu
ZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMubG9jYWxJ
bmRleChpbmRleCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5sb2NhbElu
ZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNp
emVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVz
LmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJs
ZXMuYXJndW1lbnRJbmRleChpbmRleCkpOwogICAgIH0KICAgICAKICAgICAvLyBDYWxsIHRoaXMg
YmVmb3JlIGJlZ2lubmluZyBDRkEgdG8gaW5pdGlhbGl6ZSB0aGUgYWJzdHJhY3QgdmFsdWVzIG9m
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKaW5kZXggZjVlZWYy
ZjNkZjcyMTI5YTgzOGM3Njg2ZTI2Yjk2MGI1MGY1ODFlZS4uN2EzMzY2NmFhNzFhMWY2NjZjOTRi
MjhiNjQ0NzQ4NGQ2N2JiYjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMYXp5SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6
eUpTVmFsdWUuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExhenlKU1Zh
bHVlIG5ld1N0cmluZyhHcmFwaCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgTGF6aW5lc3NLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBTcGVjdWxhdGVkVHlwZSBzcGVj
dWxhdGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLbm93blZhbHVlID8gU3BlY0J5
dGVjb2RlVG9wIDogU3BlY1N0cmluZzsgfQogICAgIAogICAgIEZyb3plblZhbHVlKiB0cnlHZXRW
YWx1ZShHcmFwaCYpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKaW5kZXggYTg1MmRiZGQ5YjkzNzBkNmRlNjUzYzVhNDg4NzExNzAwZThiODc5Yi4u
NTIyMzRiNGE1ZDNmNjk3NmMyZmE5OTgxNmRjZTExMDY4MTA1NGVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC00OCwxMSArNDgsMTIgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtp
bmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBr
aW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1J
bmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCwgdW5zaWduZWQgZGZnSVJJbmRleCkKICAgICA6
IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5z
ZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQogICAgICwgbV9qc1ZhbHVlU291cmNl
KGpzVmFsdWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCiAgICAg
LCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAgICAsIG1fZGZnSVJJbmRleChkZmdJ
UkluZGV4KQogICAgICwgbV9zdHJlYW1JbmRleChzdHJlYW1JbmRleCkKIHsKICAgICBib29sIGNh
bkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMxZDY4Nzc5NzJmMjU5ZDYyYzFhMjMwMGIyYjE2MS4u
OGNlOGI5MjA3OWFmNzUyOTk3MDNmMTdmZGRhZTJmZWMzYjljMjhjNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2
b2lkKiwgdm9pZAogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBz
cGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2luZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3Qg
T1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7Ci0gICAgT1NSRXhpdChFeGl0S2luZCwgSlNW
YWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQq
LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFY
KTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNp
Z25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgsIHVuc2lnbmVkIGRmZ0lSSW5kZXggPSBVSU5U
X01BWCk7CiAKICAgICBmcmllbmQgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVP
U1JFeGl0KENhbGxGcmFtZSopOwogCkBAIC0xNTksNiArMTU5LDcgQEAgc3RydWN0IE9TUkV4aXQg
OiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUg
bV92YWx1ZVByb2ZpbGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUluZGV4OworICAg
IHVuc2lnbmVkIG1fZGZnSVJJbmRleDsKIAogICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4gY29kZUxvY2F0aW9uRm9yUmVwYXRjaCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5k
ZXggMWRmMzk0MzI0MWQ1YWY3OTMxOThlZjljNzEyNzNlNzU4YTBhMjI2YS4uMDg1ZGM1MzBiM2Jj
Mzc5ZmI0ZjNlNjA5MWNiNWM2NTIwMjc1ODdhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTU5LDkgKzE1
OSwxNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJu
UEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9D
QVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUx
NkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSkKIAogICAgICAgICBzd2l0Y2ggKHRydWVD
YWxsZXJDYWxsS2luZCkgewotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKLSAg
ICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCk7Cisg
ICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CisgICAgICAgICAgICBpZiAoY2Fs
bEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfY2FsbCkKKyAgICAgICAgICAgICAgICBqdW1w
VGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAgICAgICAgZWxz
ZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3Jfb3BlbikKKyAg
ICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJh
dG9yX29wZW4pOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlE
KCkgPT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJ
TlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX25leHQpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKICAg
ICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDYgKzI0NSw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CiAg
ICAgcmV0dXJuIGp1bXBUYXJnZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEw
MDNlZDVmZDNmYmMzODE2MmM4OTJiMzRjODQ3YjkyNzY4M2ZhZS4uNmUwOTBhMzhiZmMwOTQ3NWE3
ZDdiZDU5MWUyNTFhM2U5MzQ2ODU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExMDEs
NiArMTEwMSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y2hpbGQx
KCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNl
c0FzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBM
YXp5SlNDb25zdGFudDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2Rl
LT5sYXp5SlNWYWx1ZSgpLnNwZWN1bGF0ZWRUeXBlKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBDYWxs
U3RyaW5nQ29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CkBAIC0xMzA1LDcgKzEz
MTEsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgotICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OgogICAg
ICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2
ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLgogICAgICAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsICJVbmV4cGVjdGVkIG5vZGUgZHVyaW5n
IHByZWRpY3Rpb24gcHJvcGFnYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAKaW5kZXggMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4YTFiZmYzOThj
Yi4uOWFlOTgwNGM3NWI5NWVjNTYxZWQyZjFhNTJiOWRlYzk4Yzg0NWVmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTcxLDYgKzcxLDggQEAgcHVibGlj
OgogICAgICAgICAgICAgZGF0YUxvZ0YoIikgPT0gKCVzID0gIiwgI3JpZ2h0KTsgXAogICAgICAg
ICAgICAgZGF0YUxvZyhyaWdodCk7IFwKICAgICAgICAgICAgIGRhdGFMb2dGKCIpICglczolZCku
XG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgICAgICAgICBkYXRhTG9nKCJcblxuXG4i
KTsgXAorICAgICAgICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihudWxscHRyKS0+
ZHVtcEJ5dGVjb2RlKCk7IFwKICAgICAgICAgICAgIGR1bXBHcmFwaElmQXBwcm9wcmlhdGUoKTsg
XAogICAgICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5F
X18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNsZWZ0ICIgPT0gIiAjcmlnaHQpOyBcCiAgICAgICAg
ICAgICBDUkFTSCgpOyBcCkBAIC01NjgsNiArNTcwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBPcGVyYW5kczxzaXplX3Q+IGdldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IHNldExvY2Fs
UG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
KE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSkg
fHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkp
OworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKKyAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAo
aSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworCisgICAgICAgICAgICAgICAgZ2V0TG9jYWxQ
b3NpdGlvbnMudG1wKGkpID0gbm90U2V0OworICAgICAgICAgICAgICAgIHNldExvY2FsUG9zaXRp
b25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygp
OyArK2kpIHsKICAgICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnRJbmNsdWRpbmdUaGlzKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFy
Z3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2Vz
U3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBU
aHJlYWRlZENQUykKQEAgLTcxNiw2ICs3MjYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
Y2hlY2tPcGVyYW5kKAorICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlv
bnMsIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kOjp0bXAoaSkpOworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhl
YWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgY2hlY2tPcGVy
YW5kKAogICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExv
Y2FsUG9zaXRpb25zLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkp
OwpAQCAtOTQ0LDcgKzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNrT3BlcmFuZCgK
ICAgICAgICAgQmFzaWNCbG9jayogYmxvY2ssIE9wZXJhbmRzPHNpemVfdD4mIGdldExvY2FsUG9z
aXRpb25zLAotICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0aW9ucywgVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgICAgIE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2Fs
UG9zaXRpb25zLCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAoZ2V0TG9jYWxQ
b3NpdGlvbnMub3BlcmFuZChvcGVyYW5kKSA9PSBub3RTZXQpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZk
YTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQuLjk0ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3
OWMxNmIxMGM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0x
MzcsNiArMTM3LDcgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgog
I2luY2x1ZGUgIkdldEJ5VmFsSGlzdG9yeS5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisj
aW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1
ZDYzOTBhYmEyNjM1ZTk2MzU5Zjg5MGUyZWI3MWE5NS4uYzA3NzVkOGUxYjEwNTAyZGYwMWE3NGFm
MGM2ZGViNGE4NzVjYzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01l
dGFkYXRhLnJiCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIE1ldGFkYXRhCiAgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgI3tvcC5v
cGNvZGVJRH0KICAgICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5jYXBpdGFsaXplZF9uYW1lfSYj
eyIgX19vcCIgaWYgaW5pdHN9KSN7aW5pdHN9IHsgfQogCiAje2ZpZWxkc30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgppbmRleCA5YjVlZTkwOTZlZTcxYjFiMGQz
ZWQ3ZjdjZDE4ZGIwNmZjYjM1ZmNmLi43ZjQzMDJkODgyZWY2ZjM1OTU3Njc3ZWRjZjA0OWQzMjZm
OTY0NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rp
b24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCkBA
IC01Myw3ICs1MywxNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGVuZAogCiAgIGRlZiBzb3J0IQotICAg
ICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8IGEubWV0YWRhdGEuZW1wdHk/ID8g
Yi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIH0KKyAgICAgIEBvcGNvZGVzID0gQG9wY29k
ZXMuc29ydCB7IHxhLCBifAorICAgICAgICAgIHJlc3VsdCA9IG5pbAorICAgICAgICAgIGlmIGEu
Y2hlY2twb2ludHMgb3IgYi5jaGVja3BvaW50cworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNv
ZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7YS5uYW1lfSIgaWYg
YS5jaGVja3BvaW50cyBhbmQgYS5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmFpc2Ug
IkJ5dGVjb2RlcyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2IubmFt
ZX0iIGlmIGIuY2hlY2twb2ludHMgYW5kIGIubWV0YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAg
IHJlc3VsdCA9IGEuY2hlY2twb2ludHMgPyBiLmNoZWNrcG9pbnRzID8gMCA6IC0xIDogMQorICAg
ICAgICAgIGVsc2lmCisgICAgICAgICAgICAgIHJlc3VsdCA9IGEubWV0YWRhdGEuZW1wdHk/ID8g
Yi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIAorICAgICAgICAgIGVuZAorICAgICAgICAg
IHJlc3VsdAorICAgICAgfQogICAgICAgQG9wY29kZXMuZWFjaCgmOmNyZWF0ZV9pZCEpCiAgIGVu
ZAogCkBAIC03Myw2ICs4MywxOSBAQCBjbGFzcyBTZWN0aW9uCiAgICAgICBlbmQKIAogICAgICAg
aWYgY29uZmlnWzplbWl0X2luX3N0cnVjdHNfZmlsZV0KKyAgICAgICAgICBpID0gMAorICAgICAg
ICAgIHdoaWxlIHRydWUKKyAgICAgICAgICAgICAgaWYgIW9wY29kZXNbaV0uY2hlY2twb2ludHMK
KyAgICAgICAgICAgICAgICAgIHByaW50KCJGT1VORCBUSEUgTlVNQkVSIE9GIENIRUNLUE9JTlRT
IEFORCBJJ00gUFJJTlRJTkcgSVQgSU5UTyBUSEUgRklMRSBXSU5ET1dTISIpCisgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIE5V
TUJFUl9PRl8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9XSVRIX0NIRUNLUE9JTlRT
ICN7aX1cbiIKKyAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVuZAorCisg
ICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgIGVuZAorICAgICAgICAgIG91dCA8PCAiXG4i
CisKICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VBQ0hfI3tjb25maWdbOm1hY3Jv
X25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFfU0laRShtYWNybykgXFxcbiIpCiAgICAgICAgICAg
aSA9IDAKICAgICAgICAgICB3aGlsZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDY0NTM5MTI3YjhjNzRjODIwMjliMmJiNjE4
MGU2OTY5NzFhNjRiYzguLjNmZjkyYjQ1M2E3MjkyNmRjNzRlY2JkY2Y2ZTMxNGJjZmIzNjhlMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CkBAIC00MywxMzkgKzQzLDEzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIENv
ZGVCbG9jazsKLSAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7Ci0gICAgY2xhc3MgVk07Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsKLSAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwotICAgIGNs
YXNzIEpTTW9kdWxlUmVjb3JkOwotICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAg
ICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTsKLSAgICBjbGFzcyBSZWdpc3RlcjsKLSAgICBjbGFzcyBKU1Njb3BlOwotICAgIGNsYXNz
IFNvdXJjZUNvZGU7Ci0gICAgY2xhc3MgU3RhY2tGcmFtZTsKLSAgICBzdHJ1Y3QgQ2FsbEZyYW1l
Q2xvc3VyZTsKLSAgICBzdHJ1Y3QgSGFuZGxlckluZm87Ci0gICAgc3RydWN0IEluc3RydWN0aW9u
OwotICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKLQotICAgIGVudW0gRGVidWdIb29rVHlwZSB7
Ci0gICAgICAgIFdpbGxFeGVjdXRlUHJvZ3JhbSwKLSAgICAgICAgRGlkRXhlY3V0ZVByb2dyYW0s
Ci0gICAgICAgIERpZEVudGVyQ2FsbEZyYW1lLAotICAgICAgICBEaWRSZWFjaERlYnVnZ2VyU3Rh
dGVtZW50LAotICAgICAgICBXaWxsTGVhdmVDYWxsRnJhbWUsCi0gICAgICAgIFdpbGxFeGVjdXRl
U3RhdGVtZW50LAotICAgICAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24sCi0gICAgfTsKLQotICAg
IGVudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKLSAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUs
Ci0gICAgICAgIFN0YWNrRnJhbWVFdmFsQ29kZSwKLSAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNv
ZGUsCi0gICAgICAgIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVO
YXRpdmVDb2RlCi0gICAgfTsKLQotICAgIGNsYXNzIEludGVycHJldGVyIHsKLSAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwot
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAgICAgICBmcmll
bmQgY2xhc3MgSklUOwotICAgICAgICBmcmllbmQgY2xhc3MgVk07Ci0KLSAgICBwdWJsaWM6Ci0g
ICAgICAgIEludGVycHJldGVyKFZNICYpOwotICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKLSAgICAg
ICAgCitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBFdmFsRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworY2xhc3MgSlNGdW5jdGlvbjsKK2NsYXNzIEpTR2xv
YmFsT2JqZWN0OworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKK2NsYXNzIEpTTW9kdWxlUmVj
b3JkOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNzIFJlZ2lzdGVyOworY2xh
c3MgSlNTY29wZTsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBTdGFja0ZyYW1lOworc3RydWN0
IENhbGxGcmFtZUNsb3N1cmU7CitzdHJ1Y3QgSGFuZGxlckluZm87CitzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CitzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisKK2VudW0gRGVidWdIb29rVHlwZSB7CisgICAg
V2lsbEV4ZWN1dGVQcm9ncmFtLAorICAgIERpZEV4ZWN1dGVQcm9ncmFtLAorICAgIERpZEVudGVy
Q2FsbEZyYW1lLAorICAgIERpZFJlYWNoRGVidWdnZXJTdGF0ZW1lbnQsCisgICAgV2lsbExlYXZl
Q2FsbEZyYW1lLAorICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50LAorICAgIFdpbGxFeGVjdXRlRXhw
cmVzc2lvbiwKK307CisKK2VudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKKyAgICBTdGFja0ZyYW1l
R2xvYmFsQ29kZSwKKyAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgU3RhY2tGcmFtZU1vZHVs
ZUNvZGUsCisgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwKKyAgICBTdGFja0ZyYW1lTmF0aXZl
Q29kZQorfTsKKworY2xhc3MgSW50ZXJwcmV0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xh
c3MgVk07CisKK3B1YmxpYzoKKyAgICBJbnRlcnByZXRlcihWTSAmKTsKKyAgICB+SW50ZXJwcmV0
ZXIoKTsKKyAgICAKICNpZiBFTkFCTEUoQ19MT09QKQotICAgICAgICBDTG9vcFN0YWNrJiBjbG9v
cFN0YWNrKCkgeyByZXR1cm4gbV9jbG9vcFN0YWNrOyB9CisgICAgQ0xvb3BTdGFjayYgY2xvb3BT
dGFjaygpIHsgcmV0dXJuIG1fY2xvb3BTdGFjazsgfQogI2VuZGlmCi0gICAgICAgIAotICAgICAg
ICBzdGF0aWMgaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOworICAgIAorICAgIHN0
YXRpYyBpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCk7CiAKLSAgICAgICAgc3RhdGlj
IGlubGluZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOworICAgIHN0YXRpYyBpbmxpbmUg
T3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
ICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CisgICAgc3RhdGljIGJvb2wgaXNPcGNv
ZGUoT3Bjb2RlKTsKICNlbmRpZgogCi0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZVByb2dyYW0oY29u
c3QgU291cmNlQ29kZSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNPYmopOwotICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEpTVmFs
dWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxU
eXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7
Ci0gICAgICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29u
c3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNT
Y29wZSopOwotCi0gICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1
bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2
LCBpbnQmIGFyZ2MpOwotCi0gICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdW53aW5k
KFZNJiwgQ2FsbEZyYW1lKiYsIEV4Y2VwdGlvbiopOwotICAgICAgICB2b2lkIG5vdGlmeURlYnVn
Z2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBFeGNlcHRpb24qKTsKLSAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1l
KiwgRGVidWdIb29rVHlwZSk7Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgc3RhY2tUcmFjZUFzU3Ry
aW5nKFZNJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7Ci0KLSAgICAgICAgdm9pZCBnZXRT
dGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6
ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhTdGFja1NpemUgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0gRXhl
Y3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwotICAgICAgICAKLSAg
ICAgICAgc3RhdGljIEpTVmFsdWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVyblZhbHVlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMg
SlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlNPYmplY3QqIHJldHVyblZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJl
Rm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxG
cmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2Nv
cGUqLCBjb25zdCBBcmdMaXN0Jik7Ci0KLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKENhbGxGcmFt
ZUNsb3N1cmUmKTsKLQotICAgICAgICBWTSYgbV92bTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9n
cmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2Jq
KTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7CisgICAgSlNWYWx1
ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5
cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsK
KyAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KiBmdW5jdGlvbiwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFy
Z0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CisgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOwor
CisgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRy
ZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7
CisKKyAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSom
LCBFeGNlcHRpb24qKTsKKyAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhy
b3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKKyAgICBO
RVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tUeXBlKTsKKyAgICBz
dGF0aWMgU3RyaW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3RvcjxTdGFja0Zy
YW1lPiYpOworCisgICAgdm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxT
dGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhT
dGFja1NpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKworcHJpdmF0
ZToKKyAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRpYWxpemVBbmRSZXR1cm4g
fTsKKyAgICAKKyAgICBzdGF0aWMgSlNWYWx1ZSBjaGVja2VkUmV0dXJuKEpTVmFsdWUgcmV0dXJu
VmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOworICAgICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU09iamVjdCogY2hlY2tl
ZFJldHVybihKU09iamVjdCogcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQocmV0
dXJuVmFsdWUpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgQ2Fs
bEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBD
YWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7CisKKyAgICBKU1ZhbHVl
IGV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3VyZSYpOworCisgICAgVk0mIG1fdm07CiAjaWYgRU5BQkxF
KENfTE9PUCkKLSAgICAgICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CisgICAgQ0xvb3BTdGFj
ayBtX2Nsb29wU3RhY2s7CiAjZW5kaWYKLSAgICAgICAgCisgICAgCiAjaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fT1BDT0RFUykKICNpZiAhRU5BQkxFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkg
fHwgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJ
RD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQuCisgICAgc3Rh
dGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBP
cGNvZGUgPT4gT3Bjb2RlSUQuCiAjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9FTUJFRERFRF9PUENP
REVfSUQpIHx8IEFTU0VSVF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKLSAgICB9OwotCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiwgRUNNQU1vZGUpOwotCi0gICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVG
b3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90
cywgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCi0gICAgewotICAgICAgICAv
LyBXZSB3YW50IHRoZSBuZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3RhY2sgYWxpZ25l
ZCBvZmZzZXQgd2l0aCBhIHN0YWNrCi0gICAgICAgIC8vIGFsaWduZWQgc2l6ZS4gQWxpZ24gdGhl
IHNpemUgaGVyZS4KLSAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2YoCi0gICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LAotICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6Omhl
YWRlclNpemVJblJlZ2lzdGVycykgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsK
LQotICAgICAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCi0gICAgICAgIHVuc2ln
bmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAot
ICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIG51bVVz
ZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6Omhl
YWRlclNpemVJblJlZ2lzdGVycyk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmNyZWF0ZShj
YWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFy
Z3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWF4QXJndW1lbnRzID0gMHgxMDAwMDsKLSAgICB1bnNpZ25lZCBzaXplRnJh
bWVGb3JWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCBKU1ZhbHVlIGFy
Z3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyk7
Ci0gICAgdm9pZCBsb2FkVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUqIGZpcnN0RWxl
bWVudERlc3QsIEpTVmFsdWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0
aCk7Ci0gICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywg
dWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBz
ZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4
ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3Ro
KTsKLSAgICB2b2lkIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxl
bmd0aCk7Ci0gICAgdm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxl
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7Cit9OworCitKU1ZhbHVlIGV2
YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CisKK2lubGluZSBDYWxs
RnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWdu
ZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KQoreworICAgIC8vIFdlIHdhbnQgdGhlIG5ldyBmcmFtZSB0byBiZSBhbGxvY2F0ZWQgb24gYSBz
dGFjayBhbGlnbmVkIG9mZnNldCB3aXRoIGEgc3RhY2sKKyAgICAvLyBhbGlnbmVkIHNpemUuIEFs
aWduIHRoZSBzaXplIGhlcmUuCisgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCks
CisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMpIC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisKKyAg
ICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCisgICAgdW5zaWduZWQgcGFkZGVkQ2Fs
bGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCksCisgICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7
CisgICAgcmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBw
YWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7Cit9CisKK3Vuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZz
ZXQpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAweDEwMDAwOwor
dW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSos
IFZNJiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50
MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJn
dW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2Vk
U3RhY2tTbG90cyk7Cit2b2lkIGxvYWRWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSog
Zmlyc3RFbGVtZW50RGVzdCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNldCwgdWludDMy
X3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVu
dHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwordm9pZCBz
ZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4
ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3Ro
KTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3Ro
KTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFs
dWUgdGhpc1ZhbHVlLCB1aW50MzJfdCBsZW5ndGgpOwogICAgIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOWExYTE5NWMzZTgz
ODY0YzFjYTE3ODQwOGE1YjBmLi44YjNhMjM4YTRkYWYxZmM2NzkxNDBkOGJiZWM3NzA5Yjg1Njhi
Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBtX2xhYmVsc1ttX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCldID0gbGFiZWwoKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6
OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgY29kZSBm
b3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgp
KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIGNvZGUgZm9y
ICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7
CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEKCk7CiAKQEAgLTQzOCw2ICs0MzgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfaW50ZXJuYWxfZmllbGQpCiAgICAgICAg
IERFRklORV9PUChvcF9wdXRfaW50ZXJuYWxfZmllbGQpCiAKKyAgICAgICAgREVGSU5FX09QKG9w
X2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9uZXh0KQorCiAg
ICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCiAg
ICAgICAgIERFRklORV9PUChvcF91bnNpZ25lZCkKQEAgLTUyNSw3ICs1MjgsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgcmFyZUNhc2VQcm9maWxl
ID0gJnJhcmVDYXNlUHJvZmlsZXMuYXQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKIAog
ICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4o
Ik9sZCBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQg
b2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJC
YXNlbGluZSBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIg
YXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fz
c2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRlY29kZVNsb3dQ
YXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7CkBAIC01ODksNiArNTkyLDkg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X3RvX3Njb3BlKQogCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pdGVyYXRv
cl9vcGVuKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh1bnNpZ25lZCkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AoaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChk
ZWMpCkBAIC02MjYsOCArNjMyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiQXQgIiwgZmlyc3RUbywgIiBzbG93OiAiLCBpdGVyIC0gbV9zbG93Q2FzZXMuYmVnaW4oKSwg
IlxuIik7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9z
bG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUbyAhPSBpdGVyLT50bywgIk5vdCBlbm91Z2gganVtcHMg
bGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoZmlyc3RUbyA9PSAoaXRlciAtIDEpLT50bywgIlRvbyBtYW55IGp1bXBzIGxp
bmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5vZmZzZXQoKSAh
PSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2Fz
ZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RU
by5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBtYW55IGp1bXBzIGxp
bmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaG91
bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFi
c29sdXRlQWRkcmVzcygmcmFyZUNhc2VQcm9maWxlLT5tX2NvdW50ZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxMTgyYWEwNzI5YTI3NDkxMDA0ZjQ1ZTFlYTZhYzEu
LjgzYWUxYTdiNjk4ZDY5MzNkYmI4YTAzNzE5MDQ5ZWMyMjU4MThmNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaApAQCAtMjk3LDYgKzI5Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogCisgICAgICAgIHZvaWQg
Y2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNo
ZWNrcG9pbnQoSnVtcCk7CisKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShKdW1wKTsKICAgICAg
ICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYpOwogICAgICAgICB2b2lkIGFkZFNs
b3dDYXNlKCk7CkBAIC02NzYsNiArNjc5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAorICAgICAgICB2b2lkIGVt
aXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9v
bCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNV
bnNpZ25lZCk7CiAKQEAgLTkxMSw2ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xh
YmVsczsKKyAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50
TGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsK
ICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsKICAgICAg
ICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZTFlNTY1ZGM1MjQ5ZjZh
Y2ZkYWEyNGJmZmI0NDcxZmZjYjIwYjg2Ni4uMDkxZWU5Mzg1MzA1ZDM3OTdjMmFkZWI2YTM2MTBi
ZTAzNTliMTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2
ICsyOSw4IEBACiAjaWYgVVNFKEpTVkFMVUU2NCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1
ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCkBAIC00Miw4ICs0NCw4IEBACiAjaW5j
bHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgog
I2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgogCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC01MSw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBK
SVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCk7CisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9p
bnQoKSkudmlydHVhbFJlZ2lzdGVyKCksIHJlZ1QwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3A+CkBAIC02MSwyMCArNjMsMjEgQEAgc3RkOjplbmFibGVfaWZfdDwKICwgdm9pZD4KIEpJVDo6
Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogewor
ICAgIHVuc2lnbmVkIGNoZWNrcG9pbnQgPSBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOwog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAg
IGludCBhcmdDb3VudCA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOworICAgIGludCBhcmdDb3VudElu
Y2x1ZGluZ1RoaXMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hl
Y2twb2ludCk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3Rh
Y2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAg
IGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsK
ICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJP
ZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSksIHJlZ1Qw
KTsKICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAg
bG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1Qw
KTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJh
eVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUz
MihyZWdUMCwgYXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50KS5hZGRyZXNzT2ZM
YXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQog
CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3Rl
cikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9h
ZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1c3Rl
ZEltbTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKIH0KIAogCkBAIC0yMDcsNyArMjEwLDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlu
a0luZm9JbmQKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBh
dXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3Rl
ciBjYWxsZWUgPSBieXRlY29kZS5tX2NhbGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVl
ID0gY2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKIAog
ICAgIC8qIENhbGxlciBhbHdheXM6CiAgICAgICAgIC0gVXBkYXRlcyBjYWxsRnJhbWVSZWdpc3Rl
ciB0byBjYWxsZWUgY2FsbEZyYW1lLgpAQCAtMjM0LDkgKzIzNyw4IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExp
bmtJbmZvSW5kCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8g
cmVnVDAgaG9sZHMgY2FsbGVlLgogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAotICAgIGlmIChj
b21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKSB7CisgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRl
Y29kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVz
c09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0
aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1
c3RlZEltbVB0cihudWxscHRyKSk7CkBAIC0zODAsNiArMzgyLDE4NCBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbAogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVu
dEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikK
K3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigp
OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwor
ICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGlu
c3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdDxOYXJyb3c+OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTE2PjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVy
biBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUzMj47CisgICAgICAgIGRlZmF1bHQ6IFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOworICAgIHNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRh
dGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsK
KyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljKSkpOworCisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1
Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsK
KyAgICAvLyBjYWxsIHJlc3VsdCAoaXRlcmF0b3IpIGlzIGluIHJlZ1QwCisKKyAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9ICZ2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAgCisgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKKworICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
KSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1w
bCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisK
KyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQpOworCisgICAg
ZmFzdENhc2UubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAg
Y29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgaXRlciwg
bV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9p
bnQoanVtcCgpKTsKKworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIFZpcnR1YWxS
ZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKKyAgICBVbmlxdWVkU3RyaW5nSW1w
bCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworCisgICAgSklUR2V0
QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwor
CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
TmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dp
dGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJu
IGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8TmFycm93PjsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJl
dHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUxNj47CisgICAgICAgIGNhc2UgV2lkZTMy
OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+OworICAgICAgICBkZWZhdWx0
OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCByZWdUMCk7CisgICAg
SnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHkocmVnVDApOworICAgIHNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEp
OworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAg
ICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpH
ZW5lcmljKSkpOworCisgICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKKyAgICBvcjgoVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSwgQWJz
b2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcykpOwor
ICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5r
SW5mb0luZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1
bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09iamVjdCkgaW4gcmVnVDAKKworICAgIEdQUlJlZyB2YWx1
ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgR1BS
UmVnIGRvbmVHUFIgPSByZWdUMTsKKyAgICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRyYXNo
ZWQgYnkgdGhlIGZpcnN0IGdldCBieSBpZCBiZWxvdy4KKyAgICBtb3ZlKHZhbHVlR1BSLCBpdGVy
UmVzdWx0R1BSKTsKKworICAgIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGl0ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAgICAgIHByZXNlcnZl
ZFJlZ3MuYWRkKHZhbHVlR1BSKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNl
cnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCkpLCBKU1ZhbHVl
UmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kb25lLCBkb25lR1BSKTsKKyAg
ICAgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAgR1BS
UmVnIHNjcmF0Y2gxID0gcmVnVDI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOwor
ICAgICAgICBjb25zdCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGZh
bHNlOworICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0o
KSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBS
ZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpOworCisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+
dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQ
UiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92
YWx1ZSwgdmFsdWVHUFIpOworCisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsKKyAg
ICB9CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0
aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90
Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBk
b25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIg
PSByZWdUMjsKKworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBKdW1w
TGlzdCBub3RPYmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxs
KGl0ZXJSZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9i
amVjdChpdGVyUmVzdWx0R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50
ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisg
ICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIs
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQp
LnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVn
VDEpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJl
Z1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisK
KyAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0KKworICAgIHsgICAKKyAgICAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9
IGJ5dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDA7
CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVz
LT52YWx1ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9CisKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IDkwNjk2Y2JlYzEwZTM5M2I5
OTcwZjBlYjIwMTE4ZDIxOTc0YzM1MjUuLmQxNDBhYWM5YmUyZDU0MDNkMWJjMGQ5OTEyYWU5ZTEw
NWY4MGQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
QEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0
Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKKyAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUxYmEyNzU2NTUzM2Y0Li4yN2E1N2Y0ZWUzNjE2
NGFjZThlMzlmMzY4Y2U3NjViZjE1ZGRmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
SklUKQorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkNvbW1vblNs
b3dQYXRoc0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTA1LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUg
SklUOjpDYWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0
KQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewotICAg
IHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5i
aXRzKCk7CisgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2Nh
dGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlzIG5l
ZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwgZnJhbWUgb24K
QEAgLTE4Myw2ICsxODUsMjUgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aGFzQW55U2xvd0Nh
c2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5PiYgc2xvd0Nhc2VzLCBWZWN0b3IKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6Y2hlY2twb2ludFJlYWNoZWQoKQoreworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQg
bV9ieXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2Rl
SW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2lu
dCgpICsgMSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fY2hlY2twb2ludExhYmVscy5hZGQobV9i
eXRlY29kZUluZGV4LCBsYWJlbCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9y
Q2hlY2twb2ludChKdW1wIGp1bXApCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVj
b2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9j
b2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7Cisg
ICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKworICAgIGF1dG8gaXRlciA9
IG1fY2hlY2twb2ludExhYmVscy5maW5kKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgQVNTRVJUKGl0
ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxzLmVuZCgpKTsKKyAgICBqdW1wLmxpbmtUbyhpdGVyLT52
YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFkZFNsb3dDYXNlKEp1
bXAganVtcCkKIHsKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4KTsgLy8gVGhpcyBtZXRob2Qg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNv
IHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldC4KQEAgLTMxOSw3ICszNDAsNyBAQCBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoTWV0YWRhdGEmIG1ldGFkYXRhKQogewog
ICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YS5tX3Byb2ZpbGUpOworICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUodmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBtX2J5dGVjb2RlSW5kZXguY2hl
Y2twb2ludCgpKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggN2FlMTUwY2M2NjEwNzYyYmFjYzhiZTQyMjA3M2FhZDY0YWIzMTE5
MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMzZGZiYmYwZTMzNjBkMzZmNTVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMzQsNiArMTM0LDE2IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21U
aHVuayhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgQVNTRVJUKHZtLnRhcmdldE1hY2hpbmVQQ0Zv
clRocm93KTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRlcmF0b3JS
ZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKK30KKwog
aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZWZiNWI1YWM5
ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1Li45ZmNjNDFkZWM0NTgyYzk2NTI5MjM2NTVk
YThmMzAyNjk1ZGY3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29r
dXBFeGNlcHRpb25IYW5kbGVyKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRpb24o
Vk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0
KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IoQ29kZUJsb2NrKikgV1RGX0lOVEVSTkFMOwog
aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2Jq
ZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKaW5kZXggOGRlYTdmMjc4ZTc2NjJlNTAzMTRjZWI5YjA4MzM5Zjg3YmZk
YTQ5Ny4uOGJiMThjMjFmNDJhOWY1N2NkYzA1M2ZkZGU4YzQ1MDFkNDhlM2M2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgog
I2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKQEAgLTgyLDYgKzgzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2Rl
QmxvY2stPnZtKCk7IFwKICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsgXAorICAgIGRhdGFMb2dMbklmKExMSU5UX1RSQUNJTkcgJiYgT3B0aW9uczo6dHJhY2VM
TEludFNsb3dQYXRoKCksICJDYWxsaW5nIHNsb3cgcGF0aCAiLCBXVEZfUFJFVFRZX0ZVTkNUSU9O
KTsgXAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNp
Zm5kZWYgTkRFQlVHCkBAIC02OTMsNyArNjk1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiB9CiAKIAotc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlk
UHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBPcEdldEJ5SWQ6Ok1ldGFk
YXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNh
Y2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRh
dGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0
dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3NDMsMzkgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlk
UHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QK
ICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOwogICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCi0gICAgICAgICAgICBtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1ldGFk
YXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChzbG90LmlzVmFsdWUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkp
OworICAgICAgICAgICAgbWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNl
dCwgc2xvdC5zbG90QmFzZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihjb2RlQmxvY2spOwogfQogCi0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IElu
c3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0
QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
LCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwog
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRlbnQs
IHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7Ci0gICAgCisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNT
X1NMT1cKICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3QuaXND
YWNoZWFibGUoKQogICAgICAgICAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgewogICAg
ICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBzd2l0Y2gg
KG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0
YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRl
ZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0g
bWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1
cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnVuc2V0TW9k
ZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
R2V0QnlJZE1vZGU6OlByb3RvTG9hZDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CisgICAg
ICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVj
dHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IDA7CkBAIC03OTksMzUgKzc5NiwxMDkgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgaWYgKHNs
b3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAg
ICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAg
ICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENh
Y2hlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2Fj
aGUoKTsKIAogICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20g
ZXZlciBoYXBwZW5pbmcuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRD
b3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5oaXRDb3VudEZv
ckxMSW50Q2FjaGluZyA9IDA7CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+
cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNl
dCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVs
dE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgbWV0
YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAg
ICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgeworICAgICAgICB9
IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNs
b3QuaXNWYWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSAhPSBi
YXNlVmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEu
aGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAgICAgICAgICAgICAgIHNldHVwR2V0QnlJZFBy
b3RvdHlwZUNhY2hlKGdsb2JhbE9iamVjdCwgdm0sIGNvZGVCbG9jaywgcGMsIG1ldGFkYXRhLCBi
YXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJTlRf
QUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYmIGlkZW50ID09IHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZl
U3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgICAg
ICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAgICAgICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQogCi0gICAgTExJTlRfUFJPRklMRV9WQUxVRShyZXN1
bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jayk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKworICAgIEpTVmFs
dWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmpl
Y3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElO
VF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KTsKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQoreworICAgIExMSU5UX0JFR0lO
KCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG9wZW5fZ2V0X25leHQiKTsKKwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgaXRl
cmF0b3IgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAg
UmVnaXN0ZXImIG5leHRSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5t
X25leHQpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBj
b2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQs
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICBuZXh0UmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX25leHRQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKwor
Ly8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgbmV4dF9nZXRfZG9uZSIpOworCisgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgLy8gV2UgdXNlIG1fdmFsdWUg
dG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVlIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBs
aXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4K
KyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fdmFsdWUpOworICAgIFJlZ2lzdGVyJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsKKworICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNP
YmplY3QoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKKwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBn
bG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRh
ZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisK
Ky8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfZ2V0X3ZhbHVlIik7CisKKyAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1
ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgdG1wIHNpbmNlIGl0J3MgZWl0aGVy
IG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBs
YXRlci4KKyAgICBSZWdpc3RlciYgdmFsdWVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gdmFsdWVS
ZWdpc3Rlci5qc1ZhbHVlKCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdl
dEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJv
cGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIHZhbHVlUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAg
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS5tX2J1Y2tldHNbMF0g
PSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIAorCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lO
KCk7CkBAIC0xNTYzLDcgKzE2MzQsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVw
Q2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0Nh
bGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVj
b2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgT3AmJiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCB1bnNpZ25lZCBj
aGVja3BvaW50SW5kZXggPSAwKQogewogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBT
ZXQgdXAgYSBjYWxsIGZyYW1lLgpAQCAtMTU3MSwxNiArMTY0MiwxNiBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZQogICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUg
Y2FjaGUuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0
byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCiAgICAgCi0gICAgSlNWYWx1ZSBjYWxsZWVB
c1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fY2FsbGVlKTsKKyAgICBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgY2FsbGVlRm9yKGJ5
dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsKICAgICAKLSAgICBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lID0gY2FsbEZyYW1lIC0gYnl0ZWNvZGUubV9hcmd2OworICAgIENhbGxGcmFtZSogY2FsbGVl
RnJhbWUgPSBjYWxsRnJhbWUgLSBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29k
ZSwgY2hlY2twb2ludEluZGV4KTsKICAgICAKLSAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNvZGUubV9hcmdjKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3Io
Ynl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIGNhbGxlZUZyYW1lLT51bmNoZWNrZWRS
KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSA9IGNhbGxlZUFzVmFsdWU7
CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxGcmFtZSk7CiAgICAgCiAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgIHJldHVy
biBzZXRVcENhbGwoY2FsbGVlRnJhbWUsIGtpbmQsIGNhbGxlZUFzVmFsdWUsICZtZXRhZGF0YS5t
X2NhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwg
Y2FsbGVlQXNWYWx1ZSwgJmNhbGxMaW5rSW5mb0ZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4
KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQpAQCAtMTYwNCw2
ICsxNjc1LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywg
Y2FsbEZyYW1lLCBwYy0+YXM8T3BDb25zdHJ1Y3Q+KCksIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0K
IAorTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2Nh
bGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwor
CisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBvcGVuX2NhbGwiKTsKKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFt
ZSwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpLCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck9wZW46
OnN5bWJvbENhbGwpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9pdGVyYXRvcl9uZXh0X2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0
ZXJhdG9yX25leHRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0X2Nh
bGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChj
b2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCBDb2RlRm9yQ2Fs
bCwgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKQogewogICAgIExMSU5UX0JFR0lO
KCk7CkBAIC0xOTkwLDYgKzIwODMsNDQgQEAgc3RhdGljIHZvaWQgaGFuZGxlVmFyYXJnc0NoZWNr
cG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QKICAgICBj
YWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kc3QpID0gcmVzdWx0OwogfQogCitzdGF0
aWMgdm9pZCBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wSXRlcmF0b3JP
cGVuJiBieXRlY29kZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29k
ZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKSB7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgSlNWYWx1ZSBuZXh0ID0gaXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KSA9IG5l
eHQ7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQoVk0mIHZt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgT3BJdGVyYXRvck5leHQmIGJ5dGVjb2RlLCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZSYg
c2lkZVN0YXRlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSBzaWRlU3RhdGUuYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCk7CisKKyAgICBhdXRvJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIGF1dG8gaXRlcmF0b3JSZXN1bHRPYmplY3Qg
PSBzaWRlU3RhdGUudG1wc1tPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdF07CisgICAgYXV0byBu
ZXh0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpOyAg
ICAKKworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5v
dCBPU1IgZXhpdCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2FzZXMuIik7CisKKyAgICBhdXRv
JiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsK
KyAgICBpZiAoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7Cisg
ICAgICAgIGRvbmVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAo
ZG9uZVJlZ2lzdGVyLmpzVmFsdWUoKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAg
dmFsdWVSZWdpc3RlciA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZVJl
Z2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+dmFsdWUpOworfQorCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNo
VG9OZXh0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFt
OjpSZWYgcGMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWNvZGVCbG9jay0+dm0oKS5leGNlcHRp
b25Gb3JJbnNwZWN0aW9uKCkpOwpAQCAtMjA2Niw2ICsyMTk3LDE1IEBAIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KENhbGxGcmFtZSog
Y2FsbEZyYW1lCiAgICAgICAgIGhhbmRsZVZhcmFyZ3NDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wVGFpbENhbGxWYXJhcmdzPigpLCAqc2lkZVN0YXRlLmdl
dCgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAg
ICAgICAgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JOZXh0
Q2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9y
TmV4dD4oKSwgKnNpZGVTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMjEwMyw2ICsyMjQzLDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0
ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTQ2VsbCogY2VsbCkKICAgICB2
bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1
bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1
bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCit7CisgICAgZGF0YUxvZ0xuKEpTVmFsdWU6
OmRlY29kZSh2YWx1ZSkpOworfQorCiBleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gg
dm9pZCBsbGludF9jcmFzaCgpCiB7CiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBiNTY5OWMzMGQy
Y2RhZmE0ZjkzYzNhOWYwOTgwNTcxYzgxNzY3YzFhLi5mOWEzNGRhYjM2ZDlmYTUyNzU2YTE5OGIy
ZDc0Zjc1MmM1MzhhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBtYWNybyBkZWZp
bmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBzaXplKGRlZmluZU5h
cnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBmKCkgZW5kKQogZW5k
CiAKLW1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rp
b24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19M
T09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKICAg
ICBlbHNlCkBAIC0xMDQ1LDExICsxMDQ1LDExIEBAIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQCiAg
ICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1
bmV4cGVjdGVkCiAgICAgICAgICMgY3Jhc2hlcy4KICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRl
ckFmdGVyQ2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gpCisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBl
bmQKICAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBy
ZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCkKIGVuZAogCiBtYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVt
cDIsIHRlbXAzLCBjYWxsUHRyVGFnKQpAQCAtMTExNyw3ICsxMTE3LDExIEBAIG1hY3JvIHByZXBh
cmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAg
ICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZwogZW5kCiAKLW1hY3JvIHNsb3dQYXRoRm9yQ2FsbChv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFy
ZUNhbGwpCittYWNybyBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRo
Rm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3Qs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKworbWFjcm8gc2xvd1BhdGhG
b3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAg
IGNhbGxDYWxsU2xvd1BhdGgoCiAgICAgICAgIHNsb3dQYXRoLAogICAgICAgICAjIFRob3NlIGFy
ZSByMCBhbmQgcjEKQEAgLTExMjYsNyArMTEzMCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFy
CiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAogICAgICAgICAgICAgcHJlcGFy
ZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKICAgICAgICAgLmRvbnRV
cGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xv
dywgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykK
KyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3Bh
dGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBlbmQKIApAQCAtMjAx
Niw3ICsyMDIwLDcgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGRpc3BhdGNoLCBmcmFtZVNsb3dQYXRoLCBzbG8KICAgICAgICAgICAgIHN1YnAg
cjEsIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgICAgICBlbmQKICAgICBlbmQKLSAgICBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwg
c2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwp
CiBlbmQKIAogCkBAIC0yMDc5LDcgKzIwODMsNyBAQCBlbmQpCiAjIHJldHVybnMgdGhlIEpTIHZh
bHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6Ci0gICAg
c2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAgb3Bf
Y2FsbF9ldmFsX25hcnJvdywKICAgICAgICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLApA
QCAtMjA4OCw3ICsyMDkyLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICAgICAgcHJlcGFy
ZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKLSAgICBzbG93
UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxs
X2V2YWxfd2lkZTE2LAogICAgICAgICB3aWRlMTYsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0y
MDk3LDcgKzIxMDEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICAgICAgcHJl
cGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKLSAgICBz
bG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9j
YWxsX2V2YWxfd2lkZTMyLAogICAgICAgICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBA
IC0yMTA3LDcgKzIxMTEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKIAogCiBjb21t
b25PcChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6
ZSkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxFdmFsLCBtYWNybyAoKQorICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1fcHJvZmlsZSwgbV9kc3QsIG1h
Y3JvICgpCiAgICAgICAgIGRpc3BhdGNoT3Aoc2l6ZSwgb3BfY2FsbF9ldmFsKQogICAgIGVuZCkK
IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjE4M2M4MDQyYWJkZmNlOGQ0Mzkx
MWFmNDFmNjU0YS4uNzRjNDgwZGYyMTIxNzE2NTUwYzVmZDRmMDg0NGFiMTEwOGZkYzgxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVk
KG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgICAgICBtb3Zl
IHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgICAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDApCiAgICAgICAgIGdldChtX2RzdCwgdDIp
CiAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQpAQCAtNzcsMTYgKzc3LDE3IEBAIGVuZAog
CiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCBy
ZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkK
ICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQ
QwogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBtX2RzdCwgdDMpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lz
dGVyLCB0MykKICAgICBzdG9yZWkgcjEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3Jl
aSByMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29k
ZVN0cnVjdCwgdDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMSwg
cjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIs
IHIxLCByMCkKICAgICBkaXNwYXRjaCgpCisKIGVuZAogCiBtYWNybyBjQ2FsbDIoZnVuY3Rpb24p
CkBAIC02MzIsOSArNjMzLDkgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1ZUZpZWxkTmFtZSkKICAgICAgICAgZW5kKQogZW5kCiAK
LW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQp
CittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEs
IHRhZywgcGF5bG9hZCkKICAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0YWRhdGFdCi0gICAgc3RvcmVpIHBh
eWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFBh
eWxvYWRPZmZzZXRbbWV0YWRhdGFdCisgICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFk
YXRhXQogZW5kCiAKIApAQCAtMTM3OCw3ICsxMzc5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3AKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQy
CiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJl
Y3RTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0NSwgdDAsIHQxKQorICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1
cm4odDAsIHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0MDAsNyArMTQwMSw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6
bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3Q1XSwgdDMKICAgICBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9w
cm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRBcnJh
eUxlbmd0aDoKQEAgLTE0MTMsNyArMTQxNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhb
dDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlJZCwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDApCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkK
IAogLm9wR2V0QnlJZFVuc2V0OgpAQCAtMTQyMSw3ICsxNDIyLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXQKICAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51
bnNldE1vZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgYmluZXEg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgdDUsIFVuZGVmaW5lZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCiAgICAgcmV0dXJuKFVu
ZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNDMwLDcgKzE0MzEsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDVdLCB0MgogICAgIGJp
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFNs
b3c6CkBAIC0xNDQwLDcgKzE0NDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9p
ZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9zclJl
dHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlf
aWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0
MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE1MTgsNyArMTUxOSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkK
ICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQogICAg
ICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhd
Ci0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBh
eWxvYWQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJ
bnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBA
IC0xNTI3LDcgKzE1MjgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmZDJp
aSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBzdG9yZWkgc2NyYXRjaDMsIFRh
Z09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9yZWkgc2NyYXRjaDIsIFBheWxv
YWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCiAgICAgICAgIGRpc3BhdGNo
KCkKICAgICBlbmQKIApAQCAtMTU3Miw3ICsxNTczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKIC5vcEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlW
YWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1ODUsNyArMTU4Niw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVy
blBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5k
KQpAQCAtMTk1NywxMCArMTk1OCwxMCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwg
c2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBz
dG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBz
cAogICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFn
KQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgY2FsbFRhcmdl
dEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2Rz
dCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9t
YWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoK
LSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
ZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgc2xvd1BhdGhGb3JDYWxs
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0
Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI4OCw3ICsy
Mjg5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9t
U2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0eSgp
CiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwg
dDMKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQxLCB0MikK
LSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAg
ICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjI5Nyw3ICsyMjk4LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3QwXSwgdDEKICAg
ICAgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0MF0sIHQyCiAgICAgICAgIHRkekNoZWNrSWZOZWNl
c3NhcnkodDEpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQxLCB0
MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0
MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTIzMDUsNyArMjMw
Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNj
b3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNj
b3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZHAgSlNMZXhpY2Fs
RW52aXJvbm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCiAgICAgICAg
IGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAs
IHQzLCA4XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEs
IHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjU5NCw2ICsy
NTk1LDE1IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0
TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgcmV0dXJuKEludDMyVGFnLCB0
MCkKIGVuZCkKIAorbGxpbnRPcChvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9w
X2l0ZXJhdG9yX29wZW4sIHNpemUpCisgICAgYnJlYWsKK2VuZCkKKworbGxpbnRPcChvcF9pdGVy
YXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisg
ICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9yX25leHQsIHNpemUpCisgICAg
YnJlYWsKK2VuZCkKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwg
T3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIGdldChtX2Jhc2UsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhZTJlMzc3M2ZmZGNjNDA2NzRjN2Fh
YzBjMWQ0ZmU2Y2QwZmI3ODU5Li44NjEzNmU4NTdjOWY3ODIyYjI0NDZjNjI2YmZkYzdhM2RmYmIy
ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtNjgsMjYgKzY4LDI2IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9m
aWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKICAgICBmbiht
YWNybyAodmFsdWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQx
LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDEsIHQzKQorICAgICAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MykKICAgICAgICAg
Z2V0KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAgICAgICAg
ZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBtZXRhZGF0YSwgdmFsdWUpCi0gICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0YWRhdGFdCittYWNybyB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlKQorICAgIHN0b3Jl
cSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0
c1ttZXRhZGF0YV0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMg
Y2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KLW1hY3JvIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVy
Q2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdp
c3RlciwgZGlzcGF0Y2gpCiAgICAgbG9hZFBDKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
UEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBC
Ci0gICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgbV9kc3QsIHQxKQorICAgIGdldChzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2Zy
LCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwKQogICAgIGRpc3BhdGNoKCkKIGVuZAog
CkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9k
aXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGJpbmVx
IHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6
Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIHQyLCB0
MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCkK
ICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTM0OCw1MyArMTM0
OCw1OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJ
ZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAot
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisjIFRoZSBiYXNlIG9iamVjdCBpcyBl
eHBlY3RlZCBpbiB0MworbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBt
b2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDIsIHQxKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJdLCB0MQotICAgIGdldChtX2Jhc2UsIHQw
KQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCisgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUubW9kZVt0Ml0sIHQxCiAKIC5vcEdldEJ5SWREZWZhdWx0OgogICAgIGJibmVxIHQxLCBj
b25zdGV4cHIgR2V0QnlJZE1vZGU6OkRlZmF1bHQsIC5vcEdldEJ5SWRQcm90b0xvYWQKICAgICBs
b2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAK
LSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQx
CisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUu
ZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xh
YmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5h
bWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQy
LCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgogICAgIGJibmVx
IHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVu
Z3RoCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVy
ZUlEW3QyXSwgdDMKLSAgICBiaW5lcSB0MywgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlz
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVk
T2Zmc2V0W3QyXSwgdDEKLSAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRh
ZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MworICAgIGxvYWRpICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuc3RydWN0
dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUu
Y2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAg
IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZEFycmF5
TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3Ro
LCAub3BHZXRCeUlkVW5zZXQKICAgICBtb3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZShPcEdl
dEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9m
aWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93Ci0g
ICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93CisgICAgYXJyYXlQ
cm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJh
eSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAog
ICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQog
ICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cK
KyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVyVGFnLCB0MAotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRC
eUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBs
b2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0
dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgVmFsdWVVbmRlZmluZWQpCisgICAgbG9hZGkgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVy
ZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKICAg
ICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKK2VuZAorCitsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIHBlcmZvcm1HZXRCeUlE
SGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNs
b3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICBkaXNwYXRjaCgpCkBAIC0x
NDAyLDcgKzE0MDgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRC
eUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9zclJldHVyblBvaW50
OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUp
CiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBy
MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCkKICAgICBy
ZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE0OTcsNyArMTUwMyw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkCiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQogICAgICAg
ICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0
Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcmVzdWx0KQorICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NTgsNyArMTU2NCw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdldEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIs
IHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIpCisgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgIGRpc3BhdGNoKCkKIAog
Lm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1NzEsNyArMTU3Nyw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NS
RXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQy
KQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcjApCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpA
QCAtMTk0OCw2ICsxOTU0LDMwIEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3Ry
dWN0LCBnZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBz
bG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0
QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgbWV0YWRh
dGEodDUsIHQwKQorICAgIGdldENhbGxlZSh0MCkKKworICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExp
bmtCaXRbdDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQor
ICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKworICAgIGdldEFyZ3VtZW50U3RhcnQodDMp
CisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ3AgdDMKKyAgICBhZGRwIGNmciwgdDMKKyAgICBz
dG9yZXEgdDIsIENhbGxlZVt0M10KKyAgICBnZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyh0
MikKKyAgICBzdG9yZVBDKCkKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBzcAorICAgIHByZXBhcmVDYWxs
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRh
cmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgY2FsbFRhcmdldEZ1bmN0
aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKworLm9w
Q2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xv
d1BhdGgsIHByZXBhcmVDYWxsKQorZW5kCisKIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1l
LCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0NSwgdDAp
CkBAIC0xOTU2LDI0ICsxOTg2LDE5IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBz
bG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgICAg
ICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAgIGVuZCwg
bWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5D
YWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDAsIHQzKQotICAgICAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93Ci0gICAgICAg
IGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQotICAgICAgICBsc2hpZnRpIDMs
IHQzCi0gICAgICAgIG5lZ3AgdDMKLSAgICAgICAgYWRkcCBjZnIsIHQzCi0gICAgICAgIHN0b3Jl
cSB0MiwgQ2FsbGVlW3QzXQotICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdj
LCB0MikKLSAgICAgICAgc3RvcmVQQygpCi0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBtb3ZlIHQzLCBzcAot
ICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQot
ICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21h
Y2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQotICAgIC5vcENhbGxTbG93Ogot
ICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAgICBtYWNybyBnZXRDYWxsZWUo
ZHN0KQorICAgICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKKyAgICAgICAgZW5kCisKKyAgICAg
ICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFydChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9w
Y29kZVN0cnVjdCwgbV9hcmd2LCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdl
dEFyZ3VtZW50Q291bnQoZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fYXJnYywgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBjYWxsSGVscGVyKG9wY29kZU5h
bWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIHByZXBhcmVDYWxs
LCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwg
Z2V0QXJndW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI3Niw3ICsyMzAxLDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAgICAgICAgcmV0dXJuKHQyKQogICAg
IGVuZAogCkBAIC0yMjg0LDE0ICsyMzA5LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAg
ICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAK
ICAgICAgICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkK
LSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDApCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCiAgICAgICAgIHJl
dHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQogICAgICAgICBs
b2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAg
IGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJu
KHQwKQogICAgIGVuZAogCkBAIC0yNTUxLDcgKzI1NzYsNiBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCBPcFByb2ZpbGVDb250cm9sRmxvdywgbWFjcm8gKHNp
emUsCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi0KIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9y
ZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKQEAgLTI1NjcsNiArMjU5MSwxNDcgQEAgbGxp
bnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGMKIGVuZCkKIAogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0
ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5h
cnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJy
b3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0
aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFz
dFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93
aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lk
ZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91
bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2Fz
ZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJh
dG9yT3BlbkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljOgor
ICAgIG1hY3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0QnlJZFN0
YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9z
eW1ib2xJdGVyYXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNs
dWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JPcGVuLCBt
X3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1
ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKworICAg
IGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9v
cGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJhdG9yUHJvZmlsZSwgbV9pdGVyYXRvciwg
cHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0QnlJZENoZWNrcG9pbnQsIG1ldGFk
YXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVu
dEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldEJ5SWRTdGFydDoKKyAgICBtYWNybyBzdG9yZU5l
eHRBbmREaXNwYXRjaCh2YWx1ZSkKKyAgICAgICAgbW92ZSB2YWx1ZSwgdDIKKyAgICAgICAgZ2V0
KG1fbmV4dCwgdDEpCisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDEsIDhdCisgICAgICAgIGRp
c3BhdGNoKCkKKyAgICBlbmQKKworICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQz
KQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0
U2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRh
ZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoKQorCisuaXRlcmF0b3JPcGVuR2VuZXJp
Y0dldE5leHRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9y
X29wZW5fZ2V0X25leHQpCisgICAgZGlzcGF0Y2goKQorCitlbmQpCisKK2xsaW50T3BXaXRoTWV0
YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9u
ZXh0LCB0MCkKKyAgICBidHFueiB0MCwgdDAsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgbWV0
YWRhdGEoYTIsIHQ1KQorICAgIG1hY3JvIGZhc3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1Bh
dGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZh
c3RXaWRlMTYoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rf
d2lkZTE2KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xv
d1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUo
ZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwgZmFzdFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9w
KCkgZW5kKQorCisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNz
ZW1ibHkgc2luY2UgaXQncyB0aGUgImZhc3QiIGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHBy
IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgZGlzcGF0
Y2goKQorCisuaXRlcmF0b3JOZXh0R2VuZXJpYzoKKyAgICBtYWNybyBnb3RvR2V0RG9uZUNoZWNr
cG9pbnQoKQorICAgICAgICBqbXAgLmdldERvbmVTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8g
Z2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgZ2V0KG1fbmV4dCwgZHN0KQorICAgIGVuZAorCisgICAg
bWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNp
emUsIE9wSXRlcmF0b3JOZXh0LCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBt
YWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwg
ZHN0CisgICAgZW5kCisKKyAgICAjIFVzZSBtX3ZhbHVlIHNsb3QgYXMgYSB0bXAgc2luY2Ugd2Ug
YXJlIGdvaW5nIHRvIHdyaXRlIHRvIGl0IGxhdGVyLgorICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0
b3JfbmV4dCwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwsIE9wSXRlcmF0b3JO
ZXh0LCBtX25leHRSZXN1bHRQcm9maWxlLCBtX3ZhbHVlLCBwcmVwYXJlRm9yUmVndWxhckNhbGws
IHNpemUsIGdvdG9HZXREb25lQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJn
dW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQor
CisuZ2V0RG9uZVN0YXJ0OgorICAgIG1hY3JvIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUoZG9u
ZVZhbHVlKQorICAgICAgICAjIHVzZSB0MCBiZWNhdXNlIHBlcmZvcm1HZXRCeUlESGVscGVyIHVz
dWFsbHkgcHV0cyB0aGUgZG9uZVZhbHVlIHRoZXJlIGFuZCBvZmZsaW5lYXNtIHdpbGwgZWxpZGUg
dGhlIHNlbGYgbW92ZS4KKyAgICAgICAgbW92ZSBkb25lVmFsdWUsIHQwCisgICAgICAgIGdldCht
X2RvbmUsIHQxKQorICAgICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgICAgICBqbXAg
LmdldFZhbHVlU3RhcnQKKyAgICBlbmQKKworCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1
ZSwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0RG9uZVNsb3cKKyAgICBwZXJm
b3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2Rv
bmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBU
b0dldFZhbHVlKQorCisuZ2V0RG9uZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxp
bnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKKyAgICBsb2FkVmFyaWFibGUoZ2V0
LCBtX2RvbmUsIHQwKQorCisgICAgIyBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlIHB1dHMgdGhl
IGRvbmVWYWx1ZSBpbnRvIHQwCisuZ2V0VmFsdWVTdGFydDoKKyAgICAjIEJyYW5jaCB0byBzbG93
IGlmIG5vdCBtaXNjIHByaW1pdGl2ZS4KKyAgICBidHFueiB0MCwgfjB4ZiwgLmdldFZhbHVlU2xv
dworICAgIGJ0aXogdDAsIDB4MSwgLm5vdERvbmUKKyAgICBkaXNwYXRjaCgpCisKKy5ub3REb25l
OgorICAgIG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRjaCh2KQorICAgICAgICBtb3ZlIHYsIHQy
CisgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwg
OF0KKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDAsIDB4YmFkZGIwMWUpCisg
ICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgICMgUmVsb2FkIHRoZSBuZXh0IHJlc3Vs
dCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2ZSBjbG9iYmVyZWQgdDMuCisg
ICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAgIyBXZSBkb24ndCBuZWVkIHRv
IGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMgYSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2ls
bCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUuCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIo
T3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0
VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFuZERpc3BhdGNoKQorCisuZ2V0
VmFsdWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25l
eHRfZ2V0X3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKworCiBsbGludE9wV2l0aFByb2Zp
bGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9iYXNlLCB0
MSkKICAgICBnZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbV9pbmRleCwgdDIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKaW5kZXggOGQ3Njcx
MTZjMDU0ZTVlYTY2NGVmNDA2MmM1NmYyNjA1ZTBkOGI0NS4uNTg5YWUwZTBmM2VkMzRiNjYxZTg1
NjJiY2EyOTgwMmVjMTBlNWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vdHJhbnNmb3JtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3RyYW5zZm9ybS5yYgpAQCAtNjI5LDcgKzYyOSw3IEBAIGVuZAogCiBjbGFzcyBOb2RlCiAg
ICAgZGVmIHZhbGlkYXRlCi0gICAgICAgIHJhaXNlICJVbnJlc29sdmVkICN7ZHVtcH0gYXQgI3tj
b2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgJyN7ZHVtcH0nIGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHZhbGlkYXRlQ2hp
bGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCmluZGV4IGI4ZGU5NjU1ODJmN2Q5MTI3MTMzN2Q1NDMxOTAzZTgzMThjMjZmNDcuLjkz
ZTdlNzM2MDFiZjczZTdkYWQ3NTRlYWJjMTU2M2Q4YTBlODcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNTMsOCArMTU0LDExIEBAIG5hbWVzcGFjZSBK
U0MgewogI2RlZmluZSBSRVRVUk5fUFJPRklMRUQodmFsdWVfXykgXAogICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElORyh2YWx1ZV9fLCBQUk9GSUxFX1ZBTFVFKHJldHVyblZhbHVlX18pKQogCi0jZGVm
aW5lIFBST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFs
dWUpOyBcCisjZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWVfXykgXAorICAgIFBST0ZJTEVfVkFM
VUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQorCisjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFs
dWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKKyAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBc
CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRocm93QXJpdHlDaGVja1N0YWNr
T3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBz
Y29wZSkKQEAgLTk2NSw2ICs5NjksMTI4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9i
eV9pZCkKICAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1Byb3Bl
cnR5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKSkpOwogfQogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xvd1BhdGhSZXR1cm5U
eXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIC8vIERv
bid0IHNldCBQQzsgd2UgY2FuJ3QgdGhyb3cgYW5kIGl0J3MgcmVsYXRpdmVseSBzbG93LgorICAg
IEJFR0lOX05PX1NFVF9QQygpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lk
dGg8T3BJdGVyYXRvck9wZW4sIHdpZHRoPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck9wZW46Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworICAg
IEpTVmFsdWUgaXRlcmFibGUgPSBHRVRfQyhieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCk7
CisgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYWJsZSwgbV9pdGVyYWJsZVByb2ZpbGUpOworICAg
IEpTVmFsdWUgc3ltYm9sSXRlcmF0b3IgPSBHRVRfQyhieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9y
KS5qc1ZhbHVlKCk7CisgICAgYXV0byYgaXRlcmF0b3IgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYXRv
cik7CisKKyAgICBhdXRvIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24gPSBbJl0geworICAg
ICAgICBpZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisKKyAgICAgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVj
a2VkIHRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlkLgorICAgICAgICBKU0Z1bmN0aW9uKiBz
eW1ib2xJdGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5
bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7IAorCisgICAgICAgIGlmIChn
bG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpICE9IHN5
bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKworICAgICAgICAvLyBXZSBzaG91bGQgYmUgZ29vZCB0byBnby4KKyAgICAgICAg
bWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJh
dGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAg
ICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkgPSBKU1ZhbHVlKCk7CisgICAgICAgIGF1dG8qIGl0ZXJh
dGVkT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oaXRlcmFibGUpOworICAgICAgICB7CisgICAg
ICAgICAgICBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktp
bmQ6OlZhbHVlcyk7CisgICAgICAgIH0KKyAgICAgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYXRv
ci5qc1ZhbHVlKCksIG1faXRlcmF0b3JQcm9maWxlKTsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
bk1vZGU6OkZhc3RBcnJheTsKKyAgICB9OworCisgICAgaWYgKGl0ZXJhYmxlLmluaGVyaXRzPEpT
QXJyYXk+KHZtKSkgeworICAgICAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbigp
ID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJh
eSkpOworICAgIH0KKworICAgIC8vIFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdl
bmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9
IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBT
TE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0
dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0
YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7
CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBj
LCBtZXRhZGF0YVB0cik7Cit9CisKK3RlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7Cisg
ICAgQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRl
cmF0b3JOZXh0LCB3aWR0aD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9ICpyZWludGVycHJldF9j
YXN0PE9wSXRlcmF0b3JOZXh0OjpNZXRhZGF0YSo+KG1ldGFkYXRhUHRyKTsKKworICAgIEFTU0VS
VCghR0VUKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpKTsKKyAgICBKU09iamVjdCogaXRlcmF0
b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihHRVQoYnl0ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgp
KTs7CisgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1Zh
bHVlKCkuYXNDZWxsKCk7CisgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHluYW1pY0Nh
c3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgeworICAgICAgICBpZiAoYXV0byBh
cnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChhcnJheS0+
c3RydWN0dXJlSUQoKSk7CisKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRh
dGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJ
dGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgICAgICAgICBhdXRvJiBpbmRleFNsb3QgPSBh
cnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4
KTsKKyAgICAgICAgICAgIGludDY0X3QgaW5kZXggPSBpbmRleFNsb3QuZ2V0KCkuYXNBbnlJbnQo
KTsKKyAgICAgICAgICAgIEFTU0VSVCgwIDw9IGluZGV4ICYmIGluZGV4IDw9IG1heFNhZmVJbnRl
Z2VyKCkpOworCisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICAgICAgYm9vbCBk
b25lID0gaW5kZXggPT0gLTEgfHwgaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpOworICAgICAgICAg
ICAgR0VUKGJ5dGVjb2RlLm1fZG9uZSkgPSBqc0Jvb2xlYW4oZG9uZSk7CisgICAgICAgICAgICBp
ZiAoIWRvbmUpIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVy
ZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAgICAgICAgICAgICBp
bmRleFNsb3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4
KSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
WENFUFRJT04oKTsKKyAgICAgICAgICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBtX3Zh
bHVlUHJvZmlsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5v
IG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0
aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpz
TnVtYmVyKC0xKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdFVChieXRlY29kZS5t
X3ZhbHVlKSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8vIFJl
dHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5l
cmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90
cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zh
c3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7
CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBj
LCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3JfbmV4dF90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIEJFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3
MTM1ZTJiNzg0YWI2OGRiNWY1NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjdhYjA4YTJmYWQ2OWE0YjBk
NDU5MjM3NzkzNzVkY2Q4YjJlZTBhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDYsNiArMjQ2LDggQEAgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaW5fYnlfaWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV92
YWwpOworLy8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QpOwor
Ly8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfc3RyY2F0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9fcHJpbWl0aXZlKTsKQEAgLTI4Myw2ICsyODUsMTggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc3ByZWFkKTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQ
YXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxsRnJhbWUq
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdyhD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRh
KTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVu
X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQq
IG1ldGFkYXRhKTsKKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQYXRo
UmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqLCBj
b25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxs
RnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dp
ZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsK
K2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1l
dGFkYXRhKTsKKwogdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlwZShT
TE9XX1BBVEggKikoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNlLi42ODc0ZWM3OTAz
NzU4Y2Y5ZGY0NDM5YTYyMzkwNjFjZjI3MDU4OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTMzMCw2ICszMzAsMjQgQEAgY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJ
bnRyaW5zaWMgaW50cmluc2ljKQoreworICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgY2Fz
ZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5z
aWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7CisgICAgY2FzZSBBcnJh
eUtleXNJbnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OktleXM7CisgICAgY2FzZSBBcnJheUVudHJpZXNJbnRy
aW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVz
cGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRl
eCA2YmZmZjkwMDYzY2UyZDdkOGFjMjA1NDJlOGE4ZDdlMThjNDJiYWU5Li43MWJhM2FhZDM1OTY5
NTZhZmMyZDBhYmZjNmZkMWRlMTdhZjFlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuaApAQCAtMTg3LDYgKzE4Nyw4IEBAIGVudW0gSW50cmluc2ljIDogdWlu
dDhfdCB7CiAgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAorT3B0aW9uYWw8SXRlcmF0aW9u
S2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKKwogY29uc3QgY2hh
ciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKaW5kZXggNTk5
ZTc3NGIwM2RkM2U1YmE2ZDRkN2ZhMzRiYjk4YTk2ODdlYzYwOS4uNGZkMGExMTY1MjVjZGM1MzJh
NTNkMGI4YjVhY2I1MzM4N2E4ZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBK
U09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3Qq
PihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAgICBz
dGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCog
aXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CisgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRv
ciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBpdGVyYXRl
ZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGtpbmQpKSk7CisgICAgfQogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0
ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQyYzUzNzc3Y2Nk
ZWM1ZmNkNGRiODEwZDE4NTRmYTYwYzlmNDgxZWQuLmQzMDJiMTg2NTNlMzg0OTc4OTJiNjA1ZmEx
MjhhOTljMGY5NGYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKQEAgLTIyNSw2ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5
cGUuCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKFZNJikg
Y29uc3Q7CisgICAgYm9vbCBpc0NhbGxhYmxlKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxh
YmxlKFZNJiwgQ2FsbFR5cGUmLCBDYWxsRGF0YSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcihWTSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYsIENvbnN0cnVjdFR5
cGUmLCBDb25zdHJ1Y3REYXRhJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZTY1NzhhZWVmZjY5
YzFjZmRiZWJlYWJhZDgwYWY3Li42MmY5ZDI0ZjE1ZDA3MjQ1YWQ3NzZjNDg3OWQyMDdmMTU1N2Nh
YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKQEAgLTgyNyw2ICs4MjcsMTMgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGdW5j
dGlvbihWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGFzQ2VsbCgpLT5pc0Z1bmN0aW9uKHZtKTsK
IH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNvbnN0Cit7Cisg
ICAgQ2FsbFR5cGUgdW51c2VkVHlwZTsKKyAgICBDYWxsRGF0YSB1bnVzZWREYXRhOworICAgIHJl
dHVybiBpc0NhbGxhYmxlKHZtLCB1bnVzZWRUeXBlLCB1bnVzZWREYXRhKTsKK30KKwogaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0sIENhbGxUeXBlJiBjYWxsVHlwZSwgQ2Fs
bERhdGEmIGNhbGxEYXRhKSBjb25zdAogewogICAgIGlmICghaXNDZWxsKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGU4YjIzY2U1OTlkMzYyZGM2NWYzM2Y4ZWYy
M2FkOGY1ZDZkOTcxMWIuLmIyNTAzNTY5Yzg0MjI1NjAxMTQxYTgwY2Y1OTg0OGY1ZDY3M2I3NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC02MCwxMyArNjAsMTMg
QEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAvLyBTcGVjaWZpYyB0eXBlIG92ZXJs
b2Fkcy4KICNkZWZpbmUgRk9SX0VBQ0hfSlNfRFlOQU1JQ19DQVNUX0pTX1RZUEVfT1ZFUkxPQUQo
bWFjcm8pIFwKICAgICBtYWNybyhKU0ltbXV0YWJsZUJ1dHRlcmZseSwgSlNUeXBlOjpKU0ltbXV0
YWJsZUJ1dHRlcmZseVR5cGUsIEpTVHlwZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlKSBcCi0g
ICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpT
VHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTU3RyaW5nSXRlcmF0b3Is
IEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5
cGUpIFwKICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0T2JqZWN0VHlw
ZSkgXAogICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlLCBK
U1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6
SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhJbnRl
cm5hbEZ1bmN0aW9uLCBKU1R5cGU6OkludGVybmFsRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkludGVy
bmFsRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwgSlNUeXBlOjpBcnJheVR5cGUs
IEpTVHlwZTo6RGVyaXZlZEFycmF5VHlwZSkgXAorICAgIG1hY3JvKEpTQXJyYXlJdGVyYXRvciwg
SlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUp
IFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSwgSlNU
eXBlOjpBcnJheUJ1ZmZlclR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlldywgRmly
c3RUeXBlZEFycmF5VHlwZSwgTGFzdFR5cGVkQXJyYXlUeXBlKSBcCiAgICAgbWFjcm8oSlNQcm9t
aXNlLCBKU1R5cGU6OkpTUHJvbWlzZVR5cGUsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDI2YWEwZDdjNmVkZmE2M2UzYzhmZjYyMDhmNjI1ZjU3MDM2ODczZjAuLjExNzNhYTA4OGRjYjc2
YzA0ZmU0YjVmYzBiMWE0OTM5MzM5MWU3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU1OSwxMCArNTU5LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0Z1bmN0aW9uPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmcuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7CiAg
ICAgICAgIH0pOwotICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigKLSAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwg
aW5pdC52bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFs
dWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwotICAgICAgICB9KTsKKyAgICBtX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1Zh
bHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKIAogICAgIG1faXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rp
b24+JiBpbml0KSB7CkBAIC0xNzQ5LDcgKzE3NDYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhp
c09iamVjdC0+bV9wYXJzZUludEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcGFyc2VGbG9hdEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09i
amVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24pOwogICAg
IHRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDJjMjhlOGJm
NmNhNGU3M2I1NmNkYTM3NzRiMjE3NjQ3MWE5ZjA1MTMuLjBhY2RmYWVkOWU5YWRmYzIzOGFiN2My
MzQyZTM1NDkzMGFhNjkyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMjk5LDcgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9uOwog
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJv
dG9Ub1N0cmluZ0Z1bmN0aW9uOwotICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNG
dW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlz
ZVJlc29sdmVGdW5jdGlvbjsKQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5j
dGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0Owog
ICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0
aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAg
IEpTRnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBK
U0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9t
aXNlUmVzb2x2ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpAQCAtNjE5LDYgKzYxOSw3IEBAIHB1Ymxp
YzoKICAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9uTWFp
blRocmVhZCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhl
Y0Z1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCk7IH0KICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQogICAgIEdl
dHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJT
ZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTk2OTRkMDEyN2JhZTFjZWE1Y2Y2
M2ZhOWNkZDk3NzAwMGNiN2FhNC4uZmI0MGZjOTUwNzZhYzUwYTBhMzk0ZjU4YzUzZWIxY2JkYjA2
ZmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBA
IC0xMTksNiArMTE5LDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1p
bmdBcGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAw
MCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRh
aWxEZWxldGVkRnJhbWVzU2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCisgICAg
dihCb29sLCB1c2VJdGVyYXRpb25JbnRyaW5zaWNzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwK
KyAgICBcCiAgICAgdihCb29sLCB1c2VPU0xvZywgZmFsc2UsIE5vcm1hbCwgIkxvZyBkYXRhTG9n
KClzIHRvIG9zX2xvZyBpbnN0ZWFkIG9mIHN0ZGVyciIpIFwKICAgICAvKiBkdW1wRGlzYXNzZW1i
bHkgaW1wbGllcyBkdW1wREZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KEJvb2wsIGR1bXBEaXNh
c3NlbWJseSwgZmFsc2UsIE5vcm1hbCwgImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFsbCBKSVQgY29t
cGlsZWQgY29kZSB1cG9uIGNvbXBpbGF0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNzY0YWQwNjVhYzAxMWUzM2MzMjM4Y2Q5ZGE5NTM5
YzE1ODM5MjNlNS4uOWMyY2U3YWZhZTZlMzhlN2E2MDgwMjZmNTE3NzExMGUzYzg1NTYyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjY4LDYg
KzEyNjgsOCBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0
LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHZvaWQgU3RydWN0dXJlOjpkdW1wQnJpZWYo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKSBjb25zdAogewogICAgIG91
dC5wcmludCgiJSIsIHN0cmluZywgIjoiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBp
ZiAoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykKKyAgICAgICAgb3V0LnByaW50
KCIsIiwgSW5kZXhpbmdUeXBlRHVtcChpbmRleGluZ1R5cGUoKSkpOwogfQogCiB2b2lkIFN0cnVj
dHVyZTo6ZHVtcENvbnRleHRIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCmluZGV4IDM1N2JhMmZhMmY3OTI5YTZhOTk4
YTlhNGVmMTRkMmJlNTc1NDYzNzEuLjU2YWJjNGI1M2VjOWZhYjYwNzViZjZkMmViYmJlZDFmMzNj
ZGY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3Zlcmxv
YWRzLmgKKysrIGIvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaApA
QCAtNTksMyArNTksOSBAQAogCiAjZGVmaW5lIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JT
X0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URUdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9SRUxBVElP
TkFMX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVn
cmFsX3Y8VD4pCiAKKyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1f
Q0xBU1NfV0hFTihlbnVtTmFtZSwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09Q
RVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHwsIGVuYWJsZUV4cHJlc3Npb24p
IFwKKyAgICBPVkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCAm
LCBlbmFibGVFeHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xB
U1NfV0hFTihlbnVtTmFtZSwgXiwgZW5hYmxlRXhwcmVzc2lvbikgXAorCisjZGVmaW5lIE9WRVJM
T0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhlbnVt
TmFtZSkgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVt
TmFtZSwgc3RkOjppc19pbnRlZ3JhbF92PFQ+KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5ZGM5ODljNTViNDM0ZWZmNmZkM2VmNGRhM2E1
MjNjN2ZkNTczYWIyLi45ZjdkYzA3YjVlMGEyN2ZhMGFmYmI1Y2E3MWNkOWQ5NTFmM2FiMDIzIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU5IEBACisyMDIwLTA0LTE1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBmb3Itb2YgaXRlcmF0aW9uIGZv
ciBKU0FycmF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qczoKKyAg
ICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanM6CisgICAg
ICAgIChjYXRjaCk6CisgICAgICAgIChpdGVyLnJldHVybik6CisgICAgICAgIChpdGVyYXRvcklu
dGVyZmFjZUVycm9yVGVzdCk6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJl
dHVybik6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybik6CisgICAg
ICAgICogc3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanM6IEFkZGVkLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1v
bi1tYXAuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6CisgICAgICAgIChpLmxldC52Lm9mLmZp
bmQpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoc2V0IGFkZCk6CisgICAgICAg
ICogc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qczogQWRkZWQuCisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5uZXh0LnJldHVybi5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9vc3It
ZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLm5leHQucmV0dXJuLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0
KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChp
LmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mb3Itb2YtbmV4
dC1yZXR1cm5zLW5vbi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
bmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAq
IHN0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6IEFkZGVk
LgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJs
ZS5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAg
ICAgICAqIHN0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQu
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
LlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAg
ICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVy
LWluLWZvci1vZi1oZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4
dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQgdmFsdWUpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVy
bik6CisgICAgICAgIChpLmNhdGNoKToKKwogMjAyMC0wNC0xNCAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIGFsbCBsb3cgZXhlY3V0YWJsZSBtZW1vcnkg
d2FzbSB0ZXN0cyBvbiBhcm02NApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Zm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMKaW5kZXggNTVlY2MwYmZjZjkxOWNhY2Fl
N2ZkMTVkZGI0MGIxNGZkY2E5NGVkYS4uMjAxMmI5MTI4NTBmNTgxMTY3ZmJkMzEwNTA1OWI3NmQ3
NjYzYjZkOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJh
dGUtYXJyYXktZW50cmllcy5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCkBAIC0zLDEwICszLDEyIEBAIGZ1bmN0aW9uIGZvbygp
IHsKICAgICB2YXIgYXJyYXkgPSBbXTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1MDAwOyBp
KyspCiAgICAgICAgIGFycmF5LnB1c2goaSk7Ci0gICAgCisKICAgICB2YXIgcmVzdWx0ID0gMDsK
LSAgICBmb3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgYXJyYXkuZW50cmllcygpKQorICAgIGZvciAo
dmFyIFtrZXksIHZhbHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpIHsKKyAgICAgICAgcHJpbnQoa2V5
ICsgIiAiICsgJHZtLmluZGV4aW5nTW9kZShhcnJheSkpOwogICAgICAgICByZXN1bHQgKz0ga2V5
ICsgdmFsdWUgKyBhcnJheVtrZXldOworICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0Owog
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKaW5kZXggZmQ2NDEzZmUzYjVlOTAzYWZmZTM4
MDNmZDAwNGMwY2IxZjFjNjRmMy4uZDNkMWJkN2U4NThlODc0ZmJkMTEzZDgyZjkyMTFlYTRiZDVl
ZjdiNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCkBAIC0yMiw3ICsyMiw3IEBAIGZv
ciAodmFyIHZhbHVlIG9mIGl0ZXIpIHsKICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6
ICIgKyB2YWx1ZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1
cm4gaXMgY2FsbGVkLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIp
OwogCiAKIApAQCAtNTMsNyArNTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAg
ICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cg
ZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5v
dCBjYWxsZWQuIjsKQEAgLTEwOCwxMCArMTA4LDEwIEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAo
ZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1cCBuZXh0LiIpCi0g
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRo
cm93IGU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlz
IGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAog
CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBp
ZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IGxvb2tpbmcgdXAgcmV0dXJuLiIpCi0gICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9
CiAKIApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAg
ICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBuZXh0IGlzIGNhbGxlZC4iKQotICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwog
fQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQu
IjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC0x
ODMsNyArMTgzLDcgQEAgdmFyIGl0ZXIgPSB7CiAgICAgfSwKICAgICByZXR1cm46IGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgdGhyb3cgIkVycm9y
OiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdh
cyBjYWxsZWQiKTsKICAgICB9CiB9OwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdHJ5IHsKICAgICB9
CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUg
aXRlcmF0aW9uLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiAr
IGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAi
RXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVkLiI7CkBAIC0yMTAsNyArMjEwLDcgQEAgdmFyIGl0
ZXIgPSB7CiAgICAgfSwKICAgICByZXR1cm46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJu
Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKICAgICB9CiB9
OwogdHJ5IHsKQEAgLTIxOCw4ICsyMTgsOCBAQCB0cnkgewogICAgICAgICBicmVhazsKICAgICB9
CiB9IGNhdGNoIChlKSB7Ci0gICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gaXMg
Y2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7
CisgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gd2FzIGNhbGxlZCIpCisgICAg
ICAgIHRocm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJl
dHVybiBpcyBub3QgY2FsbGVkLiI7CkBAIC0yNTUsMTAgKzI1NSwxMCBAQCBmdW5jdGlvbiBpdGVy
YXRvckludGVyZmFjZUVycm9yVGVzdChub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAg
ICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJv
dyBlOwogICAgIH0KICAgICBpZiAocmV0dXJuQ2FsbGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6
IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2Fz
IGNhbGxlZCIpOwogfQogCiBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJldHVy
bihub3RJdGVyYXRvclJlc3VsdCkgewpAQCAtMjgyLDcgKzI4Miw3IEBAIGZ1bmN0aW9uIGl0ZXJh
dG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAg
IH0KICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjog
VGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJy
b3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmICgh
cmV0dXJuQ2FsbGVkKQogICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVk
LiI7CkBAIC0zMTMsNyArMzEzLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rl
c3RSZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIlR5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAg
ICAgaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5v
dCBjYWxsZWQuIjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1taXhl
ZC12YWx1ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0OThhNjA0MzNkZjJkYzE3NTNhOWQ3Yjg4Yjk2YmQzMjQwMDZmODEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVz
LmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIHRlc3QoYXJyYXkpIHsKKyAgICBsZXQgc3Vt
ID0gMDsKKyAgICBmb3IgKGxldCB2IG9mIGFycmF5KSB7CisgICAgICAgIGlmICh0eXBlb2YgdiA9
PT0gIm51bWJlciIpCisgICAgICAgICAgICBzdW0gKz0gdjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIHN1bTsKKyAgICB9Cit9Citub0lubGluZSh0ZXN0KTsKKworbGV0IGFycmF5
ID0gWzEsMiwzLDQsInN0cmluZyJdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgewor
ICAgIGlmICh0ZXN0KGFycmF5KSAhPT0gMTApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOwor
fQorCisKK2FycmF5ID0gWzEsMiwzLDQse31dCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytp
KSB7CisgICAgaWYgKHRlc3QoYXJyYXkpICE9PSAxMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1m
b3Itb2Ytb24tbWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9y
LW9mLW9uLW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzhiN2VlODE0MjRhMmQyZjUzOGNlN2IyMDU5ZDhk
NmU0NThlNGJhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNv
bnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiAqZmlu
ZChub2RlcywgcCkKK3sKKyAgICBmb3IgKGxldCBbYXJyYXldIG9mIG5vZGVzKSB7CisgICAgICAg
IGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUoZmluZCk7CisKK2xldCBt
YXAgPSBuZXcgTWFwKCk7Citub0lubGluZShtYXBbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQpOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBtYXAuc2V0KFsxLDIsNCw1LDVdLCB7
fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmb3IgKGxldCB2IG9m
IGZpbmQobWFwLCBpICUgMikpIHsgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLXNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJmMzI3MzkwZDcz
NzVhMjIwMmFlNTlhMTEyNDY1Njk4Y2I2ZWFiNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKQEAgLTAsMCArMSwy
MyBAQAorZnVuY3Rpb24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgYXJyYXkgb2Yg
bm9kZXMpIHsKKyAgICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2ID09PSBwKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAgICB9Cit9Citub0lubGlu
ZShmaW5kKTsKKworbGV0IHNldCA9IG5ldyBTZXQoKTsKK25vSW5saW5lKHNldFtTeW1ib2wuaXRl
cmF0b3JdKCkubmV4dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKQorICAgIHNldC5h
ZGQoWzEsMiw0LDUsNV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgewor
ICAgIGZvciAobGV0IHYgb2YgZmluZChzZXQsIGkgJSAyKSkgeworICAgICAgICBpZiAoaSAlIDIg
IT09IDEpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vIHJlc3VsdCBzaG91bGQgaGF2
ZSBiZWVuIHByb2R1Y2VkIGhlcmUiKTsKKyAgICAgICAgaWYgKCEodiBpbnN0YW5jZW9mIEFycmF5
KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigicmVzdWx0IHdhcyBub3QgYW4gYXJyYXki
KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2Yt
ZG9uZS1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWI0YzQ5YzkzYjI5ZmNiMGY3MTBjNmM4MmQxZmQ4ODAwMWEyMmUy
NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25l
LWdldHRlci5qcwpAQCAtMCwwICsxLDIzIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytp
KSB7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsK
KyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAg
Z2V0IGRvbmUoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbmFsVGllcigpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgRm9yY2VPU1IoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAor
CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAg
cmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAgdHJ5IHsKKyAg
ICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIHsKKyAgICB9CisgICAg
aWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzIGIvSlNU
ZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NzA5NmVlMDNlMTUyNTczYWVkYzY0ZDA0MzlmYjJiZjIyYzY0MTViCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpAQCAtMCww
ICsxLDIxIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0IHJldHVy
bkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgZG9uZTogMCwK
KyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAg
ZG9uZTogdGhpcy5kb25lKyssCisgICAgICAgICAgICAgICAgZ2V0IHZhbHVlKCkgeyBpZiAoaXNG
aW5hbFRpZXIoKSkgRm9yY2VPU1IoKTsgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKwor
ICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJl
dHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAg
ICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQorICAgIGlm
IChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYyYmQzMmFkZDdjYzNiYTM0MzI1NGRhNzEwOGU1MTlmZjc1YjMyNTEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5z
LW5vbi1vYmplY3QuanMKQEAgLTAsMCArMSwxNiBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7
ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUg
PSB7CisgICAgICAgIG5leHQoKSB7IHJldHVybiAxOyB9LAorICAgICAgICBbU3ltYm9sLml0ZXJh
dG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVk
ID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJs
ZSkgeyB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPSAiVHlwZUVycm9yOiBJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKKyAgICAgICAgICAg
IHRocm93IGU7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25l
LWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1k
b25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YTE0MmM4YTZjNTRm
NDc2ZWMwMzlhMTRlOWUyZDNlN2I5NmRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCAr
MSwyNCBAQAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7
CisgICAgbGV0IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5l
eHQoKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBnZXQgZG9uZSgpIHsKKyAgICAgICAgICAg
IHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wu
aXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAg
ICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJ5IHsK
KyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAg
ICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJv
bS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5l
eHQtaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjE5NGZkN2NhNWFjNTlhZDY5NjE5
NDJmODYyN2I2MGE1YWEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhy
b3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNCBAQAorZm9yIChs
ZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgbGV0IHJldHVy
bkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7CisgICAgICAg
ICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3lt
Ym9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAg
ICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIG5v
SW5saW5lKGl0ZXJhYmxlLm5leHQpOworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVy
YWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcm9ycigpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisK
KyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1v
Zi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1m
b3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwODc4ODM1OGU0ZWQzMDYxMmFjYzZmMmVmM2Ez
MGQ4ZDU2NjY3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9t
LXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2ZvciAo
bGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1
cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7
IHJldHVybiB0aGlzOyB9LAorICAgICAgICBkb25lOiBmYWxzZSwKKyAgICAgICAgZ2V0IHZhbHVl
KCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwK
KyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBy
ZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFibGUpIHsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgICAgIH0KKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRo
cm93IGU7CisgICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396557</attachid>
            <date>2020-04-15 12:17:58 -0700</date>
            <delta_ts>2020-04-15 12:26:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415121757.patch</filename>
            <type>text/plain</type>
            <size>264487</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4zMDU4MTc0ZGU4NjljYzhi
Nzc4MGUxOGQ0OTNjN2VjNmM1MjE1MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTkgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzLCBGbHVzaGluZy9QaGFudG9taW5nCisg
ICAgICAgIHZhbHVlcyBhdCB0aGUgZW5kIG9mIGVhY2ggYmxvY2suCisKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9y
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5o
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6CisgICAg
ICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjphcnJheVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9m
aWxlRm9yKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6
dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6
CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0
aW9uRm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVn
aXN0ZXJzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2Zp
bGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3Ry
dWN0aW9uLmg6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgor
ICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJh
c2VJbnN0cnVjdGlvbjo6d2lkZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRp
b25Nb2RlTWV0YWRhdGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N1cGVyU2FtcGxlci5oLgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAg
ICAoSlNDOjppc1N1YnR5cGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
Q29udGFpbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAo
SlNDOjpTdXBlclNhbXBsZXJTY29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmljRW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJc0VtcHR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ck9wZW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVy
aWNOZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdl
bmVyaWNOZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvckdlbmVyaWNDbG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0QXN5bmNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmZvckFsbFZhbHVlcyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3Rh
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAq
IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
RkdTaW1wbGlmaWNhdGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6
REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICog
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxl
dmVsKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNp
emUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1i
ZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3Bl
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToK
KyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpM
YXp5SlNWYWx1ZTo6c3BlY3VsYXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdW
YWxpZGF0ZS5jcHA6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5l
cmF0b3IvTWV0YWRhdGEucmI6CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmNsb29wU3RhY2spOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2hlY2tlZFJldHVy
bik6CisgICAgICAgIChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFB1dENhbGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAg
ICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9v
cGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9K
SVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNo
ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNo
ZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2tw
b2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhp
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgor
ICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChK
U0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0
b3JfbmV4dF90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rf
bmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgor
ICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5j
cHA6CisgICAgICAgIChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAg
KiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojph
cnJheVByb3RvVmFsdWVzRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKIDIwMjAt
MDQtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IERlYnVnZ2VyOiBhZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBleHByZXNz
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGUwMzk0YjdiZTViNWJiMDE4YjRlZmJjYzk4NWY1Yjc4ZGEyMjY4NmQuLjE5NmM0
MjJmNDBjMDhhMWVjMTcxMGJmMDE0Y2IxODk5YzBjODE4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9FbnVt
Q2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oOgorCiAyMDIwLTA0LTE0ICBQZW5nIExpdSAgPHBlbmcu
bGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgaW50ZXJmYWNlIEFWQXVkaW9Sb3V0aW5n
QXJiaXRlciBmb3IgTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggNTJiNDZlY2M5ZTI4
OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4uNWE5YTBiNDQ0MTEwNzIzZDczOWEzMjUwMjg1
ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtNDAsOCArNDAsOCBA
QCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltzZGs9bWFjb3N4Kl0gPSAtV2wsLW9yZGVyX2Zp
bGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdDQ19QUkVGSVhfSEVBREVSID0gSmF2YVNjcmlw
dENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotT1RIRVJf
Q0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87Ci1P
VEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4
PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6
ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ1BMVVNQTFVTRkxBR1Mg
PSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9
dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIgJChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElO
Rk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RBTExfUEFUSCA9ICQoSkFWQVNDUklQVENP
UkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUw
MTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4MWNjMjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5
Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xv
YmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsK
IAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkw
MEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggKi87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgw
MDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmgg
Ki87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3
MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLzsgfTsKKwkJNTNENDFF
QzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5
ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dh
c21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAq
LzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3
MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0
aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBC
MTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQ
bGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBC
eXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0
ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4
MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVzZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0
YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NERCMURBRjA4QUIw
MEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REQxREFGMDlBMDAwQjky
Nzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVz
c1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0
OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUwRTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJCQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUg
LyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi8sCiAJCQkJMEY2NjZFQkUxODM1NjZGOTAw
RDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKKwkJCQk1M0Qz
NTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggKi8sCiAJCQkJRTNE
MjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUz
RDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNE
MzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4
NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJD
MDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4
MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJ
CTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJ
CQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJ
CQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
UHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
Ki8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAw
QkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdB
OUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQg
LyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4REFFQjFEMzhE
MDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUx
NEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAq
LywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8q
IElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0
ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2
RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3Rh
dHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRl
cmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAw
NTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2JmNWJhNWViZWYwZWM4Li4xNTM5N2U4YjdmNDhh
ODRmYjI3ZjExZDJmMTM3MWUwZTJhMzAxY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjg2LDYgKzY4Niwy
MCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7
CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBM
b2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChsb2dp
Y2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5t
X3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRy
LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAg
ICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBvcjY0KGRlc3Qs
IHNyYywgZGVzdCk7CkBAIC0xNjAzLDcgKzE2MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAg
fQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMs
IG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CkBAIC0xNjE4LDcgKzE2MzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdp
c3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCog
YWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50
OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBpZiAoIWltbTgubV92YWx1ZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCmluZGV4IDhjNjk3OWJiOWIyZmRlYjA0Y2EwMjZlNzY2ZDIwOGI3M2EwNjNmMmUuLjJhMWRk
ZWRlZTM2ZGJlM2NkZTU3MmY0ODYwNWE0NjRjODBiNmU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpi
cmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IxNjsKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3I4OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpzdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKQEAgLTk2LDYgKzk3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgb3IxNihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsK
ICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRy
KSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBvcjgoaW1tLCBBZGRyZXNzKHNjcmF0Y2hS
ZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IGZiMzQ4YjkyZGQyNjIzYzA2NTFl
ZmQyZTRhOGMwZThkZTIzN2IyMDEuLjk0MjY1N2M2MmYwNzQ5Y2EwNWM0ZWVlNGQ2N2I5NWZlNjQ1
NWQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKQEAgLTIwNywxMCArMjA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3V0T2ZCb3VuZHMo
KSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9vbCogYWRkcmVzc09mT3V0T2ZCb3Vu
ZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQogICAgIAotICAgIHZvaWQgb2JzZXJ2ZVN0
cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICB9CisgICAgdm9pZCBvYnNlcnZlU3Ry
dWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlE
ID0gc3RydWN0dXJlSUQ7IH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAK
ICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3Ry
dWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCmluZGV4IDFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIuLmUyODhh
OTk3MjAwOGJjOTUyOTdmNThhZjA5NTlkM2ZjZDk0MGRkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzQsNiArMzQsNyBAQCB0eXBl
cyBbCiAgICAgOkdldEJ5VmFsSGlzdG9yeSwKICAgICA6R2V0UHV0SW5mbywKICAgICA6SW5kZXhp
bmdUeXBlLAorICAgIDpJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgOkpTQ2VsbCwKICAgICA6
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsCiAgICAgOkpTR2xvYmFsT2JqZWN0LApAQCAtMTE2
Miw2ICsxMTYzLDU5IEBAIG9wIDpnZXRfcmVzdF9sZW5ndGgsCiAgICAgICAgIG51bVBhcmFtZXRl
cnNUb1NraXA6IHVuc2lnbmVkLAogICAgIH0KIAorIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgaXRl
cmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0Owor
IyBGb3IgYnVpbHRpbiBpdGVyYXRvcnMsIGhvd2V2ZXIsIHRoaXMgaGFzIHNwZWNpYWwgYmVoYXZp
b3Igd2hlcmUgbmV4dCBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZSwgd2hpY2gKKyMgaW5kaWNhdGVz
IHRoYXQgd2UgYXJlIGluIGEga25vd24gaXRlcmF0aW9uIG1vZGUgdG8gb3BfaXRlcmF0b3JfbmV4
dC4KK29wIDppdGVyYXRvcl9vcGVuLAorICAgIGFyZ3M6IHsKKyAgICAgICAgaXRlcmF0b3I6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBz
eW1ib2xJdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYWJsZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgfSwKKyAgICBt
ZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgY2Fs
bExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgaXRlcmF0b3JQcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCisgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
KyAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICB9LAorICAgIGNoZWNrcG9p
bnRzOiB7CisgICAgICAgIHN5bWJvbENhbGw6IG5pbCwKKyAgICAgICAgZ2V0TmV4dDogbmlsLAor
ICAgIH0KKworIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgbmV4dFJlc3VsdCA9IG5leHQuQGNhbGwo
aXRlcmF0b3IpOyBkb25lID0gbmV4dFJlc3VsdC5kb25lOyB2YWx1ZSA9IGRvbmUgPyB1bmRlZmlu
ZWQgOiBuZXh0UmVzdWx0LnZhbHVlOworb3AgOml0ZXJhdG9yX25leHQsCisgICAgYXJnczogewor
ICAgICAgICBkb25lOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIG5leHQ6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAg
ICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAg
aXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBH
ZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwKKyAgICB9
LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBuaWwsCisgICAgICAg
IGdldERvbmU6IG5pbCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9CisKIG9wIDp5aWVs
ZCwKICAgICBhcmdzOiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLApAQCAt
MTI5MCw2ICsxMzQ0LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9jYXRpb24KIG9wIDpv
cF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9pZF9yZXR1cm5fbG9j
YXRpb24KIG9wIDpvcF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9y
X29wZW5fcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRp
b24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZV9ub190bHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBkOGZmNmM3OTg5NmFm
ZDAwZTIwY2M0Mjc3OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhkNDQyMDQwOGNhYzUw
YTM4ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIzMSwxMyBAQCBCaXRt
YXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChjb25zdCBD
b2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChPcENhbGxWYXJhcmdz
OjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJlc3VsdC5zZXQoT3BJ
dGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAx
NGFiZDkwNTlhOGJhMzdiMmEzYmVmZmQ3NTUwYzQ5Y2Y2ZmI1YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaApAQCAt
MCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQgaGFzTWVt
YmVyLgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQg
Y2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOwor
ICAgIHJldHVybiAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGU7CisKKyAg
ICAvLyBJbnNlcnQgcGVyIG1ldGFkYXRhIG92ZXJyaWRlcyBoZXJlIHdoZW4gd2UgbmVlZCB0aGVt
LgorICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1l
dGFkYXRhPgorYm9vbCBoYXNBcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRh
dGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQcm9maWxl
Rm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9yKEJ5dGVj
b2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAg
QVNTRVJUKGhhc0FycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7Cisg
ICAgcmV0dXJuICphcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgp
OworfQorCisvLyBUT0RPOiBNYWtlIHRoaXMgb3B0aW9uYWwuIEZpZ3VyZSBvdXQgaGFzTWVtYmVy
LgordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSogdmFs
dWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hl
Y2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAg
IGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jf
b3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gJm1ldGFkYXRhLm1faXRlcmF0b3JQ
cm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gJm1l
dGFkYXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVj
b2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgc3dp
dGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29t
cHV0ZU5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZTsKKyAgICAgICAg
Y2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuICZtZXRhZGF0YS5tX2RvbmVQcm9m
aWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuICZtZXRh
ZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSAKKyAgICAgICAgcmV0dXJuICZtZXRh
ZGF0YS5tX3Byb2ZpbGU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+
Citib29sIGhhc1ZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5z
aWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JJbXBs
KG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRl
Y29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRh
ZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBBU1NFUlQo
aGFzVmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKKyAgICByZXR1
cm4gKnZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorT3BlcmFuZCBkZXN0aW5hdGlvbkZvcihjb25z
dCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCwgSklUVHlwZSB0
eXBlID0gSklUVHlwZTo6Tm9uZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4
KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9v
cGVuKSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiBieXRlY29kZS5tX2l0ZXJhdG9yOwor
ICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gYnl0ZWNvZGUubV9u
ZXh0OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0
ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgc3dpdGNoIChj
aGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5l
eHQ6IHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEpJVFR5cGU6OkRGR0pJVCB8fCB0eXBlID09
IEpJVFR5cGU6OkRGR0pJVCkKKyAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmFuZDo6dG1wKE9w
SXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBieXRlY29kZS5t
X3ZhbHVlOyAvLyBXZSByZXVzZSB2YWx1ZSBhcyBhIHRlbXAgYmVjYXVzZSBpdHMgZWl0aGVyIG5v
dCB1c2VkIG9yIHdyaXR0ZW4gYXMgdGhlIHRlbXAgb2JqZWN0IGRpZXMuCisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2RlLm1fZG9u
ZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBieXRlY29k
ZS5tX3ZhbHVlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAgICAgIHJl
dHVybiBieXRlY29kZS5tX2RzdDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2NhdGlvbnMK
KwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRm9y
KGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQorewor
ICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0
ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNo
ZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJl
dHVybiBieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIg
KEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VS
VChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5
dGVjb2RlLm1fY2FsbGVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3Vuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29k
ZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3Bv
aW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0
ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJh
dG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiBj
b25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAg
ICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0
KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29k
ZS5tX2FyZ2M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlmZl90IHN0
YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5z
aWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5k
ZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9y
X29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Bl
bjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVycyAtIGJ5dGVjb2RlLm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNlIGlmIGNv
bnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAg
ICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQp
OworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRl
Y29kZS5tX2l0ZXJhdG9yLm9mZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0
ZWNvZGUubV9hcmd2OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgor
TExJbnRDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRh
ZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVj
a3BvaW50SW5kZXgpOworICAgIHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBl
MGQ1NjI2YzEzLi5hNWE1MDdlZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAK
QEAgLTI1OSw2ICsyNTksOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwo
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAgVVNFUyhP
cFlpZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9yT3Blbiwg
c3ltYm9sSXRlcmF0b3IsIGl0ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQsIGl0ZXJh
dG9yLCBuZXh0LCBpdGVyYWJsZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFk
OgogICAgICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlX
aXRoU3ByZWFkPigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwgdGhyb3du
VmFsdWUpCiAKKyAgICBERUZTKE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkKKyAgICBE
RUZTKE9wSXRlcmF0b3JOZXh0LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50ZXI6IHsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1
bmN0b3IodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIyNTkxOTQ3
NzY4NTU3ZWE4N2E2NTdmMjNhNjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2OWU5NjM0
MTc1MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcApAQCAtNDAsMTggKzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxsTGlua0lu
Zm86OkNhbGxUeXBlIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQp
CiB7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9l
dmFsKQorICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJh
cmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAgICBy
ZXR1cm4gVGFpbENhbGxWYXJhcmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6CisgICAg
Y2FzZSBvcF9jYWxsX2V2YWw6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ug
b3BfaXRlcmF0b3JfbmV4dDoKICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9wY29kZUlE
ID09IG9wX2NhbGxfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgICAg
ICByZXR1cm4gQ2FsbFZhcmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkK
KworICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0OwotICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY29u
c3RydWN0X3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwotICAgIGlm
IChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAg
ICAgICAgcmV0dXJuIFRhaWxDYWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2Nh
bGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMp
OwotICAgIHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gQ2FsbDsKIH0KIAogQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjEzZDE3
MzRhMDJjNThhMzIxNzU5MjVkMjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEzNzhhZWJl
ZjkwMjU2ZjExNWVmMTdlM2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDb2RlQgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlua0luZm8g
PSAmaW5zdHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayku
bV9jYWxsTGlua0luZm87CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Bl
bjoKKyAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Bl
bj4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0luZm8gPSAm
aW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2sp
Lm1fY2FsbExpbmtJbmZvOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdlNjE2MGI2
NTNlN2E0ZTczMDRiMi4uYTRhN2M1YWFiZjA1NmIzODMxNDQ4NDE4ZjkxZGE4ODU0ZjdiYTdjNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3Rz
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1
cy5oIgpAQCAtOTcsNiArOTgsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CiAK
KwogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3Qu
aCIKICNlbmRpZgpAQCAtNTgzLDYgKzU4NSwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawog
ICAgICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cp
CiAKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFM
SVpFX01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElB
TElaRV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJ
QUxJWkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsNiArMTI0MCwzMyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDE4CiAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gYWRkIG9wdGltaXphdGlvbnMgZm9yIG9wX3Jlc29sdmVfc2NvcGVf
Zm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsIHRvIGRvIGxpbmsgdGltZSBzY29wZSByZXNv
bHV0aW9uLgogCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAoIW9s
ZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9n
RigiQ2xlYXJpbmcgaXRlcmF0b3Igb3BlbiBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAg
ICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAg
IH0pOworCisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZd
IChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBjbGVhcklmTmVlZGVkID0gWyZd
IChHZXRCeUlkTW9kZU1ldGFkYXRhJiBtb2RlTWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
ICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICJDbGVhcmluZyBpdGVyYXRvciBuZXh0IExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOwor
ICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRh
dGEpOworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFk
YXRhKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5
SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEyMzEsNyArMTI3NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0u
aGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJl
SUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7
Ci0gICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEpOworICAgICAgICAgICAgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKQEAgLTEzMjYsOSArMTM2OSwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElu
bGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAgICAgICAg
YXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtl
eSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlE
KCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAgICAg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJp
bmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNo
ZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAg
ICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNs
ZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0
YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBp
dGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBMTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlk
Q2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLm1f
bW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5l
eHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24n
dCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFu
bm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4uCisg
ICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRv
ck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1l
dGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hl
KG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpA
QCAtMzA0MSw2ICszMTAyLDExIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1
ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvCiAKICN1bmRlZiBD
QVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJldHVybiAmdmFsdWVQ
cm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlz
KSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4
dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRl
cmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7
CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggMjJlNzZi
MTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5
M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlmICht
X21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUs
IGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAg
ICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYg
VklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Bl
bj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9p
dGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVy
YXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJv
ZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBmdW5j
KG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMo
bWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0
YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9ICAgCiAKIH0KIApA
QCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29u
c3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJU0lUMgorCisgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAg
ICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2Nzdh
Mjg4YzIuLjI4MmNmOGY0MjdjMWZiZWFiMjk2YTM1ODNiMDc5OTQxZGExMGVmMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtODYsNiAr
ODYsMzUgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9wX2dldF9ieV92YWw6
CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAgICAgICAgYXV0byYg
bWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJv
ZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWls
IGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2FkLgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAgIGlmIChtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAg
ICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgc3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRh
dGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQo
KSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAgaWYgKG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAg
ICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAg
ICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0
TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlO
YW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5t
X3ZhbHVlTW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAg
ICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5kZWZhdWx0
TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVm
YXVsdDogewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdl
dEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggMDg1YWU4ZDE5OTc2Yjg4NmYwMDE5Zjg1ZmE2
N2IwMmJlMTRjZGE1ZS4uM2Q3MGNkNTQzZWNmYWU5MDIyNTAyOTYwMWEwZDQwNWVjNjcxYjJkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTMy
LDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAg
ICAgdXNpbmcgT3Bjb2RlSUQgPSA6OkpTQzo6T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0
PE9wY29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0
YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSk7Cisg
ICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1i
ZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJ
RCB3aWRlMTYgPSBvcF93aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRl
MzIgPSBvcF93aWRlMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bj
b2RlTGVuZ3RocyA9IDo6SlNDOjpvcGNvZGVMZW5ndGhzOwpAQCAtNDEsNyArNDMsOSBAQCBzdHJ1
Y3QgSlNPcGNvZGVUcmFpdHMgewogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CiAgICAgdXNp
bmcgT3Bjb2RlSUQgPSBXYXNtT3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJ
RCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlE
PihOVU1CRVJfT0ZfV0FTTV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHBy
IE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQo
bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRo
TWV0YWRhdGEpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gd2FzbV93
aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3YXNtX3dpZGUz
MjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0g
d2FzbU9wY29kZUxlbmd0aHM7CkBAIC05OCwxMiArMTAyLDI2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3
aWRlMzI7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVU
cmFpdHM+CisgICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
aXNXaWRlMzI8VHJhaXRzPigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUz
MjsKKyAgICAgICAgcmV0dXJuIGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUx
NiA6IE9wY29kZVNpemU6Ok5hcnJvdzsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
cmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9m
Qnl0ZWNvZGVzV2l0aE1ldGFkYXRhOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRy
YWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVy
T2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3VudCgpIGNv
bnN0CiAgICAgewpAQCAtMTM3LDYgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBU
OjpkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwogICAgIH0K
IAorICAgIHRlbXBsYXRlPGNsYXNzIFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0
cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCgoaXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIHJldHVybiBUKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2lnbmVkVHlw
ZSo+KHRoaXMgKyAod2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7CisgICAg
fQorCiAgICAgdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFp
dHM+CiAgICAgVCogY2FzdCgpCiAgICAgewpAQCAtMTYxLDcgKzE4Niw3IEBAIHB1YmxpYzoKICAg
ICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KQEAgLTE2
OSwxNCArMTk0LDE2IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTMy
PFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8
T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6
V2lkZTMyPio+KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBw
dWJsaWMgQmFzZUluc3RydWN0aW9uPE9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXpl
b2YoSW5zdHJ1Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0
ZSBtYXRoIik7CiAKIHN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9u
PFdhc21PcGNvZGVJRD4gewogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkg
PT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkNjkxOTMxYzZjNzk0OGU1
NTdlNGY1NjkyM2FlMzQ5MGZlYjllOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIEl0ZXJhdGlvbk1vZGUgOiB1aW50
OF90IHsKKyAgICBHZW5lcmljID0gMSA8PCAwLAorICAgIEZhc3RBcnJheSA9IDEgPDwgMSwKK307
CisKK2NvbnN0ZXhwciB1aW50OF90IG51bWJlck9mSXRlcmF0aW9uTW9kZXMgPSAyOworCitPVkVS
TE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVSR1JBTFMoSXRl
cmF0aW9uTW9kZSk7CisKK3N0cnVjdCBJdGVyYXRpb25Nb2RlTWV0YWRhdGEgeworICAgIHVpbnQ4
X3Qgc2Vlbk1vZGVzIHsgMCB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHNl
ZW5Nb2RlcykpID09IHNpemVvZihJdGVyYXRpb25Nb2RlKSk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAKaW5kZXggMmQxNDNiOWNmNjc0MzA1ZDQwYzkxZWIwYWUzNTEzMzEyNTY5NDQx
Zi4uYmJlMWY2N2ZmYmVmZThlOGJiMTM2N2ViNmM3ZWQ2N2NiYWE4YWI4YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAg
LTYwLDE0ICs2MCwzMSBAQCB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRgogICAgIH0KIAogICAgIGF1
dG8mIGluc3RydWN0aW9uID0gbV9vd25lci0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZU9m
ZnNldC5nZXQoKSk7Ci0gICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8
T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpKTsKKyAgICBzd2l0Y2ggKGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpKSB7CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNs
ZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0
YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5t
X21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9u
ZXh0OiB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JOZXh0PigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpOworICAgICAgICBjbGVhckxMSW50R2V0
QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGNsZWFyTExJ
bnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAotdm9pZCBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUo
T3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEpCit2b2lkIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlk
TW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICAvLyBLZWVwIGhpdENvdW50Rm9yTExJbnRD
YWNoaW5nIHZhbHVlLgotICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0
TW9kZVdpdGhvdXRDYWNoZSgpOworICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhv
dXRDYWNoZSgpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDIyMGZmZjNlM2Jm
NTQzNDFlOTYxYzgyZGY4YzRlOGM5MDAwNzM0YmUuLjFkNTk1N2VmZjgxMDkyYTFkYWJkZWU1MDI1
Y2FjNWU2ZjM4Njc4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBpbnN0YWxsKFZNJik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hl
KE9wR2V0QnlJZDo6TWV0YWRhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmKTsKIAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggMTg1MWI2M2M3Y2E2YWVmMmZiMzZiZjJmODdl
OTJhMTllMGQ0MGMxOC4uYWE4ODU5YWRkNjI4NjBmZmRhZGI0ZDIyMjg3YzM0YjA3Y2U1YjMzNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTQ4LDYgKzE0OCw5
IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGgg
PSBXVEY6OmdldE1TQlNldENvbnN0ZXhwcihtCiAgICAgbWFjcm8oT3BUYWlsQ2FsbCkgXAogICAg
IG1hY3JvKE9wQ2FsbEV2YWwpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorICAgIG1hY3Jv
KE9wSXRlcmF0b3JPcGVuKSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck5leHQpIFwKKwogCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZDc2ZDRmYTdi
NDZlOThiOWY5NzAwZGMzODYzMGY0Li45NDY1OGIwOTZiZjE5M2M4N2NmZDcxYTlmNWJkZTE1ZjYx
MzMyYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaApAQCAtMTIwLDYgKzEyMCwxNiBAQCBpbmxpbmUgYm9vbCBpc0FueVNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlKQogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9vbCBpc1N1
YnR5cGVTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0
ZWdvcnkpCit7CisgICAgcmV0dXJuICEodmFsdWUgJiB+Y2F0ZWdvcnkpICYmIHZhbHVlOworfQor
CitpbmxpbmUgYm9vbCBzcGVjdWxhdGlvbkNvbnRhaW5zKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBT
cGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBjYXRlZ29y
eSkgJiYgdmFsdWU7Cit9CisKIGlubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNDZWxsKSAmJiAhKHZh
bHVlICYgflNwZWNDZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdXBlclNhbXBsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBl
clNhbXBsZXIuaAppbmRleCA5NjEwZGNlNWNkYmMzZWMwOWNlMzNiMWQ2YmNjNGIzZmY4YTZjM2M4
Li5lOWJmOTUzMWY3YmE1OTU3MzExMGUzMWE3YTQ0Y2QyMjhiNzU3MTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC00OCw2ICs0OCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CiAgICAgfQogCisg
ICAgdm9pZCByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvU2FtcGxlKTsKKyAg
ICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOworICAgICAgICBtX2RvU2FtcGxlID0gZmFsc2U7
CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgbV9kb1NhbXBsZTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDYzZDM2MmNhYzE5ZDQ5Mzk4OTQ3NzdiZWRhN2MwYWMyZDYzNjA2M2YuLjhmZWRl
NjJiNTMwZWJkMTAxZmVkYTYxYWJhYjk0OWEzZjNiMzU5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC00MDE2LDE0ICs0MDE2LDE1IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25s
eUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBj
b25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4m
IGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3lt
Ym9sVGFibGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9u
KFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5v
ZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxv
b3BTeW1ib2xUYWJsZSkKIHsKICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9kZSA/IGZv
ckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkgOiBmYWxzZTsKLSAgICBBU1NFUlQoIWlzRm9yQXdhaXQg
fHwgKGlzRm9yQXdhaXQgJiYgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkp
OworICAgIGF1dG8gc2hvdWxkRW1pdEF3YWl0ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVz
IDogRW1pdEF3YWl0OjpObzsKKyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0
aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3Vi
amVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1Ympl
Y3ROb2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8g
ZW1pdEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0
b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9y
ID0gaXNGb3JBd2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUp
IDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBp
dGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgUmVmPExhYmVsPiBs
b29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00MTMwLDcgKzQxMzEsNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUs
IEV4cHJlc3NpbwogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEl0ZXJh
dG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0
KCksIGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwogCiAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZW1p
dEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUp
OwpAQCAtNDE0Myw3ICs0MTQ0LDE0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAg
ICBwb3BGaW5hbGx5Q29udHJvbEZsb3dTY29wZSgpOwogICAgICAgICBpZiAoYnJlYWtMYWJlbElz
Qm91bmQpIHsKICAgICAgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFr
LWVkIGNvbnRyb2wgZmxvdy4KLSAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9y
LmdldCgpLCBub2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5v
KTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwg
bm9kZSwgc2hvdWxkRW1pdEF3YWl0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbWl0TGFiZWwo
bG9vcERvbmUuZ2V0KCkpOworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVt
ZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1
YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklE
KiBmb3JMb29wU3ltYm9sVGFibGUpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVyYXRpb25J
bnRyaW5zaWNzKCkgfHwgaXMzMkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+
aXNGb3JBd2FpdCgpKSkgeworICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1
YmplY3ROb2RlLCBjYWxsQmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmFibGUg
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0Tm9kZShpdGVyYWJsZS5nZXQoKSwgc3ViamVjdE5v
ZGUpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yU3ltYm9sID0gZW1pdEdldEJ5
SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhYmxlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JTeW1ib2wpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0T3JJbmRleCA9IG5ld1RlbXBv
cmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG5ld1RlbXBvcmFyeSgp
OworICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgbW92ZShh
cmdzLnRoaXNSZWdpc3RlcigpLCBpdGVyYWJsZS5nZXQoKSk7CisgICAgZW1pdEl0ZXJhdG9yT3Bl
bihpdGVyYXRvci5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIGl0ZXJhdG9yU3ltYm9sLmdldCgp
LCBhcmdzLCBub2RlKTsKKworICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwor
ICAgIFJlZjxMYWJlbD4gdHJ5U3RhcnRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVs
PiBmaW5hbGx5VmlhVGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5h
bGx5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xh
YmVsKCk7CisgICAgUmVmPExhYmVsPiBlbmRDYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2Fk
KHZhbHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIFJlZlB0cjxSZWdpc3RlcklE
PiBpdGVyYXRvcidzIGxpZmV0aW1lIG11c3QgYmUgbG9uZ2VyIHRoYW4gSXRlcmF0b3JDbG9zZUNv
bnRleHQuCisgICAgRmluYWxseUNvbnRleHQgZmluYWxseUNvbnRleHQoKnRoaXMsIGZpbmFsbHlM
YWJlbC5nZXQoKSk7CisgICAgcHVzaEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKGZpbmFsbHlDb250
ZXh0KTsKKworICAgIHsKKyAgICAgICAgUmVmPExhYmVsU2NvcGU+IHNjb3BlID0gbmV3TGFiZWxT
Y29wZShMYWJlbFNjb3BlOjpMb29wKTsKKworICAgICAgICBSZWY8TGFiZWw+IGxvb3BTdGFydCA9
IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAg
ICBlbWl0TGFiZWwoKnNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKKyAgICAgICAgZW1pdExvb3BI
aW50KCk7CisKKyAgICAgICAgaWYgKGZvckxvb3BOb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChmb3JMb29wTm9kZS0+aXNGb3JPZk5vZGUoKSk7CisgICAgICAgICAgICBwcmVwYXJl
TGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oZm9yTG9vcE5vZGUsIGZvckxvb3BT
eW1ib2xUYWJsZSk7CisgICAgICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhw
cigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBkb25lID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIG5l
eHRBcmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICAgICAgICAgIG1vdmUobmV4dEFyZ3MudGhp
c1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdEl0ZXJhdG9y
TmV4dChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgaXRlcmFibGUuZ2V0KCksIG5leHRPckluZGV4
LmdldCgpLCBuZXh0QXJncywgbm9kZSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShkb25l
LmdldCgpLCBsb29wRG9uZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwo
dHJ5U3RhcnRMYWJlbC5nZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBwdXNoVHJ5
KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpLCBIYW5kbGVy
VHlwZTo6U3ludGhlc2l6ZWRGaW5hbGx5KTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMsIHZhbHVl
LmdldCgpKTsKKyAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAv
LyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBhYnJ1cHQgY29tcGxldGlvbnMuCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIEZpbmFsbHkgYmxvY2sgZm9yIHRoZSBlbnVtZXJhdGlvbi4KKyAg
ICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAg
ICAgICBwb3BUcnkodHJ5RGF0YSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOworCisgICAg
ICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlCb2R5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZpbmFsbHlFeGNlcHRpb25SZWdpc3RlciA9IG5ld1Rl
bXBvcmFyeSgpOworCisgICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZmlu
YWxseUNvbnRleHQuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgZmluYWxseUNvbnRleHQuY29t
cGxldGlvblR5cGVSZWdpc3RlcigpLCB0cnlEYXRhKTsKKyAgICAgICAgICAgIG1vdmUoZmluYWxs
eUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVS
ZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGVtaXRKdW1wKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkp
OworCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgIG1vdmVFbXB0eVZhbHVlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAg
ICAgICAgICAgIC8vIEZpbmFsbHkgZmFsbCB0aHJvdWdoIGNhc2UuCisgICAgICAgICAgICBlbWl0
TGFiZWwoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICByZXN0b3JlU2NvcGVS
ZWdpc3RlcigpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlEb25lID0gbmV3TGFi
ZWwoKTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygp
LnJldHVybktleXdvcmQpOworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZp
bmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQo
KSk7CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFi
ZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOwor
ICAgICAgICAgICAgVHJ5RGF0YSogcmV0dXJuQ2FsbFRyeURhdGEgPSBwdXNoVHJ5KHJldHVybkNh
bGxUcnlTdGFydC5nZXQoKSwgY2F0Y2hMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNp
emVkQ2F0Y2gpOworCisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygq
dGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0
KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVu
dHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwg
RGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElz
T2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsK
KyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFj
ZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5
RG9uZS5nZXQoKSk7CisgICAgICAgICAgICBlbWl0RmluYWxseUNvbXBsZXRpb24oZmluYWxseUNv
bnRleHQsIGVuZENhdGNoTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBwb3BUcnkocmV0dXJu
Q2FsbFRyeURhdGEsIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgLy8gQ2F0Y2gg
YmxvY2sgZm9yIGV4Y2VwdGlvbnMgdGhhdCBtYXkgYmUgdGhyb3duIHdoaWxlIGNhbGxpbmcgdGhl
IHJldHVybgorICAgICAgICAgICAgLy8gaGFuZGxlciBpbiB0aGUgZW51bWVyYXRpb24gZmluYWxs
eSBibG9jay4gVGhlIG9ubHkgcmVhc29uIHdlIG5lZWQgdGhpcworICAgICAgICAgICAgLy8gY2F0
Y2ggYmxvY2sgaXMgYmVjYXVzZSBpZiBlbnRlcmVkIHRoZSBhYm92ZSBmaW5hbGx5IGJsb2NrIGR1
ZSB0byBhIHRocm93bgorICAgICAgICAgICAgLy8gZXhjZXB0aW9uLCB0aGVuIHdlIHdhbnQgdG8g
cmUtdGhyb3cgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBvbiBleGl0aW5nCisgICAgICAgICAgICAv
LyB0aGUgZmluYWxseSBibG9jay4gT3RoZXJ3aXNlLCB3ZSdsbCBsZXQgYW55IG5ldyBleGNlcHRp
b24gcGFzcyB0aHJvdWdoLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRMYWJl
bChjYXRjaExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVt
aXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxs
eUNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCByZXR1cm5DYWxsVHJ5RGF0YSk7Cisg
ICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBhIHN5bnRoZXNpemVkIGNhdGNoIGJsb2Nr
IGFuZCB3ZSdyZSBndWFyYW50ZWVkIHRvIG5ldmVyIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0
byByZXNvbHZlIGFueSBzeW1ib2xzIGZyb20gdGhlIHNjb3BlLCB3ZSBjYW4gc2tpcCByZXN0b3Jp
bmcgdGhlIHNjb3BlCisgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaGVyZS4KKworICAgICAg
ICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzRW1wdHkobmV3VGVtcG9yYXJ5KCksIGZpbmFsbHlF
eGNlcHRpb25SZWdpc3Rlci5nZXQoKSksIHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIG1vdmUoZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rl
ci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKwor
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChlbmRDYXRjaExhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgYnJlYWtMYWJlbElzQm91bmQgPSBzY29w
ZS0+YnJlYWtUYXJnZXRNYXlCZUJvdW5kKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3Vu
ZCkKKyAgICAgICAgICAgIGVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CisgICAgICAg
IHBvcEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNC
b3VuZCkgeworICAgICAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWst
ZWQgY29udHJvbCBmbG93LgorICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0
ZXJhdG9yLmdldCgpLCBub2RlLCBFbWl0QXdhaXQ6Ok5vKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwpAQCAtNDI2NSw1NiArNDQwNCw2IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykKICAgICBPcElzRW1wdHk6OmVtaXQodGhpcywgZHN0LCBzcmMpOwogICAg
IHJldHVybiBkc3Q7CiB9Ci0gICAgCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwg
RW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBu
ZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1l
dGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBu
b2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7
Ci0KLSAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICAg
ICAgZW1pdEF3YWl0KGRzdCk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmVmPExhYmVsPiB0eXBl
SXNPYmplY3QgPSBuZXdMYWJlbCgpOwotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmpl
Y3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVt
aXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiJfcyk7Ci0gICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgIH0K
LSAgICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRN
ZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1l
bnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOwotICAgICAgICBtb3ZlKG5leHRB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgbW92ZShuZXh0QXJn
dW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENhbGwoZHN0
LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNh
bGw6Ok5vKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZHN0OwotfQotCi12b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAg
ICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3Bl
cnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRl
ZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOwot
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgQ2Fs
bEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgIG1vdmUocmV0
dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgZW1pdENhbGwodmFs
dWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5B
cmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RF
bmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0
QXdhaXQ6OlllcykKLSAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKLQotICAgIGVtaXRK
dW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25l
LmdldCgpKTsKLSAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZh
Y2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwotICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKLX0K
IAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVy
SUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIpCiB7CkBAIC00NTU1
LDcgKzQ2NDQsMzUgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVy
SUQqIHZhbHVlKQogICAgIG1vdmUodmFsdWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9
CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVn
aXN0ZXJJRCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJn
dW1lbnRzJiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7
CisgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRy
PFJlZ2lzdGVySUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQo
bmV3VGVtcG9yYXJ5KCkpOworCisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAg
ICAgIGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0
KCkpOworCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90
U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck9wZW46OmVtaXQodGhp
cywgaXRlcmF0b3IsIG5leHRPckluZGV4LCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhYmxlLnN0YWNrT2Zmc2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZh
bHVlLCBSZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxB
cmd1bWVudHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkK
K3sKKyAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQ
dHI8UmVnaXN0ZXJJRD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVW
ZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVu
ZChuZXdUZW1wb3JhcnkoKSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAg
ICAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3Rh
cnQoKSk7CisKKyAgICBlbWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yTmV4dDo6ZW1pdCh0
aGlzLCBkb25lLCB2YWx1ZSwgaXRlcmFibGUsIG5leHRPckluZGV4LCBpdGVyYXRvci50aGlzUmVn
aXN0ZXIoKSwgaXRlcmF0b3Iuc3RhY2tPZmZzZXQoKSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50
LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3Bl
cnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgZW1pdENhbGxJdGVyYXRvcihpdGVyYXRv
ci5nZXQoKSwgYXJndW1lbnQsIG5vZGUpOwpAQCAtNDU2Myw2ICs0NjgwLDU3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1l
bnQsIFRocm93YWJsZUV4CiAgICAgcmV0dXJuIGl0ZXJhdG9yLmdldCgpOwogfQogCitSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29u
c3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkK
K3sKKyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVs
bHB0cik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0
b3IpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlv
biwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2Rl
LT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGlmIChkb0VtaXRB
d2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOworICAg
IH0KKyAgICB7CisgICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3Qp
LCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJh
dG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICBlbWl0
TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0
aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJ
RCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50
cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRS
ZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgIH0K
KworICAgIHJldHVybiBkc3Q7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICBSZWY8TGFi
ZWw+IGRvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRo
b2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMo
KS5yZXR1cm5LZXl3b3JkKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3
VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOworCisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50
cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgIG1vdmUocmV0dXJuQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUuZ2V0KCks
IHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMs
IG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVi
dWdnYWJsZUNhbGw6Ok5vKTsKKworICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6Olll
cykKKyAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKKworICAgIGVtaXRKdW1wSWZUcnVl
KGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsK
KyAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpOworICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKK30KKworCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJ
RCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1
bWVudCwgcHJvcGVydHlOYW1lcygpLmFzeW5jSXRlcmF0b3JTeW1ib2wpOwpAQCAtNDU3NSw3ICs0
NzQzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJh
dG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKICAgICBlbWl0SnVtcChhc3luY0l0ZXJh
dG9yRm91bmQuZ2V0KCkpOwogICAgIGVtaXRMYWJlbChhc3luY0l0ZXJhdG9yTm90Rm91bmQuZ2V0
KCkpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEl0
ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRl
cmF0b3IgPSBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICBtb3Zl
KGl0ZXJhdG9yLmdldCgpLCBjb21tb25JdGVyYXRvci5nZXQoKSk7CiAKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRv
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwpAQCAtNDYwNCw3ICs0NzcyLDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2FibGUKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBu
ZXdUZW1wb3JhcnkoKTsKICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRv
ciA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9k
ZSA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRv
cihhcmd1bWVudCwgbm9kZSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9
IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/
IGVtaXRHZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRl
cmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1l
dGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVy
dHlOYW1lcygpLm5leHQpOwogCiAgICAgICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJl
bCgpOwpAQCAtNDY0Miw3ICs0ODEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAg
ICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jh
cnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKIAogICAg
ICAgICAgICAgICAgICAgICBFbWl0QXdhaXQgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlID0gcGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gRW1p
dEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOwotICAgICAgICAgICAgICAgICAgICBlbWl0SXRl
cmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3Nl
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9y
LmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwogCiAgICAgICAgICAgICAg
ICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBo
YXZlIGEgJ3Rocm93JyBtZXRob2QuIl9zKTsKIApAQCAtNDcwMyw3ICs0ODcxLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW1pdExhYmVs
KG5leHRFbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFs
dWUodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgbm9kZSk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1
ZSh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdl
dCgpLCBub2RlKTsKIAogICAgICAgICAgICAgZW1pdExhYmVsKGJyYW5jaE9uUmVzdWx0LmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IGQ1MzRjZDgyOGFhYzNkMTQwYjRmNDZjODY4NzY4MDkxNGUw
ZGUzMjUuLjZiNzA4ZTk2YWIxNDYwZGE2YTBhZTBjYjk1MzY4YTc5ZGNmOGVmZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTgyOCw2ICs4MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJv
cGVydHlOYW1lUmVnaXN0ZXIsCiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVy
LCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIs
IHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKKyAgICAgICAgdm9p
ZCBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJh
dGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRh
PHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZO
b2RlKiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIp
OwogICAgICAgICB2b2lkIGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
ZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ss
IEZvck9mTm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBu
dWxscHRyKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0VGVtcGxhdGVPYmplY3QoUmVn
aXN0ZXJJRCogZHN0LCBUYWdnZWRUZW1wbGF0ZU5vZGUqKTsKQEAgLTg5OCw5ICs4OTksMTUgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Rlcml2ZWRBcnJheShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhU
eXBlKGRzdCwgc3JjLCBEZXJpdmVkQXJyYXlUeXBlKTsgfQogICAgICAgICB2b2lkIGVtaXRSZXF1
aXJlT2JqZWN0Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9y
KTsKIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3
YWl0OjpObyk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVy
YXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlKTsKLSAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRv
ciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRB
d2FpdDo6Tm8pOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRv
ciwgQ2FsbEFyZ3VtZW50cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRh
Kik7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25lLCBSZWdp
c3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5leHRPcklu
ZGV4LCBDYWxsQXJndW1lbnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqKTsKKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lz
dGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
KTsKKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBj
b25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6
OkVtaXRBd2FpdDo6Tm8pOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9z
ZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVy
c1RvU2tpcCk7CiAKQEAgLTk1MCw5ICs5NTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0UHVzaENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICB2
b2lkIGVtaXRQb3BDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lz
dGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotCiAgICAgICAgIHZvaWQgZW1pdEF3
YWl0KFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCmluZGV4IGQ0ZmRiNGRkNTRkNDkyZjkwZDJkNzIxZmQ3ZGFjMTJmZjdkMmY4NTAuLjJiMTVj
YWE0NzEzYTg4NTY1YzRjZDA5NTI2ZjkwYzI0NWY2M2EwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ1NzIsNyAr
NDU3Miw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
bmV4dE1ldGhvZCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIGl0ZXJhdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAg
ICAgaWYgKG1fdGFyZ2V0UGF0dGVybnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NTg4LDcgKzQ1ODgsNyBAQCB2b2lkIEFycmF5UGF0dGVy
bk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiByaHMpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0
KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRl
cmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdl
bmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwg
dGhpcyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFs
dWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQo
KSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVl
LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ2MjQsNyArNDYy
NCw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9y
LmdldCgpLCB0aGlzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00NjQyLDcgKzQ2NDIsNyBAQCB2
b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiByaHMpCiAKICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUu
Z2V0KCksIGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9y
Q2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JH
ZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoaXRlcmF0b3JDbG9zZWQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMGE0
YTExZjliNDBlNmIxM2M1OTY0MjI4ZTQxMTI4OWYxZDllZTg2Ni4uMThkYWUwMDRjNzIyY2Q2ZmRj
Zjg5MTJiYzVjNDIxM2E0MzFiMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDM5OCwxMCAr
NDM5OCw4IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZv
ckFsbFZhbHVlcygKICAgICAgICAgICAgICAgICBmdW5jdG9yKGZvck5vZGUobm9kZSkpOwogICAg
ICAgICB9CiAgICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mQXJndW1l
bnRzKCk7IGktLTspCi0gICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hcmd1bWVudChpKSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKLSAgICAgICAg
ZnVuY3RvcihtX3N0YXRlLmxvY2FsKGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5z
aXplKCk7IGktLTspCisgICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hdEluZGV4KGkpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDg5N2M3MGRmZmJh
MDY2YjY0OWNhZmRjYzFlZjA5MzM3NjgxMDRkMTMuLjQzOGUxNmRlODU5NTkyNTRkOTU1NzIxYjZm
MDhkYjk1ODE0ZmQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXRUYWlsQWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXRUYWlsQWJzdHJhY3RTdGF0ZS5oCkBAIC0xMzcsMTEgKzEzNywxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1ha2VIZWFwVG9wRm9yTm9kZShlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAorICAgIHVu
c2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgp
OyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Js
b2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51
bWJlck9mTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJl
ck9mTG9jYWxzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCk7IH0KKyAgICBBYnN0cmFjdFZh
bHVlJiBhdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWls
LmF0KGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5k
KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKTsgfQogICAg
IEFic3RyYWN0VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFs
dWVzQXRUYWlsLmxvY2FsKGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNp
emVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGluZGV4
KTsgfQorICAgIEFic3RyYWN0VmFsdWUmIHRtcChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxv
Y2stPnZhbHVlc0F0VGFpbC50bXAoaW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3Ry
dWN0dXJlcygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCAwOTk3YmFiMDUyNTI2NGU2ZjE2NDg1NDI0MmQ5NGNlM2I1N2Uz
NmRjLi43NWUyNTc1NTUyNjdhOGEzNDY3NTk2YmRlODIxNzE5N2I4ODc3NWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5o
IgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9m
aWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC0x
NTcsNyArMTU4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEhlbHBlciBmb3IgbWluIGFuZCBtYXgu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZU1p
bk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5v
ZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAKICAgICB2b2lk
IHJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0KTsKICAg
ICAvLyBCbG9ja3MgY2FuIGVpdGhlciBiZSB0YXJnZXRhYmxlIChpLmUuIGluIHRoZSBtX2Jsb2Nr
TGlua2luZ1RhcmdldHMgb2Ygb25lIElubGluZVN0YWNrRW50cnkpIHdpdGggYSB3ZWxsLWRlZmlu
ZWQgYnl0ZWNvZGVCZWdpbiwKQEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEhh
bmRsZSBjYWxscy4gVGhpcyByZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5saW5pbmcgYW5k
IGludHJpbnNpY3MuCiAgICAgZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5h
bCB9OwogICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGlu
c3RydWN0aW9uU2l6ZSwKKyAgICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgTm9k
ZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xODgsMjcgKzE4OSwyNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRh
cmdldE5vZGUsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJ
Zk5lZWRlZCk7CiAgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVy
biBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRp
b24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcu
IFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBh
IGNhbGwuCi0gICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUg
Y2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lu
bGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1l
bnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRz
T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAgICAgdW5z
aWduZWQgZ2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCk7CiAgICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsg
T3B0aW1pemVkVG9KdW1wLCBJbmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXph
dGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVh
bFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBC
eXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwotICAgIENhbGxPcHRp
bWl6YXRpb25SZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgQ2FsbE9w
dGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
T3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxS
ZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0
ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29u
dGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxsT3B0aW1p
emF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5k
IHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1
YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Qnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAg
ICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYywg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZURP
TUpJVENhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUs
IE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIo
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3Qg
R2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0
dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KLSAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9y
KE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2Fs
bFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9k
ZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2ln
bmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSog
aGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsK
LSAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25z
dCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZURPTUpJVEdl
dHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9k
ZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CiAgICAgYm9vbCBoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KQEAgLTMxOCwxNSArMzE5LDE1IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBnZXRMb2NhbE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAgIE5vZGUq
IGdldChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVy
YW5kKQogICAgIHsKICAgICAgICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdp
c3RlcigpLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9
IG1fY29uc3RhbnRzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9s
ZFNpemUgfHwgIW1fY29uc3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAg
Y29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2s7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFu
dChvcGVyYW5kKTsKLSAgICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291
cmNlQ29kZVJlcHJlc2VudGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2Rl
QmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAg
ICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9
IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1
YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRT
aXplKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3RhbnRJbmRl
eCArIDEpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBp
IDwgbV9jb25zdGFudHMuc2l6ZSgpOyArK2kpCkBAIC0zNDcsMTAgKzM0OCwxMCBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmICghaW5s
aW5lQ2FsbEZyYW1lKCktPmlzQ2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBpbmxpbmVDYWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAg
ICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUp
CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlNDb25zdGFu
dChjYWxsZWUpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zm
c2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBpZiAob3Bl
cmFuZCA9PSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewogICAgICAg
ICAgICAgLy8gV2UgaGF2ZSB0byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNl
IHRoaXMgZW5hYmxlcyBDcmVhdGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRo
YXQgd2UgZG9uJ3QgaGF2ZSBzdWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5l
ZCB1c2VzIG9mIENhbGxlZSwgc2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0
aGUgZnVuY3Rpb24gaXMgYSBzaW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00
MTAsNyArNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNocmluaygw
KTsKICAgICB9CiAKLSAgICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUq
IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0KE9wZXJh
bmQgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVy
YW5kKG9wZXJhbmQpLCB2YWx1ZSwgc2V0TW9kZSk7CiAgICAgfQpAQCAtNjkxLDE1ICs2OTIsMjAg
QEAgcHJpdmF0ZToKICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAorICAgIE5v
ZGUqIGpzQ29uc3RhbnQoRnJvemVuVmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1ZSkpOwor
ICAgIH0KKwogICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJlIHN0cm9u
Z2x5IG1hcmtlZC4KICAgICBOb2RlKiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25z
dGFudChtX2dyYXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAg
Tm9kZSogd2Vha0pTQ29uc3RhbnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNv
bnN0YW50VmFsdWUpKSk7CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXpl
KGNvbnN0YW50VmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdl
dC9zZXQgdGhlIHRoaXMgdmFsdWUuCkBAIC04NTAsNyArODU2LDcgQEAgcHJpdmF0ZToKICAgICB9
CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBv
cCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rl
ck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAg
ICAgIGlmIChvcCA9PSBUYWlsQ2FsbCkgewpAQCAtOTU5LDcgKzk2NSwzNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAg
IH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGEgdHJ1ZSBib3R0b20g
dmFsdWUgZm9yIGV4YW1wbGUgYW55IG9iamVjdCBzcGVjdWxhdGlvbiB3aWxsIG5vdyBiZSBPYmpl
Y3R8T3RoZXIgYXMgdGhpcyByZXR1cm5zIG51bGwuCisgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlz
IHdoZW4gd2UgY2FuIGFsbG9jYXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAgRnJvemVu
VmFsdWUqIGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSBzcGVj
KQorICAgIHsKKyAgICAgICAgLy8gSXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgd2hhdCB3ZSBy
ZXR1cm4gaGVyZS4KKyAgICAgICAgaWYgKHNwZWMgPT0gU3BlY05vbmUpCisgICAgICAgICAgICBy
ZXR1cm4gbV9ncmFwaC5mcmVlemUoSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRp
b25Db250YWlucyhzcGVjLCBTcGVjT3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGgu
ZnJlZXplKGpzTnVsbCgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVj
LCBTcGVjQm9vbGVhbikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNCb29s
ZWFuKHRydWUpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVj
RnVsbE51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdW1iZXIo
MCkpOworCisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNCaWdJbnQp
KQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPmJpZ0ludENvbnN0YW50
T25lLmdldCgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVj
U3RyaW5nIHwgU3BlY1N5bWJvbCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUo
bV92bS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworCisgICAgICAgIGlmIChzcGVjdWxh
dGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNDZWxsT3RoZXIgfCBTcGVjT2JqZWN0KSkKKyAgICAgICAg
ICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgQVNTRVJUKHNw
ZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY0VtcHR5KSk7CisgICAgICAgIHJldHVybiBtX2dy
YXBoLmZyZWV6ZShKU1ZhbHVlKCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSBnZXRBcnJheU1v
ZGUoQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jazsKQEAgLTExNzQsNyArMTIx
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIE9wdGlvbmFsOiBhIGNvbnRpbnVhdGlvbiBibG9j
ayBmb3IgcmV0dXJucyB0byBqdW1wIHRvLiBJdCBpcyBzZXQgYnkgZWFybHkgcmV0dXJucyBpZiBp
dCBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgQmFzaWNCbG9jayogbV9jb250aW51YXRpb25CbG9j
azsKIAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1ZTsKKyAgICAgICAgT3Bl
cmFuZCBtX3JldHVyblZhbHVlOwogICAgICAgICAKICAgICAgICAgLy8gU3BlY3VsYXRpb25zIGFi
b3V0IHZhcmlhYmxlIHR5cGVzIGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJsb2Nr
LAogICAgICAgICAvLyB3aGljaCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhhdCBw
YXN0IERGRyBjb21waWxhdGlvbnMgb2YgdGhpcwpAQCAtMTE5NCw3ICsxMjMwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIENvZGVCbG9jayosCiAgICAgICAgICAgICBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssCiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhp
cyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5W
YWx1ZVZSLAorICAgICAgICAgICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICAgICAgICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwKQEAgLTEyNjksNiArMTMwNSw3IEBAIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxv
Y2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCkKICAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9w
dFJlZigqbmV3IEJhc2ljQmxvY2soQnl0ZWNvZGVJbmRleCgpLCBtX251bUFyZ3VtZW50cywgbV9u
dW1Mb2NhbHMsIG1fbnVtVG1wcywgMSkpOwogICAgIEJhc2ljQmxvY2sqIGJsb2NrUHRyID0gYmxv
Y2sucHRyKCk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CisgICAg
VkVSQk9TRV9MT0coIkFkZGluZyBuZXcgdW50YXJnZXRhYmxlIGJsb2NrOiAiLCBibG9ja1B0ci0+
aW5kZXgsICJcbiIpOwogICAgIHJldHVybiBibG9ja1B0cjsKIH0KIApAQCAtMTMwMSw4ICsxMzM4
LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFs
aXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9k
ZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8Q2FsbE9wPigpOwotICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoYnl0ZWNvZGUubV9jYWxs
ZWUpOwotICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2Rl
Lm1fYXJndik7CisgICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUs
IG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9
IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2Rl
LCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKIAogICAgIENhbGxMaW5rU3RhdHVzIGNh
bGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKQEAgLTEz
MTAsOCArMTM0Nyw4IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vCiAKICAgICBJbmxpbmVDYWxs
RnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7CiAK
LSAgICByZXR1cm4gaGFuZGxlQ2FsbChieXRlY29kZS5tX2RzdCwgb3AsIGtpbmQsIHBjLT5zaXpl
KCksIGNhbGxUYXJnZXQsCi0gICAgICAgIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQs
IGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOworICAgIHJldHVybiBoYW5kbGVDYWxs
KGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCksIEpJ
VFR5cGU6OkRGR0pJVCksIG9wLCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAorICAgICAg
ICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXgu
Y2hlY2twb2ludCgpKSwgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0
aW9uKCkpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxM
aW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCkKQEAgLTEzMjEsNyAr
MTM1OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtT
dGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsCiB9CiAKIEJ5dGVDb2RlUGFyc2VyOjpU
ZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2ln
bmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAg
Tm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24pCiB7CkBAIC0xNjM3LDcgKzE2NzQsNyBAQCB1bnNpZ25lZCBCeXRl
Q29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVu
dEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0
aW9uS2luZEZvcihraW5kKTsKQEAgLTE2NzEsNyArMTcwOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIENhCiAgICAgc2l6ZV90IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1
bWVudFBvc2l0aW9ucy5zaXplKCk7CiAKICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKLSAgICAg
ICAgcmVzdWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCkudmlydHVh
bFJlZ2lzdGVyKCk7CisgICAgICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChyZXN1bHQpOwogCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9
IG51bGxwdHI7CiAgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4MjMsNyAr
MTg2MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rp
b24gPSBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6OkNhbGxP
cHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxs
ZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2ln
bmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29s
IG5lZWRzVG9DaGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVz
dWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2lu
ZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwg
QmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQog
ewogICAgIFZFUkJPU0VfTE9HKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxu
Iik7CiAKQEAgLTE5MDAsNyArMTkzNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0
aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAg
cmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFs
UmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1
bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LAogICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCkBAIC0yMDQ0LDcgKzIwODEsNyBAQCB1bnNpZ25lZCBC
eXRlQ29kZVBhcnNlcjo6Z2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cwogfQogCiBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3Vs
dCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRhcmdldE5v
ZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlu
a1N0YXR1cywKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQs
IFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLAogICAgIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3As
IElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQpA
QCAtMjIyMCw3ICsyMjU3LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1
bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBBU1NFUlQo
b3AgPT0gQXJpdGhNaW4gfHwgb3AgPT0gQXJpdGhNYXgpOwogCkBAIC0yMjUwLDcgKzIyODcsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgTm9kZVR5cGUgb3AsIGludCByZWdpcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICAg
ICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTIzODksMjcgKzI0
MjYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJheVZhbHVl
c0ludHJpbnNpYzogewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgICAg
IEl0ZXJhdGlvbktpbmQga2luZDsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7Ci0g
ICAgICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBU
eXBlZEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRp
b25LaW5kOjpWYWx1ZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUtleXNJbnRy
aW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNp
YzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAg
ICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJhdGlvbktp
bmRGb3JJbnRyaW5zaWMoaW50cmluc2ljKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEh
a2luZCk7CiAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVj
b21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNo
ZWNrcyBvbiBpdCBpbiBGaXh1cC4KLSAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25z
dGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKyAgICAgICAgICAg
IE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJf
dD4oKmtpbmQpKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gZXhpc3Rpbmcg
ZXJyb3Igc3RyaW5nLgogICAgICAgICAgICAgdW5zaWduZWQgZXJyb3JTdHJpbmdJbmRleCA9IFVJ
TlQzMl9NQVg7CkBAIC0zNjQ3LDcgKzM2NjgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1
bWVudENvdW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2Niw3ICszNjg3LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZh
cmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3Bl
cmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJp
YW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKQogewogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2Ug
VHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKQEAgLTM3ODAsNyArMzgwMSw3IEBAIHN0
YXRpYyB2b2lkIGJsZXNzQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5j
bGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZh
cmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
RE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFu
dCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODU5LDcgKzM4ODAsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNw
ZWN1bGF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAotICAgIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
CisgICAgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFy
cmF5VHlwZSB0eXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAg
aWYgKCFpc1R5cGVkVmlldyh0eXBlKSkKQEAgLTM5MTYsNyArMzkzNyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50
ZXJuYWxGdW5jdGlvbigKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwK
KyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rp
b24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBW
RVJCT1NFX0xPRygiICAgIEhhbmRsaW5nIGNvbnN0YW50IGludGVybmFsIGZ1bmN0aW9uICIsIEpT
VmFsdWUoZnVuY3Rpb24pLCAiXG4iKTsKQEAgLTY2MDQsMjAgKzY2MjUsNDI1IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgTEFTVF9PUENPREUob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1
Y3RfdmFyYXJnczogewogICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGw8T3BDb25zdHJ1Y3RW
YXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbnN0cnVjdFZhcmFyZ3MsIENhbGxNb2RlOjpD
b25zdHJ1Y3QpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0
cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2gg
bWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9u
Iik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAg
ICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFs
PigpOwogICAgICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsK
ICAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0
ZWNvZGUubV9lY21hTW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJn
YywgcmVnaXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9jYWxsX2V2YWwpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBj
YXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgICAgICAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAgdWlu
dDMyX3Qgc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXM7
CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9kZXMgPSBXVEY6OmJp
dENvdW50KHNlZW5Nb2Rlcyk7CisgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZSZW1haW5pbmdN
b2RlcyA8PSBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAgIGJvb2wgZ2VuZXJh
dGVkQ2FzZSA9IGZhbHNlOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJy
ZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9
IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0
ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJ
bmRleCA9IG1fY3VycmVudEluZGV4OworCisgICAgICAgICAgICBOb2RlKiBzeW1ib2xJdGVyYXRv
ciA9IGdldERpcmVjdChieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGF1
dG8mIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFy
cmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKworICAgICAgICAgICAgaWYgKHNl
ZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmly
c3Qgc2V0IHVwIHRoZSB3YXRjaHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5l
c3MuCisgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJh
eUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gbV9ncmFwaC5mcmVlemUoZ2xv
YmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSk7CisgICAg
ICAgICAgICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPT0gMSkKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW5TeW1ib2xJdGVyYXRv
ckZ1bmN0aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGtu
b3duSXRlckZ1bmN0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhmcm96ZW5T
eW1ib2xJdGVyYXRvckZ1bmN0aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBpc0FycmF5ID0gYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEFy
cmF5VHlwZSksIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOwor
ICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0
QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0g
QnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
YW5kUmVzdWx0ID0gYWRkVG9HcmFwaChBcml0aEJpdEFuZCwgaXNBcnJheSwga25vd25JdGVyRnVu
Y3Rpb24pOworCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGJpdCBhbmQgY2Fu
bm90IGhhdmUgZWZmZWN0cyBzbyBpdCdzIG9rIHRvIGV4aXQgaGVyZS4KKyAgICAgICAgICAgICAg
ICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4
aXRPSyk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhi
cmFuY2hEYXRhKSwgYW5kUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJt
aW5hbCgpOworCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5
QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgLy8gVGhlIGJyYW5jaCBhYm92ZSBtYXkgaGF2ZSBtYWRl
IGV4aXQgaW52YWxpZCBidXQgaXQncyBhY3R1YWxseSBvay4KKyAgICAgICAgICAgICAgICBtX2V4
aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAg
ICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSXRlcmF0aW9uS2luZDo6VmFsdWVzKSkpOworICAgICAgICAgICAgICAgIE5v
ZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8obV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUo
KSkpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5m
byhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRP
YmplY3QpKSwgaXRlcmF0b3IsIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2Rl
KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgaXRlcmF0b3IpOwor
CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwganNDb25zdGFudChKU1ZhbHVl
KCkpKTsKKworICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3
YW50IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRl
Y29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9j
dXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
RXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgaWYgKHNl
ZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
Z2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNl
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAg
ICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck9w
ZW4+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRl
cm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKwor
ICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3Ip
OworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVV
bnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0
QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQnJh
bmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAg
ICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2sp
OworICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5v
dE9iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZv
KGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvcikpOworCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVj
dEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAg
ICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBiZSBhIHR5cGUgZXJyb3IuLi4KKyAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvdywganNDb25zdGFudChqc051bGwoKSkpOworICAg
ICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IGlzT2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAg
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9u
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2l0
ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogbmV4dEltcGwgPSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUobmV4dEltcGwpOwor
CisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5
SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdl
dEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKworICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fbmV4dCwgcHJlZGljdGlv
biwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihuZXh0SW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVM
ZW5ndGgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBk
b24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5l
eHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNv
ZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NT
ZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBP
cEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWlu
YWwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9
IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZ2VuZXJhdGVkQ2FzZSkg
eworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3RhbnQoSlNWYWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fbmV4dCwgcmVzdWx0KTsKKworICAgICAgICAgICAgICAgIC8vIERvIG91ciBz
ZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdl
IG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5k
ZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3Ry
dWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1Nl
dExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZv
KGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4Owor
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgICAgICAgICBj
bGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pdGVyYXRvcl9vcGVu
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5l
eHQ+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVzKTsKKyAgICAgICAgICAg
IEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9mSXRlcmF0aW9uTW9kZXMp
OworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7CisKKyAgICAgICAgICAg
IEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4OworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBh
dXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5h
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisgICAgICAgICAgICBCYXNpY0Js
b2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9jayogY29u
dGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICBp
ZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5ICYmIGFycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9ucyB3ZSBuZWVkIGZvciBjb3Jy
ZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5
KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworCisgICAgICAgICAgICAgICAg
aWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgIT0gMSkgeworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBoYXNOZXh0ID0gYWRkVG9HcmFwaChJc0VtcHR5LCBnZXQoYnl0ZWNvZGUubV9uZXh0KSk7
CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxl
QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZmFzdEFycmF5QmxvY2sg
PSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJh
bmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAg
ICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0QXJyYXlC
bG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNo
VGFyZ2V0KGdlbmVyaWNCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJh
bmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGhhc05leHQpOworCisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTm9kZSog
aXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGds
b2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSksIGl0ZXJhdG9yKTsKKworICAg
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzRG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFi
bGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERvbmVCbG9jayA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBk
b0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4ID0ganNDb25zdGFudChq
c051bWJlcigtMSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3Jh
cGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5
SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMyT25seSksIGl0ZXJhdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNEb25lID0gYWRkVG9HcmFwaChDb21wYXJl
U3RyaWN0RXEsIGluZGV4LCBkb25lSW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5j
aERhdGEqIGlzRG9uZUJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaXNEb25lQnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQo
aXNEb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBpc0RvbmVCcmFuY2hEYXRhLT5ub3RU
YWtlbiA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGlzRG9uZUJyYW5jaERhdGEpLCBpc0RvbmUpOworICAg
ICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRh
ZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIGF1
dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChCeXRlY29kZUluZGV4
KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUpKTsKKwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBu
b3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5k
ZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikpOwor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYWJsZSA9IGdldChieXRlY29kZS5tX2l0ZXJh
YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYnV0dGVyZmx5ID0gYWRkVG9HcmFwaChH
ZXRCdXR0ZXJmbHksIGl0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3Ro
ID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSks
IGl0ZXJhYmxlLCBidXR0ZXJmbHkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0RvbmUg
PSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIGluZGV4LCBsZW5ndGgpOworICAgICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IC8vIFRoZSBhYm92ZSBjb21wYXJlIGRvZXNuJ3Qg
cHJvZHVjZSBlZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5kZXggYW5kIGxlbmd0aCBhcmUgaW50MzJz
LgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFk
ZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdl
dChpc0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2Vu
ID0gQnJhbmNoVGFyZ2V0KGRvTG9hZEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaXNEb25lKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBkb0xvYWRCbG9j
azsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgT3BJbmZv
KFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikpOworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBvbmUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEpKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBp
bmRleCwgb25lKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGZhbHNlTm9kZSA9IGpzQ29u
c3RhbnQoanNCb29sZWFuKGZhbHNlKSk7CisKKworICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2UgaXQgb25s
eSB1c2VzIHRocmVlIGNoaWxkCisgICAgICAgICAgICAgICAgICAgIC8vIHNsb3RzLgorICAgICAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0MTkyCisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5t
X2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9y
IHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldEJ5VmFsID0g
YWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIEdldEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29y
ZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVj
b2RlLm1fdmFsdWUsIGdldEJ5VmFsKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZG9uZSwgZmFsc2VOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJ
bnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRv
cjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSwgbmV3SW5kZXgpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50
IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29k
ZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1f
Y3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVl
dWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250
aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJvbGwgYmFjayB0aGUgY2hlY2tw
b2ludC4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNE
b25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIHRydWVOb2RlID0ganNDb25zdGFudChqc0Jvb2xlYW4odHJ1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpzTnVtYmVy
KC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJvdHRvbU5vZGUgPSBqc0NvbnN0YW50
KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbU5vZGUpOworICAgICAgICAg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCB0cnVlTm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVp
bnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9p
dGVyYXRvciksIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNl
dCBsb2NhbHMuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJ
bmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRM
b2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcElu
Zm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9
IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpH
ZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykgeworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNh
Y2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWlu
YWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIENh
bGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHRl
cm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAgICAgICAgICAgICAg
cHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVC
bG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERvbmVCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgIE9wZXJhbmQgbmV4dFJl
c3VsdCA9IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvclJlc3VsdCA9IGdl
dChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0
YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFu
Y2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2JqZWN0Qmxv
Y2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5j
aERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvclJlc3VsdCkpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9i
amVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAg
ICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJp
bmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4i
X3MpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1f
bGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JU
eXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmbHVz
aEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0
byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2Rl
SW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkp
OworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9jazsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hp
bmdTcGVjdWxhdGlvbih2YWx1ZVByZWRpY2l0aW9uKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byog
ZG9uZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMo
KS5lbnN1cmUoZG9uZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlw
ZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9w
Y29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAg
ICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3Io
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENv
ZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29k
ZS5tX2RvbmUsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoZG9uZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0
YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGEg
dmFsdWUgZm9yIG1fdmFsdWUgc28gd2UgZG9uJ3QgdGhpbmsKKyAgICAgICAgICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
cHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNo
RGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAg
ICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChjb250aW51YXRpb24p
OworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdl
dChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwg
T3BJbmZvKGJyYW5jaERhdGEpLCBnZXQoYnl0ZWNvZGUubV9kb25lKSk7CisgICAgICAgICAgICAg
ICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90RG9uZUJs
b2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRl
bnRpZmllcnMoKS5lbnN1cmUodmFsdWVJbXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nl
c3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAg
ICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpj
b21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5
SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVQcmVkaWNpdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2YWx1ZUltcGwpLCBpZGVudGlm
aWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAg
ICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0g
anNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VP
U1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgcmVzdWx0KTsK
KyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCByZXN1bHQpOworCisgICAgICAg
ICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBn
ZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zm
c2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9l
eGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAg
ICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZmx1
c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVh
dGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2l0ZXJhdG9yX25leHQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9qbmVx
X3B0cjogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKbmVxUHRyPigpOwogICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBvaW50ZXIg
PSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0
Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcikpOwpAQCAtNzEwNyw3ICs3NTMzLDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxhdGVyLCBhcyB0aGF0IHdv
dWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAgICAgICAgICAgLy8gYnl0
ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVyLgogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4oKTsKLSAg
ICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAg
ICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0
aW9uKj4oKm1fdm0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdlYWtKU0NvbnN0YW50KGZ1
bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc0ODYsNyArNzkxMiw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrLAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJldHVyblZhbHVlLAogICAgIFZpcnR1YWxS
ZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsCkBAIC03NDk1LDcgKzc5
MjEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRy
eSgKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhw
cm9maWxlZEJsb2NrKQogICAgICwgbV9jb250aW51YXRpb25CbG9jayhjb250aW51YXRpb25CbG9j
aykKLSAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAgICAsIG1fcmV0dXJuVmFs
dWUocmV0dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVT
dGFja1RvcCkKIHsKICAgICB7CkBAIC03NTYxLDcgKzc5ODcsNyBAQCBCeXRlQ29kZVBhcnNlcjo6
SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgLy8gTWFjaGluZSBj
b2RlIGJsb2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sgPT0gYnl0ZUNvZGVQYXJz
ZXItPm1fY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKCFjYWxsZWUpOwotICAgICAgICBBU1NF
UlQoIXJldHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXR1cm5WYWx1
ZS5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZVN0YXJ0LmlzVmFs
aWQoKSk7CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOwpAQCAtNzk3Niw3ICs4NDAy
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgICAgIGluc2Vy
dGlvblNldC5leGVjdXRlKGJsb2NrKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gbm9kZUFuZElu
ZGV4ID0gYmxvY2stPmZpbmRUZXJtaW5hbCgpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxlKTsKKyAgICAgICAgICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJbmRleC5ub2RlLCBub2RlQW5kSW5kZXgu
bm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICAgICAgYmxvY2stPnJlc2l6
ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2lt
cGxpZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IGU3ZjZlNzYyNDY2OWIzMDFmNWEwMjA0OGMyNWQ0
ODE1YzNhMTMzOWQuLjYxMGQ3ZDIwZWY2NTM1ZjdhOGU5NWJjZWExMjFlZjNiOGFiNDAyYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBC
YXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sq
IGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdp
biwgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgTm9kZSogbGl2ZW5lc3NOb2RlID0g
amV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKICAgICAg
ICAgaWYgKCFsaXZlbmVzc05vZGUpCkBAIC0zMDIsMTEgKzMwMiw5IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgdm9pZCBqZXR0aXNvbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBq
ZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luKQogICAgIHsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFs
aXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVk
QmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwot
ICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxp
dmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVk
QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOworCiAgICAgICAgIGZp
eEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpldHRpc29uZWRCbG9jayk7CiAgICAgfQog
ICAgIApAQCAtMzUyLDExICszNTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gVGltZSB0
byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUga2VwdCBhbGl2ZSBp
biBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0byBoaXR0aW5nIHRoZSBm
aXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93biBhCiAgICAgICAgICAg
ICAvLyBkaWZmZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJsb2NrLgotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVz
QXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3Bl
cmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2lu
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2
ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91
bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5k
Rm9ySW5kZXgoaSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNlY29uZEJsb2NrLT5waGlzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1OWI3NzgwYTZjYzdkZWNh
NzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjYwMDMzMmYxOTBmZjhiNDA0MmNkNTQyYWI5NWI1MDUz
NmFkN2E3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTI3NCw2ICsyNzQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9y
ZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBvcF9pdGVy
YXRvcl9uZXh0OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAg
IGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CiAgICAgY2FzZSBvcF9wdXRfdG9fc2Nv
cGU6CkBAIC0zMTEsNiArMzEzLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChP
cGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNl
IGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBj
YXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBjYXNlIGhhbmRsZVVuY2F1
Z2h0RXhjZXB0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb246
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9w
X2NhbGxfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY29uc3RydWN0X3JldHVybl9sb2Nh
dGlvbjoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFhNGRlY2Rh
MGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYuLmRiYzgzMWMyZWJlMDg2Zjg3MzY2YTdl
NTRhMzVlNTkzYTliMDc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcApAQCAtMjQxMSw3ICsyNDExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTogewotICAgICAgICAgICAgbm9kZS0+Y2xl
YXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lk
ZW50aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggYmY0MzUwYzRjZDE3ZTNkNTAwNjYz
OGY1NWFhYzM1YTU2NTI5OTRhMS4uZDljOTc0MjhmZDZhZTVlYTUwNmQwNTcyNjczMDIwZGQxYWZm
MTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxs
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaApAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGJlZm9yZUlubGluZUNhbGxG
cmFtZSk7CiAgICAgICAgIGlmIChhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpKSB7
CiAgICAgICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkg
IT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSk7Ci0gICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIu
Ynl0ZWNvZGVJbmRleCgpLm9mZnNldCgpLCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rpb24g
aXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5k
aW5nIGJ5dGVjb2Rlcy4iKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYmVmb3Jl
LmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29kZUluZGV4KCkub2Zmc2V0
KCkgfHwgbm9kZUFmdGVyLT5vcCgpID09IEV4aXRPSyB8fCBub2RlQWZ0ZXItPm9wKCkgPT0gSW52
YWxpZGF0aW9uUG9pbnQsICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBpdCBzaG91bGQg
Y2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vycm91bmRpbmcgYnl0ZWNv
ZGVzLiIpOwogCiAgICAgICAgICAgICBhdXRvIGxpdmVCZWZvcmUgPSB0bXBMaXZlbmVzc0ZvckNo
ZWNrcG9pbnQoKmNvZGVCbG9jaywgYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgICAg
ICBhdXRvIGxpdmVBZnRlciA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBh
ZnRlci5ieXRlY29kZUluZGV4KCkpOwpAQCAtMTAyLDggKzEwMiw2IEBAIHZvaWQgZm9yQWxsS2ls
bGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0
ZXIsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpLCAiVHJhbnNpdGlvbmluZyBh
Y3Jvc3MgYSBjaGVja3BvaW50IGJ1dCBiZWZvcmUgYW5kIGFmdGVyIGRvbid0IHNoYXJlIGFuIGlu
bGluZUNhbGxGcmFtZS4iKTsKLQogICAgIC8vIERldGVjdCBraWxscyB0aGUgc3VwZXIgY29uc2Vy
dmF0aXZlIHdheTogaXQgaXMga2lsbGVkIGlmIGl0IHdhcyBsaXZlIGJlZm9yZSBhbmQgZGVhZCBh
ZnRlci4KICAgICBCaXRWZWN0b3IgbGl2ZUFmdGVyID0gZ3JhcGgubG9jYWxzQW5kVG1wc0xpdmVJ
bkJ5dGVjb2RlKGFmdGVyKTsKICAgICB1bnNpZ25lZCBudW1Mb2NhbHMgPSBncmFwaC5ibG9jaygw
KS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCmluZGV4IDIwMmQy
MjUwNTNmYTlkZmJlNWMyM2M2NGJjZjhiZTM4NGUzZTc2NTQuLjdjYzM0YWUyZDBkNGU1Zjg0OGU2
OTU3MzAyNDkyYzEyMWQ3MWZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQg
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNpY0Jsb2NrKiBiYXNpY0Js
b2NrKQogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAg
QVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IGJh
c2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFz
aWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+
dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2Nr
LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRI
ZWFkLm51bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZlRt
cHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRt
cHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkpOwogCiAg
ICAgbV9hYnN0cmFjdFZhbHVlcy5yZXNpemUoKTsKIApAQCAtMTYxLDYgKzE2NCwxMCBAQCB2b2lk
IEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwogICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgIH0KKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZUbXBz
KCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLnRtcChpKS5j
bGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLnRtcChpKS5jbGVh
cigpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1f
Z3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpAQCAtMTc1LDEzICsxODIsOSBAQCB2b2lk
IEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgYmxvY2stPmNmYVRo
aW5rc1Nob3VsZFRyeUNvbnN0YW50Rm9sZGluZyA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2Zh
U3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CiAgICAg
ICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJl
V2F0Y2hlZDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRI
ZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICAgICAgYmxvY2stPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0
VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsK
LSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAg
ICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkW2ldLmNsZWFyKCk7CisgICAgICAgICAgICBi
bG9jay0+dmFsdWVzQXRUYWlsW2ldLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIz
OSw3ICsyNDIsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkK
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDog
ewogICAgICAgICAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMgdGhlIHZhbHVlIGZyb20g
aGVhZCB0byB0YWlsLgotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gdmFyaWFibGVBdChp
bmRleCk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBhdEluZGV4KGluZGV4KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAg
LTMwNCw3ICszMDcsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2Nr
KCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IHZhcmlhYmxlQXQoaSk7Cisg
ICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gYXRJbmRleChpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiB2YWx1ZUF0VGFpbCA6IGJs
b2NrLT5zc2EtPnZhbHVlc0F0VGFpbCkKQEAgLTM0Myw2ICszNDYsNyBAQCBib29sIEluUGxhY2VB
YnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAg
ICAgICAgZGF0YUxvZygiICAgTWVyZ2luZyBmcm9tICIsIHBvaW50ZXJEdW1wKGZyb20pLCAiIHRv
ICIsIHBvaW50ZXJEdW1wKHRvKSwgIlxuIik7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKSk7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxv
Y2FscygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNT
RVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9PSB0by0+dmFyaWFibGVz
QXRIZWFkLm51bWJlck9mVG1wcygpKTsKICAgICAKICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsK
ICAgICAKQEAgLTM1MiwxNCArMzU2LDkgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVy
Z2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgCiAgICAgc3dpdGNoICht
X2dyYXBoLm1fZm9ybSkgewogICAgIGNhc2UgVGhyZWFkZWRDUFM6IHsKLSAgICAgICAgZm9yIChz
aXplX3QgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1i
ZXJPZkFyZ3VtZW50cygpOyArK2FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVl
JiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlv
biwgZnJvbS0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwgdG8tPnZhcmlhYmxlc0F0
SGVhZC5hcmd1bWVudChhcmd1bWVudCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChh
cmd1bWVudCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBsb2Nh
bCA9IDA7IGxvY2FsIDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsr
bG9jYWwpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZh
bHVlc0F0SGVhZC5sb2NhbChsb2NhbCk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFy
aWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwubG9jYWwo
bG9jYWwpLCB0by0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKSwgZnJvbS0+dmFyaWFibGVz
QXRUYWlsLmxvY2FsKGxvY2FsKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXQoaW5kZXgp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0
aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KSwgdG8tPnZhcmlhYmxlc0F0SGVh
ZC5hdChpbmRleCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hdChpbmRleCkpOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRleCAxODY1ZTZhMWVmZmMzZGFhZWZlNTg0
Y2E4NjJjNDliYzM2ODU4NTAwLi5jNWQwMjY4NzNlMDEwZDA3ZjM4MTFjNmM0ZmVmNTY2ZTFjYTcw
Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5oCkBAIC0xNTgsMTAgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3Bl
cmFuZHM8QWJzdHJhY3RWYWx1ZT4mIHZhcmlhYmxlc0ZvckRlYnVnZ2luZygpOwogCisgICAgdW5z
aWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLnNpemUoKTsgfQogICAgIHVu
c2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVt
YmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2lnbmVkIG51
bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mVG1wcygpOyB9
CiAgICAgCi0gICAgQWJzdHJhY3RWYWx1ZSYgdmFyaWFibGVBdChzaXplX3QgaW5kZXgpCisgICAg
QWJzdHJhY3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgewogICAgICAgICBhY3Rp
dmF0ZVZhcmlhYmxlSWZOZWNlc3NhcnkoaW5kZXgpOwogICAgICAgICByZXR1cm4gZmFzdEZvcndh
cmQobV92YXJpYWJsZXNbaW5kZXhdKTsKQEAgLTE2OSwxNyArMTcxLDE3IEBAIHB1YmxpYzoKIAog
ICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsK
KyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMub3BlcmFuZEluZGV4KG9wZXJhbmQp
KTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMubG9jYWxJbmRleChp
bmRleCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGlu
ZGV4KSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBp
bmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLmFyZ3Vt
ZW50SW5kZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMuYXJn
dW1lbnRJbmRleChpbmRleCkpOwogICAgIH0KICAgICAKICAgICAvLyBDYWxsIHRoaXMgYmVmb3Jl
IGJlZ2lubmluZyBDRkEgdG8gaW5pdGlhbGl6ZSB0aGUgYWJzdHJhY3QgdmFsdWVzIG9mCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKaW5kZXggZjVlZWYyZjNkZjcy
MTI5YTgzOGM3Njg2ZTI2Yjk2MGI1MGY1ODFlZS4uN2EzMzY2NmFhNzFhMWY2NjZjOTRiMjhiNjQ0
NzQ4NGQ2N2JiYjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
YXp5SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFs
dWUuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExhenlKU1ZhbHVlIG5l
d1N0cmluZyhHcmFwaCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgTGF6aW5lc3NLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVk
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLbm93blZhbHVlID8gU3BlY0J5dGVjb2Rl
VG9wIDogU3BlY1N0cmluZzsgfQogICAgIAogICAgIEZyb3plblZhbHVlKiB0cnlHZXRWYWx1ZShH
cmFwaCYpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAKaW5kZXggYTg1MmRiZGQ5YjkzNzBkNmRlNjUzYzVhNDg4NzExNzAwZThiODc5Yi4uNTIyMzRi
NGE1ZDNmNjk3NmMyZmE5OTgxNmRjZTExMDY4MTA1NGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC00OCwxMSArNDgsMTIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpT
VmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2
YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1
bnNpZ25lZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBK
U1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUg
dmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwg
dW5zaWduZWQgcmVjb3ZlcnlJbmRleCwgdW5zaWduZWQgZGZnSVJJbmRleCkKICAgICA6IE9TUkV4
aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRp
Yywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQogICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFs
dWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCiAgICAgLCBtX3Jl
Y292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAgICAsIG1fZGZnSVJJbmRleChkZmdJUkluZGV4
KQogICAgICwgbV9zdHJlYW1JbmRleChzdHJlYW1JbmRleCkKIHsKICAgICBib29sIGNhbkV4aXQg
PSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmgKaW5kZXggOWU5YmNlYTQ4MWMxZDY4Nzc5NzJmMjU5ZDYyYzFhMjMwMGIyYjE2MS4uOGNlOGI5
MjA3OWFmNzUyOTk3MDNmMTdmZGRhZTJmZWMzYjljMjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2b2lkKiwg
dm9pZAogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxh
dGl2ZSBwYXRoIGJ5CiAvLyBnb2luZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhp
dCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7Ci0gICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNv
dXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNp
Z25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKKyAg
ICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCBy
ZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgsIHVuc2lnbmVkIGRmZ0lSSW5kZXggPSBVSU5UX01BWCk7
CiAKICAgICBmcmllbmQgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0
KENhbGxGcmFtZSopOwogCkBAIC0xNTksNiArMTU5LDcgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJs
aWMgT1NSRXhpdEJhc2UgewogICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1
ZVByb2ZpbGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUluZGV4OworICAgIHVuc2ln
bmVkIG1fZGZnSVJJbmRleDsKIAogICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gY29kZUxvY2F0aW9uRm9yUmVwYXRjaCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggMWRm
Mzk0MzI0MWQ1YWY3OTMxOThlZjljNzEyNzNlNzU4YTBhMjI2YS4uMDg1ZGM1MzBiM2JjMzc5ZmI0
ZjNlNjA5MWNiNWM2NTIwMjc1ODdhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTU5LDkgKzE1OSwxNSBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04o
bmFtZSkgKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0
aW9uLmlzV2lkZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihu
YW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+
KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJD
YWxsS2luZCkgewotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKLSAgICAgICAg
ICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAg
IGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CisgICAgICAgICAgICBpZiAoY2FsbEluc3Ry
dWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfY2FsbCkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0
ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAgICAgICAgZWxzZSBpZiAo
Y2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAg
ICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX29w
ZW4pOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0g
b3BfaXRlcmF0b3JfbmV4dCkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX25leHQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKICAgICAgICAg
ICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0KTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDYgKzI0NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CiAgICAgcmV0
dXJuIGp1bXBUYXJnZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEwMDNlZDVm
ZDNmYmMzODE2MmM4OTJiMzRjODQ3YjkyNzY4M2ZhZS4uNmUwOTBhMzhiZmMwOTQ3NWE3ZDdiZDU5
MWUyNTFhM2U5MzQ2ODU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExMDEsNiArMTEw
MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y2hpbGQxKCktPm1l
cmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBMYXp5SlND
b25zdGFudDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5sYXp5
SlNWYWx1ZSgpLnNwZWN1bGF0ZWRUeXBlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBDYWxsU3RyaW5n
Q29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CkBAIC0xMzA1LDcgKzEzMTEsNiBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAg
ICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgUmVjb3JkUmVn
RXhwQ2FjaGVkUmVzdWx0OgotICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OgogICAgICAgICBj
YXNlIENhbGxET006IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUg
dmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLgogICAgICAgICAgICAgREZHX0NS
QVNIKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsICJVbmV4cGVjdGVkIG5vZGUgZHVyaW5nIHByZWRp
Y3Rpb24gcHJvcGFnYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAKaW5kZXggMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4YTFiZmYzOThjYi4uOWFl
OTgwNGM3NWI5NWVjNTYxZWQyZjFhNTJiOWRlYzk4Yzg0NWVmMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAg
ICAgICAgICAgZGF0YUxvZ0YoIikgPT0gKCVzID0gIiwgI3JpZ2h0KTsgXAogICAgICAgICAgICAg
ZGF0YUxvZyhyaWdodCk7IFwKICAgICAgICAgICAgIGRhdGFMb2dGKCIpICglczolZCkuXG4iLCBf
X0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgICAgICAgICBkYXRhTG9nKCJcblxuXG4iKTsgXAor
ICAgICAgICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihudWxscHRyKS0+ZHVtcEJ5
dGVjb2RlKCk7IFwKICAgICAgICAgICAgIGR1bXBHcmFwaElmQXBwcm9wcmlhdGUoKTsgXAogICAg
ICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdU
Rl9QUkVUVFlfRlVOQ1RJT04sICNsZWZ0ICIgPT0gIiAjcmlnaHQpOyBcCiAgICAgICAgICAgICBD
UkFTSCgpOyBcCkBAIC01NjgsNiArNTcwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBPcGVy
YW5kczxzaXplX3Q+IGdldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZCk7CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IHNldExvY2FsUG9zaXRp
b25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJh
bmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSkgfHwgYmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKKyAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZh
cmlhYmxlc0F0VGFpbC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSktPmFj
Y2Vzc2VzU3RhY2sobV9ncmFwaCkpOworCisgICAgICAgICAgICAgICAgZ2V0TG9jYWxQb3NpdGlv
bnMudG1wKGkpID0gbm90U2V0OworICAgICAgICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLnRt
cChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRl
ZENQUykKQEAgLTcxNiw2ICs3MjYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgY2hlY2tP
cGVyYW5kKAorICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNl
dExvY2FsUG9zaXRpb25zLCBPcGVyYW5kOjp0bXAoaSkpOworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5kKAog
ICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9z
aXRpb25zLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwpAQCAt
OTQ0LDcgKzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNrT3BlcmFuZCgKICAgICAg
ICAgQmFzaWNCbG9jayogYmxvY2ssIE9wZXJhbmRzPHNpemVfdD4mIGdldExvY2FsUG9zaXRpb25z
LAotICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0aW9ucywgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQpCisgICAgICAgIE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRp
b25zLCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAoZ2V0TG9jYWxQb3NpdGlv
bnMub3BlcmFuZChvcGVyYW5kKSA9PSBub3RTZXQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZl
NjUyYzk4NDYwMWEyYjNiNzlkMzQuLjk0ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIx
MGM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzcsNiAr
MTM3LDcgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgogI2luY2x1
ZGUgIkdldEJ5VmFsSGlzdG9yeS5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVk
ZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1ZDYzOTBh
YmEyNjM1ZTk2MzU5Zjg5MGUyZWI3MWE5NS4uYzA3NzVkOGUxYjEwNTAyZGYwMWE3NGFmMGM2ZGVi
NGE4NzVjYzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9N
ZXRhZGF0YS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRh
LnJiCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIE1ldGFkYXRhCiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1ldGFkYXRhKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgI3tvcC5vcGNvZGVJ
RH0KICAgICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5jYXBpdGFsaXplZF9uYW1lfSYjeyIgX19v
cCIgaWYgaW5pdHN9KSN7aW5pdHN9IHsgfQogCiAje2ZpZWxkc30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgppbmRleCA5YjVlZTkwOTZlZTcxYjFiMGQzZWQ3Zjdj
ZDE4ZGIwNmZjYjM1ZmNmLi43ZjQzMDJkODgyZWY2ZjM1OTU3Njc3ZWRjZjA0OWQzMjZmOTY0NDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCkBAIC01Myw3
ICs1MywxNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGVuZAogCiAgIGRlZiBzb3J0IQotICAgICAgQG9w
Y29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRh
ZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIH0KKyAgICAgIEBvcGNvZGVzID0gQG9wY29kZXMuc29y
dCB7IHxhLCBifAorICAgICAgICAgIHJlc3VsdCA9IG5pbAorICAgICAgICAgIGlmIGEuY2hlY2tw
b2ludHMgb3IgYi5jaGVja3BvaW50cworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdp
dGggY2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7YS5uYW1lfSIgaWYgYS5jaGVj
a3BvaW50cyBhbmQgYS5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVj
b2RlcyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2IubmFtZX0iIGlm
IGIuY2hlY2twb2ludHMgYW5kIGIubWV0YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAgIHJlc3Vs
dCA9IGEuY2hlY2twb2ludHMgPyBiLmNoZWNrcG9pbnRzID8gMCA6IC0xIDogMQorICAgICAgICAg
IGVsc2lmCisgICAgICAgICAgICAgIHJlc3VsdCA9IGEubWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRh
ZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIAorICAgICAgICAgIGVuZAorICAgICAgICAgIHJlc3Vs
dAorICAgICAgfQogICAgICAgQG9wY29kZXMuZWFjaCgmOmNyZWF0ZV9pZCEpCiAgIGVuZAogCkBA
IC03Myw2ICs4MywxOSBAQCBjbGFzcyBTZWN0aW9uCiAgICAgICBlbmQKIAogICAgICAgaWYgY29u
ZmlnWzplbWl0X2luX3N0cnVjdHNfZmlsZV0KKyAgICAgICAgICBpID0gMAorICAgICAgICAgIHdo
aWxlIHRydWUKKyAgICAgICAgICAgICAgaWYgIW9wY29kZXNbaV0uY2hlY2twb2ludHMKKyAgICAg
ICAgICAgICAgICAgIHByaW50KCJGT1VORCBUSEUgTlVNQkVSIE9GIENIRUNLUE9JTlRTIEFORCBJ
J00gUFJJTlRJTkcgSVQgSU5UTyBUSEUgRklMRSBXSU5ET1dTISIpCisgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIE5VTUJFUl9P
Rl8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9XSVRIX0NIRUNLUE9JTlRTICN7aX1c
biIKKyAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVuZAorCisgICAgICAg
ICAgICAgIGkgKz0gMQorICAgICAgICAgIGVuZAorICAgICAgICAgIG91dCA8PCAiXG4iCisKICAg
ICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VBQ0hfI3tjb25maWdbOm1hY3JvX25hbWVf
Y29tcG9uZW50XX1fTUVUQURBVEFfU0laRShtYWNybykgXFxcbiIpCiAgICAgICAgICAgaSA9IDAK
ICAgICAgICAgICB3aGlsZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDY0NTM5MTI3YjhjNzRjODIwMjliMmJiNjE4MGU2OTY5
NzFhNjRiYzguLjNmZjkyYjQ1M2E3MjkyNmRjNzRlY2JkY2Y2ZTMxNGJjZmIzNjhlMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC00
MywxMzkgKzQzLDEzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIENvZGVCbG9j
azsKLSAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7Ci0gICAgY2xhc3MgVk07Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsKLSAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKLSAgICBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwotICAgIGNsYXNzIEpT
TW9kdWxlUmVjb3JkOwotICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsK
LSAgICBjbGFzcyBSZWdpc3RlcjsKLSAgICBjbGFzcyBKU1Njb3BlOwotICAgIGNsYXNzIFNvdXJj
ZUNvZGU7Ci0gICAgY2xhc3MgU3RhY2tGcmFtZTsKLSAgICBzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3Vy
ZTsKLSAgICBzdHJ1Y3QgSGFuZGxlckluZm87Ci0gICAgc3RydWN0IEluc3RydWN0aW9uOwotICAg
IHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKLQotICAgIGVudW0gRGVidWdIb29rVHlwZSB7Ci0gICAg
ICAgIFdpbGxFeGVjdXRlUHJvZ3JhbSwKLSAgICAgICAgRGlkRXhlY3V0ZVByb2dyYW0sCi0gICAg
ICAgIERpZEVudGVyQ2FsbEZyYW1lLAotICAgICAgICBEaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50
LAotICAgICAgICBXaWxsTGVhdmVDYWxsRnJhbWUsCi0gICAgICAgIFdpbGxFeGVjdXRlU3RhdGVt
ZW50LAotICAgICAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24sCi0gICAgfTsKLQotICAgIGVudW0g
U3RhY2tGcmFtZUNvZGVUeXBlIHsKLSAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCi0gICAg
ICAgIFN0YWNrRnJhbWVFdmFsQ29kZSwKLSAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCi0g
ICAgICAgIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVOYXRpdmVD
b2RlCi0gICAgfTsKLQotICAgIGNsYXNzIEludGVycHJldGVyIHsKLSAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwotICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwotICAgICAgICBmcmllbmQgY2xhc3MgVk07Ci0KLSAgICBwdWJsaWM6Ci0gICAgICAg
IEludGVycHJldGVyKFZNICYpOwotICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKLSAgICAgICAgCitj
bGFzcyBDb2RlQmxvY2s7CitjbGFzcyBFdmFsRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKK2NsYXNzIFZNOworY2xhc3MgSlNGdW5jdGlvbjsKK2NsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwor
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7Citj
bGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNzIFJlZ2lzdGVyOworY2xhc3MgSlNT
Y29wZTsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBTdGFja0ZyYW1lOworc3RydWN0IENhbGxG
cmFtZUNsb3N1cmU7CitzdHJ1Y3QgSGFuZGxlckluZm87CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247Citz
dHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisKK2VudW0gRGVidWdIb29rVHlwZSB7CisgICAgV2lsbEV4
ZWN1dGVQcm9ncmFtLAorICAgIERpZEV4ZWN1dGVQcm9ncmFtLAorICAgIERpZEVudGVyQ2FsbEZy
YW1lLAorICAgIERpZFJlYWNoRGVidWdnZXJTdGF0ZW1lbnQsCisgICAgV2lsbExlYXZlQ2FsbEZy
YW1lLAorICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50LAorICAgIFdpbGxFeGVjdXRlRXhwcmVzc2lv
biwKK307CisKK2VudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKKyAgICBTdGFja0ZyYW1lR2xvYmFs
Q29kZSwKKyAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUs
CisgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwKKyAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQor
fTsKKworY2xhc3MgSW50ZXJwcmV0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07
CisKK3B1YmxpYzoKKyAgICBJbnRlcnByZXRlcihWTSAmKTsKKyAgICB+SW50ZXJwcmV0ZXIoKTsK
KyAgICAKICNpZiBFTkFCTEUoQ19MT09QKQotICAgICAgICBDTG9vcFN0YWNrJiBjbG9vcFN0YWNr
KCkgeyByZXR1cm4gbV9jbG9vcFN0YWNrOyB9CisgICAgQ0xvb3BTdGFjayYgY2xvb3BTdGFjaygp
IHsgcmV0dXJuIG1fY2xvb3BTdGFjazsgfQogI2VuZGlmCi0gICAgICAgIAotICAgICAgICBzdGF0
aWMgaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOworICAgIAorICAgIHN0YXRpYyBp
bmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCk7CiAKLSAgICAgICAgc3RhdGljIGlubGlu
ZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOworICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2Rl
SUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIHN0
YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CisgICAgc3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bj
b2RlKTsKICNlbmRpZgogCi0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZVByb2dyYW0oY29uc3QgU291
cmNlQ29kZSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNPYmopOwotICAgICAgICBK
U1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNH
bG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEpTVmFsdWUgZXhl
Y3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBj
b25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci0gICAg
ICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3Qq
IGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJn
TGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxF
eGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSop
OwotCi0gICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9u
KiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQm
IGFyZ2MpOwotCi0gICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdW53aW5kKFZNJiwg
Q2FsbEZyYW1lKiYsIEV4Y2VwdGlvbiopOwotICAgICAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZF
eGNlcHRpb25Ub0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNl
cHRpb24qKTsKLSAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVi
dWdIb29rVHlwZSk7Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgc3RhY2tUcmFjZUFzU3RyaW5nKFZN
JiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7Ci0KLSAgICAgICAgdm9pZCBnZXRTdGFja1Ry
YWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IGZy
YW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhTdGFja1NpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0gRXhlY3V0aW9u
RmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwotICAgICAgICAKLSAgICAgICAg
c3RhdGljIEpTVmFsdWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVyblZhbHVlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgSlNPYmpl
Y3QqIGNoZWNrZWRSZXR1cm4oSlNPYmplY3QqIHJldHVyblZhbHVlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVw
ZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSos
IEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBj
b25zdCBBcmdMaXN0Jik7Ci0KLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1
cmUmKTsKLQotICAgICAgICBWTSYgbV92bTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNv
bnN0IFNvdXJjZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKKyAg
ICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7CisgICAgSlNWYWx1ZSBleGVj
dXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNv
bnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBK
U09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5j
dGlvbiwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3Qm
LCBKU1ZhbHVlIG5ld1RhcmdldCk7CisgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworCisgICAg
dm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90
JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CisKKyAg
ICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNl
cHRpb24qKTsKKyAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKKyAgICBORVZFUl9J
TkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tUeXBlKTsKKyAgICBzdGF0aWMg
U3RyaW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYp
OworCisgICAgdm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0Zy
YW1lPiYgcmVzdWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhTdGFja1Np
emUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKworcHJpdmF0ZToKKyAg
ICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRpYWxpemVBbmRSZXR1cm4gfTsKKyAg
ICAKKyAgICBzdGF0aWMgSlNWYWx1ZSBjaGVja2VkUmV0dXJuKEpTVmFsdWUgcmV0dXJuVmFsdWUp
CisgICAgeworICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOworICAgICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU09iamVjdCogY2hlY2tlZFJldHVy
bihKU09iamVjdCogcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQocmV0dXJuVmFs
dWUpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgQ2FsbEZyYW1l
Q2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJh
bWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7CisKKyAgICBKU1ZhbHVlIGV4ZWN1
dGUoQ2FsbEZyYW1lQ2xvc3VyZSYpOworCisgICAgVk0mIG1fdm07CiAjaWYgRU5BQkxFKENfTE9P
UCkKLSAgICAgICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CisgICAgQ0xvb3BTdGFjayBtX2Ns
b29wU3RhY2s7CiAjZW5kaWYKLSAgICAgICAgCisgICAgCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fT1BDT0RFUykKICNpZiAhRU5BQkxFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgQVNT
RVJUX0VOQUJMRUQKLSAgICAgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9w
Y29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQuCisgICAgc3RhdGljIEhh
c2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUg
PT4gT3Bjb2RlSUQuCiAjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQp
IHx8IEFTU0VSVF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RF
UykKLSAgICB9OwotCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiwgRUNNQU1vZGUpOwotCi0gICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5z
aWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCi0gICAgewotICAgICAgICAvLyBXZSB3
YW50IHRoZSBuZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3RhY2sgYWxpZ25lZCBvZmZz
ZXQgd2l0aCBhIHN0YWNrCi0gICAgICAgIC8vIGFsaWduZWQgc2l6ZS4gQWxpZ24gdGhlIHNpemUg
aGVyZS4KLSAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2YoCi0gICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAotICAg
ICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNp
emVJblJlZ2lzdGVycykgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKLQotICAg
ICAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCi0gICAgICAgIHVuc2lnbmVkIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAotICAgICAg
ICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIG51bVVzZWRTdGFj
a1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNp
emVJblJlZ2lzdGVycyk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJh
bWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwotICAgIH0KLQotICAg
IHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFyZ3VtZW50
cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWF4QXJndW1lbnRzID0gMHgxMDAwMDsKLSAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JW
YXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCBKU1ZhbHVlIGFyZ3VtZW50
cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0
KTsKLSAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyk7Ci0gICAg
dm9pZCBsb2FkVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUqIGZpcnN0RWxlbWVudERl
c3QsIEpTVmFsdWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0g
ICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhl
Y0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMy
X3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cFZh
cmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJn
dW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKLSAg
ICB2b2lkIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxlbmd0aCk7
Ci0gICAgdm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7Cit9OworCitKU1ZhbHVlIGV2YWwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CisKK2lubGluZSBDYWxsRnJhbWUq
IGNhbGxlZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgbnVt
VXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorewor
ICAgIC8vIFdlIHdhbnQgdGhlIG5ldyBmcmFtZSB0byBiZSBhbGxvY2F0ZWQgb24gYSBzdGFjayBh
bGlnbmVkIG9mZnNldCB3aXRoIGEgc3RhY2sKKyAgICAvLyBhbGlnbmVkIHNpemUuIEFsaWduIHRo
ZSBzaXplIGhlcmUuCisgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCisgICAg
ICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnMpIC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisKKyAgICAvLyBB
bGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCisgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJh
bWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCksCisgICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7CisgICAg
cmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRD
YWxsZWVGcmFtZU9mZnNldCk7Cit9CisKK3Vuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwor
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAweDEwMDAwOwordW5zaWdu
ZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIFZNJiwg
SlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBm
aXJzdFZhckFyZ09mZnNldCk7Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tT
bG90cyk7Cit2b2lkIGxvYWRWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSogZmlyc3RF
bGVtZW50RGVzdCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbGVu
Z3RoKTsKK3ZvaWQgc2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwordm9pZCBzZXR1cFZh
cmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJn
dW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKK3Zv
aWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3RoKTsKK3Zv
aWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhp
c1ZhbHVlLCB1aW50MzJfdCBsZW5ndGgpOwogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOWExYTE5NWMzZTgzODY0YzFj
YTE3ODQwOGE1YjBmLi44YjNhMjM4YTRkYWYxZmM2NzkxNDBkOGJiZWM3NzA5Yjg1NjhiYjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBtX2xhYmVsc1ttX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCldID0gbGFiZWwoKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJv
c2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgY29kZSBmb3IgIiwg
bV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1f
Ynl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7
CiAKQEAgLTQzOCw2ICs0MzgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfaW50ZXJuYWxfZmllbGQpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfaW50ZXJuYWxfZmllbGQpCiAKKyAgICAgICAgREVGSU5FX09QKG9wX2l0ZXJh
dG9yX29wZW4pCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9uZXh0KQorCiAgICAgICAg
IERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCiAgICAgICAg
IERFRklORV9PUChvcF91bnNpZ25lZCkKQEAgLTUyNSw3ICs1MjgsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgcmFyZUNhc2VQcm9maWxlID0gJnJh
cmVDYXNlUHJvZmlsZXMuYXQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKIAogICAgICAg
ICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBK
SVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0
ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGlu
ZSBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zm
c2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxl
cikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRlY29kZVNsb3dQYXRoKG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7CkBAIC01ODksNiArNTkyLDkgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2dldF9mcm9tX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0
X3RvX3Njb3BlKQogCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pdGVyYXRvcl9vcGVu
KQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh1bnNpZ25lZCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX1NMT1dfT1AoaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChkZWMpCkBA
IC02MjYsOCArNjMyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAg
ICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQXQg
IiwgZmlyc3RUbywgIiBzbG93OiAiLCBpdGVyIC0gbV9zbG93Q2FzZXMuYmVnaW4oKSwgIlxuIik7
CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2Fz
ZXMuZW5kKCkgfHwgZmlyc3RUbyAhPSBpdGVyLT50bywgIk5vdCBlbm91Z2gganVtcHMgbGlua2Vk
IGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01F
U1NBR0UoZmlyc3RUbyA9PSAoaXRlciAtIDEpLT50bywgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBp
biBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5vZmZzZXQoKSAhPSBpdGVy
LT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2Rl
Z2VuLiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUby5vZmZz
ZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBp
biBzbG93IGNhc2UgY29kZWdlbi4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaG91bGRFbWl0
UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRl
QWRkcmVzcygmcmFyZUNhc2VQcm9maWxlLT5tX2NvdW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDcwNzM1NWM2ZDcxMTgyYWEwNzI5YTI3NDkxMDA0ZjQ1ZTFlYTZhYzEuLjgzYWUx
YTdiNjk4ZDY5MzNkYmI4YTAzNzE5MDQ5ZWMyMjU4MThmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtMjk3LDYgKzI5Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogCisgICAgICAgIHZvaWQgY2hlY2tw
b2ludFJlYWNoZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9p
bnQoSnVtcCk7CisKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShKdW1wKTsKICAgICAgICAgdm9p
ZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYpOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNl
KCk7CkBAIC02NzYsNiArNjc5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAorICAgICAgICB2b2lkIGVtaXRfb3Bf
aXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKwog
ICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vu
c2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25l
ZCk7CiAKQEAgLTkxMSw2ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWZWN0
b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsK
KyAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50TGFiZWxz
OwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsKICAgICAg
ICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsKICAgICAgICAgVmVj
dG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZTFlNTY1ZGM1MjQ5ZjZhY2ZkYWEy
NGJmZmI0NDcxZmZjYjIwYjg2Ni4uMDkxZWU5Mzg1MzA1ZDM3OTdjMmFkZWI2YTM2MTBiZTAzNTli
MTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw4
IEBACiAjaWYgVVNFKEpTVkFMVUU2NCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJ5
dGVjb2RlUHJvZmlsZUZvci5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCkBAIC00Miw4ICs0NCw4IEBACiAjaW5jbHVkZSAi
U2V0dXBWYXJhcmdzRnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1
ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC01MSw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVt
aXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSku
dmlydHVhbFJlZ2lzdGVyKCksIHJlZ1QwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBA
IC02MSwyMCArNjMsMjEgQEAgc3RkOjplbmFibGVfaWZfdDwKICwgdm9pZD4KIEpJVDo6Y29tcGls
ZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogeworICAgIHVu
c2lnbmVkIGNoZWNrcG9pbnQgPSBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOwogICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBh
cmdDb3VudCA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3Rh
dGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOworICAgIGludCBhcmdDb3VudEluY2x1ZGlu
Z1RoaXMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2lu
dCk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZz
ZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAgIGlmIChP
cDo6b3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQg
KyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSksIHJlZ1QwKTsKICAg
ICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAg
ICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2Zp
bGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdU
MCwgYXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50KS5hZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQogCiAgICAg
YWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNl
dCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KGFyZ0NvdW50SW5jbHVkaW5nVGhpcyksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKIH0KIAogCkBAIC0yMDcsNyArMjEwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9J
bmQKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBjYWxs
ZWUgPSBieXRlY29kZS5tX2NhbGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gY2Fs
bGVlRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKIAogICAgIC8q
IENhbGxlciBhbHdheXM6CiAgICAgICAgIC0gVXBkYXRlcyBjYWxsRnJhbWVSZWdpc3RlciB0byBj
YWxsZWUgY2FsbEZyYW1lLgpAQCAtMjM0LDkgKzIzNyw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZv
SW5kCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAg
aG9sZHMgY2FsbGVlLgogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAotICAgIGlmIChjb21waWxl
Q2FsbEV2YWwoYnl0ZWNvZGUpKSB7CisgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlu
a2VkRnVuY3Rpb25DaGVjazsKICAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNo
KE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZElt
bVB0cihudWxscHRyKSk7CkBAIC0zODAsNiArMzgyLDE4NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3Ry
dWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCit2b2lkIEpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1
dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0
aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdDxOYXJyb3c+OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9y
X29wZW5fdHJ5X2Zhc3Q8V2lkZTE2PjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVy
YXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUzMj47CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOworICAgIHNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOwor
ICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBK
dW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BS
MiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5l
cmljKSkpOworCisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24s
IG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAv
LyBjYWxsIHJlc3VsdCAoaXRlcmF0b3IpIGlzIGluIHJlZ1QwCisKKyAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICZ2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAgCisgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5
SWQpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQpOworCisgICAgZmFzdENh
c2UubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGls
ZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVt
cCgpKTsKKworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRl
bnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworCisgICAgSklUR2V0QnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
Cit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4o
KTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
KyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChp
bnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJh
dG9yX25leHRfdHJ5X2Zhc3Q8TmFycm93PjsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBp
dGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUxNj47CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1
cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+OworICAgICAgICBkZWZhdWx0OiBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCByZWdUMCk7CisgICAgSnVtcCBn
ZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHkocmVnVDApOworICAgIHNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAg
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1w
IGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwg
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
KSkpOworCisgICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKKyAgICBvcjgoVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSwgQWJzb2x1dGVB
ZGRyZXNzKCZtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcykpOworICAgIGNv
bXBpbGVPcENhbGw8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0lu
ZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1bHQgKHsg
ZG9uZSwgdmFsdWUgfSBKU09iamVjdCkgaW4gcmVnVDAKKworICAgIEdQUlJlZyB2YWx1ZUdQUiA9
IHJlZ1QwOworICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgR1BSUmVnIGRv
bmVHUFIgPSByZWdUMTsKKyAgICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRyYXNoZWQgYnkg
dGhlIGZpcnN0IGdldCBieSBpZCBiZWxvdy4KKyAgICBtb3ZlKHZhbHVlR1BSLCBpdGVyUmVzdWx0
R1BSKTsKKworICAgIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXJS
ZXN1bHRHUFIpOworCisgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAgICAgIHByZXNlcnZlZFJlZ3Mu
YWRkKHZhbHVlR1BSKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJl
Z3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCkpLCBKU1ZhbHVlUmVncyhp
dGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7
CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kb25lLCBkb25lR1BSKTsKKyAgICAgICAg
Y2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2gxID0gcmVnVDI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOworICAgICAg
ICBjb25zdCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGZhbHNlOwor
ICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNW
YWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpOworCisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChC
eXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUu
aW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0
QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwg
dmFsdWVHUFIpOworCisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsKKyAgICB9CisK
KyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
KyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBp
dGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hl
Y2twb2ludChqdW1wKCkpOworCisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJl
ZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdU
MjsKKworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBKdW1wTGlzdCBu
b3RPYmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJS
ZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChp
dGVyUmVzdWx0R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0o
KS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisgICAgICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0Jp
dHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOwor
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsK
KyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICAg
ICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0KKworICAgIHsgICAKKyAgICAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9IGJ5dGVj
b2RlLm1fdmFsdWU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNb
bV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1
ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9CisKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IDkwNjk2Y2JlYzEwZTM5M2I5OTcwZjBl
YjIwMTE4ZDIxOTc0YzM1MjUuLmQxNDBhYWM5YmUyZDU0MDNkMWJjMGQ5OTEyYWU5ZTEwNWY4MGQ0
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM2
Niw2ICszNjYsMjYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0Q2FsbFJl
c3VsdChieXRlY29kZSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA3ZGNi
ZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUxYmEyNzU2NTUzM2Y0Li4yN2E1N2Y0ZWUzNjE2NGFjZThl
MzlmMzY4Y2U3NjViZjE1ZGRmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoSklUKQor
I2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
c0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtMTA1LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUgSklUOjpD
YWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQogCiBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewotICAgIHVpbnQz
Ml90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7
CisgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCkpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJp
dHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
ICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4g
SklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwgZnJhbWUgb24KQEAgLTE4
Myw2ICsxODUsMjUgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aGFzQW55U2xvd0Nhc2VzKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5PiYgc2xvd0Nhc2VzLCBWZWN0b3IKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6Y2hlY2twb2ludFJlYWNoZWQoKQoreworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRl
Y29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsg
MSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fY2hlY2twb2ludExhYmVscy5hZGQobV9ieXRlY29k
ZUluZGV4LCBsYWJlbCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludChKdW1wIGp1bXApCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5k
ZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBh
dGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9i
eXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1f
Ynl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKworICAgIGF1dG8gaXRlciA9IG1fY2hl
Y2twb2ludExhYmVscy5maW5kKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgQVNTRVJUKGl0ZXIgIT0g
bV9jaGVja3BvaW50TGFiZWxzLmVuZCgpKTsKKyAgICBqdW1wLmxpbmtUbyhpdGVyLT52YWx1ZSwg
dGhpcyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFkZFNsb3dDYXNlKEp1bXAganVt
cCkKIHsKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4KTsgLy8gVGhpcyBtZXRob2Qgc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQg
bV9ieXRlY29kZUluZGV4IGlzIHNldC4KQEAgLTMxOSw3ICszNDAsNyBAQCBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIGlm
ICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShtZXRhZGF0YS5tX3Byb2ZpbGUpOworICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUodmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2lu
dCgpKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhD
ZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggN2FlMTUwY2M2NjEwNzYyYmFjYzhiZTQyMjA3M2FhZDY0YWIzMTE5MS4uYTVl
MmEyNDdjZjE1NGRhNDZlYjMzZGZiYmYwZTMzNjBkMzZmNTVmYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMzQsNiArMTM0LDE2IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhK
U0dsb2JhbE9iamVjdCogZ2xvCiAgICAgQVNTRVJUKHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93
KTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJ
c05vdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVy
YXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKK30KKwogaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZWZiNWI1YWM5ODBhZWU2
YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1Li45ZmNjNDFkZWM0NTgyYzk2NTI5MjM2NTVkYThmMzAy
Njk1ZGY3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApA
QCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRpb24oVk0qKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJm
bG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xv
YmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93RXJyb3IoQ29kZUJsb2NrKikgV1RGX0lOVEVSTkFMOwogaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0Kikg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggOGRlYTdmMjc4ZTc2NjJlNTAzMTRjZWI5YjA4MzM5Zjg3YmZkYTQ5Ny4u
OGJiMThjMjFmNDJhOWY1N2NkYzA1M2ZkZGU4YzQ1MDFkNDhlM2M2MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1
ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKQEAgLTgyLDYgKzgzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2st
PnZtKCk7IFwKICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsg
XAorICAgIGRhdGFMb2dMbklmKExMSU5UX1RSQUNJTkcgJiYgT3B0aW9uczo6dHJhY2VMTEludFNs
b3dQYXRoKCksICJDYWxsaW5nIHNsb3cgcGF0aCAiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsgXAog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNpZm5kZWYg
TkRFQlVHCkBAIC02OTMsNyArNjk1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV9pZF9kaXJlY3QpCiB9CiAKIAotc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90
eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBt
ZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEpT
Q2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZt
KTsKIApAQCAtNzQxLDQ0ICs3NDMsMzkgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90
eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB7
CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwog
ICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNl
dFVuc2V0TW9kZShzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VChzbG90LmlzVmFsdWUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5z
ZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkpOworICAg
ICAgICAgICAgbWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xv
dC5zbG90QmFzZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICB2bS5oZWFwLndyaXRlQmFycmll
cihjb2RlQmxvY2spOwogfQogCi0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWQpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0
aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1v
ZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9w
ZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3Qp
OwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7Ci0gICAgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOworCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cK
ICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFi
bGUoKQogICAgICAgICAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgewogICAgICAgICAg
ICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEu
bW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRh
dGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1
Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZE1vZGU6OlByb3RvTG9hZDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlE
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IDA7CkBAIC03OTksMzUgKzc5NiwxMDkgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgaWYgKHNsb3QuaXNW
YWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAg
Ly8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7
CisgICAgICAgICAgICBtZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsK
IAogICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBo
YXBwZW5pbmcuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZv
ckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50
Q2FjaGluZyA9IDA7CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnQoKSkgewotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUu
c3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEu
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAg
ICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENv
dW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgeworICAgICAgICB9IGVsc2Ug
aWYgKFVOTElLRUxZKG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNW
YWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlVmFs
dWUpOwogCi0gICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENv
dW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEuaGl0Q291
bnRGb3JMTEludENhY2hpbmcpKQogICAgICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlw
ZUNhY2hlKGdsb2JhbE9iamVjdCwgdm0sIGNvZGVCbG9jaywgcGMsIG1ldGFkYXRhLCBiYXNlQ2Vs
bCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJTlRfQUxXQVlT
X0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYmIGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0
dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgICAgICBtZXRh
ZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmFycmF5TGVu
Z3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7CiAgICAgfQogCi0gICAgTExJTlRfUFJPRklMRV9WQUxVRShyZXN1bHQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wR2V0QnlJZD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKworICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9SRVRV
Uk5fUFJPRklMRUQocmVzdWx0KTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisK
Ky8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG9wZW5fZ2V0X25leHQiKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgaXRlcmF0b3Ig
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgUmVnaXN0
ZXImIG5leHRSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQp
OworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBu
ZXh0UmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5t
X25leHRQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworLy8gICAg
ZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgbmV4dF9nZXRfZG9uZSIpOworCisgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgLy8gV2UgdXNlIG1fdmFsdWUgdG8gaG9s
ZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVlIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBh
c3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4KKyAgICBK
U1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
dmFsdWUpOworICAgIFJlZ2lzdGVyJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoYnl0ZWNvZGUubV9kb25lKTsKKworICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3Qo
KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0
ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKKworICAgIEpT
VmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5t
X2RvbmVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGRv
bmVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1f
ZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
aXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKy8vICAg
IGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfZ2V0X3ZhbHVlIik7CisKKyAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBo
b2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgdG1wIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBs
aXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4K
KyAgICBSZWdpc3RlciYgdmFsdWVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRl
Y29kZS5tX3ZhbHVlKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gdmFsdWVSZWdpc3Rl
ci5qc1ZhbHVlKCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQo
cGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgIHZhbHVlUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIAorCiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBA
IC0xNTYzLDcgKzE2MzQsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChD
YWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdl
bmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgT3Am
JiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCB1bnNpZ25lZCBjaGVja3Bv
aW50SW5kZXggPSAwKQogewogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBTZXQgdXAg
YSBjYWxsIGZyYW1lLgpAQCAtMTU3MSwxNiArMTY0MiwxNiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZQogICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUu
CiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxs
IGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCiAgICAgCi0gICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fY2FsbGVlKTsKKyAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgY2FsbGVlRm9yKGJ5dGVjb2Rl
LCBjaGVja3BvaW50SW5kZXgpKTsKICAgICAKLSAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0g
Y2FsbEZyYW1lIC0gYnl0ZWNvZGUubV9hcmd2OworICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUg
PSBjYWxsRnJhbWUgLSBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hl
Y2twb2ludEluZGV4KTsKICAgICAKLSAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMoYnl0ZWNvZGUubV9hcmdjKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNv
ZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIGNhbGxlZUZyYW1lLT51bmNoZWNrZWRSKFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAg
Y2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxGcmFtZSk7CiAgICAgCiAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgIHJldHVybiBzZXRV
cENhbGwoY2FsbGVlRnJhbWUsIGtpbmQsIGNhbGxlZUFzVmFsdWUsICZtZXRhZGF0YS5tX2NhbGxM
aW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwgY2FsbGVl
QXNWYWx1ZSwgJmNhbGxMaW5rSW5mb0ZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CiB9
CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQpAQCAtMTYwNCw2ICsxNjc1
LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZy
YW1lLCBwYy0+YXM8T3BDb25zdHJ1Y3Q+KCksIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0KIAorTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworCisvLyAg
ICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBvcGVuX2NhbGwiKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMt
PmFzPE9wSXRlcmF0b3JPcGVuPigpLCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck9wZW46OnN5bWJv
bENhbGwpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVy
YXRvcl9uZXh0X2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9y
X25leHRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0X2NhbGwiKTsK
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxv
Y2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCBDb2RlRm9yQ2FsbCwgT3BJ
dGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBA
IC0xOTkwLDYgKzIwODMsNDQgQEAgc3RhdGljIHZvaWQgaGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQo
Vk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QKICAgICBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kc3QpID0gcmVzdWx0OwogfQogCitzdGF0aWMgdm9p
ZCBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wSXRlcmF0b3JPcGVuJiBi
eXRlY29kZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2l0
ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKSB7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgSlNWYWx1ZSBuZXh0ID0gaXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+bmV4dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KSA9IG5leHQ7Cit9
CisKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQoVk0mIHZtLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3BJ
dGVyYXRvck5leHQmIGJ5dGVjb2RlLCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZSYgc2lkZVN0
YXRlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB1
bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSBzaWRlU3RhdGUuYnl0ZWNvZGVJbmRleC5jaGVja3Bv
aW50KCk7CisKKyAgICBhdXRvJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIGF1dG8gaXRlcmF0b3JSZXN1bHRPYmplY3QgPSBzaWRl
U3RhdGUudG1wc1tPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdF07CisgICAgYXV0byBuZXh0ID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpOyAgICAKKwor
ICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5vdCBPU1Ig
ZXhpdCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2FzZXMuIik7CisKKyAgICBhdXRvJiBkb25l
UmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsKKyAgICBp
ZiAoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7CisgICAgICAg
IGRvbmVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPmRvbmUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAoZG9uZVJl
Z2lzdGVyLmpzVmFsdWUoKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgdmFsdWVS
ZWdpc3RlciA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZVJlZ2lzdGVy
ID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+dmFsdWUpOworfQorCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0
SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFtOjpSZWYg
cGMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWNvZGVCbG9jay0+dm0oKS5leGNlcHRpb25Gb3JJ
bnNwZWN0aW9uKCkpOwpAQCAtMjA2Niw2ICsyMTk3LDE1IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KENhbGxGcmFtZSogY2FsbEZy
YW1lCiAgICAgICAgIGhhbmRsZVZhcmFyZ3NDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgcGMtPmFzPE9wVGFpbENhbGxWYXJhcmdzPigpLCAqc2lkZVN0YXRlLmdldCgpKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAg
aGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2tw
b2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4o
KSwgKnNpZGVTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMjEwMyw2ICsyMjQzLDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJy
aWVyX3Nsb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTQ2VsbCogY2VsbCkKICAgICB2bS5oZWFw
LndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFs
dWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFs
dWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCit7CisgICAgZGF0YUxvZ0xuKEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkpOworfQorCiBleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBs
bGludF9jcmFzaCgpCiB7CiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBiNTY5OWMzMGQyY2RhZmE0
ZjkzYzNhOWYwOTgwNTcxYzgxNzY3YzFhLi5mOWEzNGRhYjM2ZDlmYTUyNzU2YTE5OGIyZDc0Zjc1
MmM1MzhhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBtYWNybyBkZWZpbmVPU1JF
eGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBzaXplKGRlZmluZU5hcnJvdywg
ZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBmKCkgZW5kKQogZW5kCiAKLW1h
Y3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRp
c3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFs
UmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19MT09QIG9y
IENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKICAgICBlbHNl
CkBAIC0xMDQ1LDExICsxMDQ1LDExIEBAIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQCiAgICAgICAg
ICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVj
dGVkCiAgICAgICAgICMgY3Jhc2hlcy4KICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVy
Q2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gpCisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBlbmQKICAg
ICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICByZXN0b3Jl
U3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVu
ZAogCiBtYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRl
bXAzLCBjYWxsUHRyVGFnKQpAQCAtMTExNyw3ICsxMTE3LDExIEBAIG1hY3JvIHByZXBhcmVGb3JU
YWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgam1w
IGNhbGxlZSwgY2FsbFB0clRhZwogZW5kCiAKLW1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwp
CittYWNybyBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ2Fs
bChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRpc3Bh
dGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxs
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0Vmly
dHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGNhbGxD
YWxsU2xvd1BhdGgoCiAgICAgICAgIHNsb3dQYXRoLAogICAgICAgICAjIFRob3NlIGFyZSByMCBh
bmQgcjEKQEAgLTExMjYsNyArMTEzMCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyCiAgICAg
ICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAogICAgICAgICAgICAgcHJlcGFyZUNhbGwo
Y2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKICAgICAgICAgLmRvbnRVcGRhdGVT
UDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6
ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKKyAgICAg
ICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBj
YWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBlbmQKIApAQCAtMjAxNiw3ICsy
MDIwLDcgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBmcmFtZVNsb3dQYXRoLCBzbG8KICAgICAgICAgICAgIHN1YnAgcjEsIENh
bGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgICAgICBlbmQKICAgICBlbmQKLSAgICBzbG93UGF0
aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1Bh
dGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1lLCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQK
IAogCkBAIC0yMDc5LDcgKzIwODMsNyBAQCBlbmQpCiAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRo
YXQgdGhlIGV2YWwgcmV0dXJuZWQuCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6Ci0gICAgc2xvd1Bh
dGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAgb3BfY2FsbF9l
dmFsX25hcnJvdywKICAgICAgICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLApAQCAtMjA4
OCw3ICsyMDkyLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICAgICAgcHJlcGFyZUZvclJl
Z3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKLSAgICBzbG93UGF0aEZv
ckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxf
d2lkZTE2LAogICAgICAgICB3aWRlMTYsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDk3LDcg
KzIxMDEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICAgICAgcHJlcGFyZUZv
clJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKLSAgICBzbG93UGF0
aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2
YWxfd2lkZTMyLAogICAgICAgICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMTA3
LDcgKzIxMTEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKIAogCiBjb21tb25PcChs
bGludF9nZW5lcmljX3JldHVybl9wb2ludCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6ZSkKLSAg
ICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxFdmFsLCBtYWNybyAoKQorICAgIGRpc3Bh
dGNoQWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1fcHJvZmlsZSwgbV9kc3QsIG1hY3JvICgp
CiAgICAgICAgIGRpc3BhdGNoT3Aoc2l6ZSwgb3BfY2FsbF9ldmFsKQogICAgIGVuZCkKIGVuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjE4M2M4MDQyYWJkZmNlOGQ0MzkxMWFmNDFm
NjU0YS4uNzRjNDgwZGYyMTIxNzE2NTUwYzVmZDRmMDg0NGFiMTEwOGZkYzgxZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29k
ZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgICAgICBtb3ZlIHBheWxv
YWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDApCiAgICAgICAgIGdldChtX2RzdCwgdDIpCiAgICAg
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQpAQCAtNzcsMTYgKzc3LDE3IEBAIGVuZAogCiAKICMg
QWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3Rl
cnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBs
b2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Rz
dCwgdDMpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0
MykKICAgICBzdG9yZWkgcjEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSByMCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29kZVN0cnVj
dCwgdDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMSwgcjApCisg
ICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIxLCBy
MCkKICAgICBkaXNwYXRjaCgpCisKIGVuZAogCiBtYWNybyBjQ2FsbDIoZnVuY3Rpb24pCkBAIC02
MzIsOSArNjMzLDkgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQoc2l6ZSwgZ2V0LCB2YWx1ZUZpZWxkTmFtZSkKICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3Jv
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQpCittYWNy
byB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywg
cGF5bG9hZCkKICAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJv
ZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0YWRhdGFdCi0gICAgc3RvcmVpIHBheWxvYWQs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFBheWxvYWRP
ZmZzZXRbbWV0YWRhdGFdCisgICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQog
ZW5kCiAKIApAQCAtMTM3OCw3ICsxMzc5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAg
ICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCiAgICAg
YmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93
CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4odDAs
IHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0MDAsNyArMTQwMSw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2Rl
TWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3Q1XSwgdDMKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5SWQsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxl
LCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0
aDoKQEAgLTE0MTMsNyArMTQxNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lk
LCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0
MAogICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3By
b2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDApCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIAogLm9w
R2V0QnlJZFVuc2V0OgpAQCAtMTQyMSw3ICsxNDIyLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXQKICAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1v
ZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgYmluZXEgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlJZCwgdDUsIFVuZGVmaW5lZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCiAgICAgcmV0dXJuKFVuZGVmaW5l
ZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNDMwLDcgKzE0MzEsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDVdLCB0MgogICAgIGJpbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2Zp
bGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFNsb3c6CkBA
IC0xNDQwLDcgKzE0NDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9zclJldHVyblBv
aW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNp
emUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQy
LCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjEs
IHIwKQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE1MTgsNyArMTUxOSw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAg
ICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQogICAgICAgICBz
dG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAg
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBheWxvYWQp
CisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRh
ZywgcmVzdWx0UGF5bG9hZCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTI3
LDcgKzE1MjgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlW
YWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmZDJpaSByZXN1
bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNl
dFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9yZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZz
ZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1
LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBt
X3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCiAgICAgICAgIGRpc3BhdGNoKCkKICAg
ICBlbmQKIApAQCAtMTU3Miw3ICsxNTczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5v
cEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0K
ICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgdDUsIHQyLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwg
bV9wcm9maWxlLCB0NSwgdDIsIHQxKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJ
bmRleGVkU3RvcmFnZToKQEAgLTE1ODUsNyArMTU4Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50
KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5VmFsLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAt
MTk1NywxMCArMTk1OCwxMCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1Bh
dGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBzdG9yZWkg
Q2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAogICAg
ICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAg
ICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hp
bmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgY2FsbFRhcmdldEZ1bmN0
aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlz
cGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5l
Q29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoKLSAgICAg
ICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNs
b3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI4OCw3ICsyMjg5LDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAg
ICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAg
ICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQxLCB0MikKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAg
cmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjI5Nyw3ICsyMjk4LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3QwXSwgdDEKICAgICAgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFt0MF0sIHQyCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3Nhcnko
dDEpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQxLCB0MikKKyAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIp
CiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTIzMDUsNyArMjMwNiw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJv
bm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCiAgICAgICAgIGxvYWRw
IEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAsIHQzLCA4
XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0
MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjU5NCw2ICsyNTk1LDE1
IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3Ro
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIGVu
ZCkKIAorbGxpbnRPcChvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJh
dG9yX29wZW4sIHNpemUpCisgICAgYnJlYWsKK2VuZCkKKworbGxpbnRPcChvcF9pdGVyYXRvcl9u
ZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisgICAgZGVm
aW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9yX25leHQsIHNpemUpCisgICAgYnJlYWsK
K2VuZCkKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwgT3BHZXRJ
bnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdl
dChtX2Jhc2UsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhZTJlMzc3M2ZmZGNjNDA2NzRjN2FhYzBjMWQ0
ZmU2Y2QwZmI3ODU5Li44NjEzNmU4NTdjOWY3ODIyYjI0NDZjNjI2YmZkYzdhM2RmYmIyZmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtNjgsMjYgKzY4LDI2IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChv
cGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKICAgICBmbihtYWNybyAo
dmFsdWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikK
LSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDEsIHQzKQorICAgICAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MykKICAgICAgICAgZ2V0KG1f
ZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAgICAgICAgZGlzcGF0
Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBt
ZXRhZGF0YSwgdmFsdWUpCi0gICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0YWRhdGFdCittYWNybyB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlKQorICAgIHN0b3JlcSB2YWx1
ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRh
ZGF0YV0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1p
bmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KLW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxs
KHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gpCiAgICAgbG9hZFBDKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBCCi0gICAg
Z2V0KHNpemUsIG9wY29kZVN0cnVjdCwgbV9kc3QsIHQxKQorICAgIGdldChzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwg
OF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBAIC0x
MzQwLDcgKzEzNDAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3Qs
IE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGJpbmVxIHQwLCB0
MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFk
YXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIHQyLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCkKICAgICBy
ZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTM0OCw1MyArMTM0OCw1OSBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisjIFRoZSBiYXNlIG9iamVjdCBpcyBleHBlY3Rl
ZCBpbiB0MworbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0
YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFkYXRhLCBy
ZXR1cm4pCiAgICAgbWV0YWRhdGEodDIsIHQxKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRh
dGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJdLCB0MQotICAgIGdldChtX2Jhc2UsIHQwKQotICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cp
CisgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUu
bW9kZVt0Ml0sIHQxCiAKIC5vcEdldEJ5SWREZWZhdWx0OgogICAgIGJibmVxIHQxLCBjb25zdGV4
cHIgR2V0QnlJZE1vZGU6OkRlZmF1bHQsIC5vcEdldEJ5SWRQcm90b0xvYWQKICAgICBsb2FkaSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRh
dGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBi
aW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRh
dGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAg
bG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVs
dE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisg
ICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRl
ZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAp
CiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgogICAgIGJibmVxIHQxLCBj
b25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3RoCiAg
ICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3Qy
XSwgdDMKLSAgICBiaW5lcSB0MywgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0
QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0
W3QyXSwgdDEKLSAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5w
cm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MworICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURb
dDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVk
T2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQ
cm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3Ro
OgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BH
ZXRCeUlkVW5zZXQKICAgICBtb3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6
Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0
MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93Ci0gICAgYnRp
eiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93CisgICAgYXJyYXlQcm9maWxl
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3Ro
TW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xv
d0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxv
YWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxv
YWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cKKyAgICBi
aWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVyVGFnLCB0MAotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkVW5z
ZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURb
dDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCB0MiwgVmFsdWVVbmRlZmluZWQpCisgICAgbG9hZGkgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3Qy
XSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKICAgICByZXR1
cm4oVmFsdWVVbmRlZmluZWQpCiAKK2VuZAorCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKKyAgICBnZXQobV9iYXNlLCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVy
KE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNp
emUsIG1ldGFkYXRhLCByZXR1cm4pCisKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICBkaXNwYXRjaCgpCkBAIC0xNDAyLDcg
KzE0MDgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9zclJldHVyblBvaW50OgogICAg
IGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAg
bWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCByMCkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCkKICAgICByZXR1cm4o
cjApCiAKIGVuZCkKQEAgLTE0OTcsNyArMTUwMyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
CiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQogICAgICAgICBnZXQo
bV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhd
Ci0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcmVzdWx0KQorICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQogICAgICAgICBk
aXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NTgsNyArMTU2NCw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAKIC5vcEdldEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4
XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0
QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1NzEsNyArMTU3Nyw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJl
dHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTk0
OCw2ICsxOTU0LDMwIEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBn
ZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0
aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHBy
ZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1l
bnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgbWV0YWRhdGEodDUs
IHQwKQorICAgIGdldENhbGxlZSh0MCkKKworICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRb
dDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQorICAgIGJx
bmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKworICAgIGdldEFyZ3VtZW50U3RhcnQodDMpCisgICAg
bHNoaWZ0aSAzLCB0MworICAgIG5lZ3AgdDMKKyAgICBhZGRwIGNmciwgdDMKKyAgICBzdG9yZXEg
dDIsIENhbGxlZVt0M10KKyAgICBnZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyh0MikKKyAg
ICBzdG9yZVBDKCkKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBzcAorICAgIHByZXBhcmVDYWxsKCVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0
NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9w
Y29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVh
bFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKworLm9wQ2FsbFNs
b3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgs
IHByZXBhcmVDYWxsKQorZW5kCisKIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93
UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCkBAIC0x
OTU2LDI0ICsxOTg2LDE5IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0
aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgICAgICBnZXR1
KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAgIGVuZCwgbWV0YWRh
dGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVX
aXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwg
dDAsIHQzKQotICAgICAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93Ci0gICAgICAgIGdldHUo
c2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQotICAgICAgICBsc2hpZnRpIDMsIHQzCi0g
ICAgICAgIG5lZ3AgdDMKLSAgICAgICAgYWRkcCBjZnIsIHQzCi0gICAgICAgIHN0b3JlcSB0Miwg
Q2FsbGVlW3QzXQotICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCB0MikK
LSAgICAgICAgc3RvcmVQQygpCi0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAg
ICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1f
bWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAg
ICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVD
b2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQotICAgIC5vcENhbGxTbG93OgotICAgICAg
ICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQor
ICAgICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFj
cm8gZ2V0QXJndW1lbnRTdGFydChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0
cnVjdCwgbV9hcmd2LCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdldEFyZ3Vt
ZW50Q291bnQoZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJn
YywgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNs
b3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIHByZXBhcmVDYWxsLCBzaXpl
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJn
dW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI3Niw3ICsyMzAxLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRw
IE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQotICAgICAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJv
bVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAgICAgICAgcmV0dXJuKHQyKQogICAgIGVuZAog
CkBAIC0yMjg0LDE0ICsyMzA5LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAg
ICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCiAgICAgICAgIHJldHVybih0
MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQogICAgICAgICBsb2FkcCBP
cEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRx
IEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAotICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQog
ICAgIGVuZAogCkBAIC0yNTUxLDcgKzI1NzYsNiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3By
b2ZpbGVfY29udHJvbF9mbG93LCBPcFByb2ZpbGVDb250cm9sRmxvdywgbWFjcm8gKHNpemUsCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCi0KIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xl
bmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJu
KQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tj
ZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKQEAgLTI1NjcsNiArMjU5MSwxNDcgQEAgbGxpbnRPcFdp
dGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGMKIGVuZCkKIAogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9y
X29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJvdygp
CisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpCisg
ICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRl
cmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUz
MigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIp
CisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBt
YWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8g
dGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAg
ICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yT3Bl
bkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljOgorICAgIG1h
Y3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0QnlJZFN0YXJ0Cisg
ICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9zeW1ib2xJ
dGVyYXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdU
aGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JPcGVuLCBtX3N0YWNr
T2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1Ro
aXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKworICAgIGNhbGxI
ZWxwZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2Nh
bGwsIE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJhdG9yUHJvZmlsZSwgbV9pdGVyYXRvciwgcHJlcGFy
ZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0QnlJZENoZWNrcG9pbnQsIG1ldGFkYXRhLCBn
ZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1
ZGluZ1RoaXNDb3VudCkKKworLmdldEJ5SWRTdGFydDoKKyAgICBtYWNybyBzdG9yZU5leHRBbmRE
aXNwYXRjaCh2YWx1ZSkKKyAgICAgICAgbW92ZSB2YWx1ZSwgdDIKKyAgICAgICAgZ2V0KG1fbmV4
dCwgdDEpCisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDEsIDhdCisgICAgICAgIGRpc3BhdGNo
KCkKKyAgICBlbmQKKworICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQzKQorICAg
IGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdwor
ICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwg
bV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0
YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoKQorCisuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5l
eHRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5f
Z2V0X25leHQpCisgICAgZGlzcGF0Y2goKQorCitlbmQpCisKK2xsaW50T3BXaXRoTWV0YWRhdGEo
b3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9uZXh0LCB0
MCkKKyAgICBidHFueiB0MCwgdDAsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgbWV0YWRhdGEo
YTIsIHQ1KQorICAgIG1hY3JvIGZhc3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0
ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRl
MTYoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2
KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xvd1BhdGgo
X2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUoZmFzdE5h
cnJvdywgZmFzdFdpZGUxNiwgZmFzdFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9wKCkgZW5k
KQorCisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNzZW1ibHkg
c2luY2UgaXQncyB0aGUgImZhc3QiIGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHByIEl0ZXJh
dGlvbk1vZGU6OkdlbmVyaWMsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgZGlzcGF0Y2goKQor
CisuaXRlcmF0b3JOZXh0R2VuZXJpYzoKKyAgICBtYWNybyBnb3RvR2V0RG9uZUNoZWNrcG9pbnQo
KQorICAgICAgICBqbXAgLmdldERvbmVTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0Q2Fs
bGVlKGRzdCkKKyAgICAgICAgZ2V0KG1fbmV4dCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8g
Z2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9w
SXRlcmF0b3JOZXh0LCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBn
ZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0Cisg
ICAgZW5kCisKKyAgICAjIFVzZSBtX3ZhbHVlIHNsb3QgYXMgYSB0bXAgc2luY2Ugd2UgYXJlIGdv
aW5nIHRvIHdyaXRlIHRvIGl0IGxhdGVyLgorICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3JfbmV4
dCwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwsIE9wSXRlcmF0b3JOZXh0LCBt
X25leHRSZXN1bHRQcm9maWxlLCBtX3ZhbHVlLCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUs
IGdvdG9HZXREb25lQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJ
bmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0
RG9uZVN0YXJ0OgorICAgIG1hY3JvIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUoZG9uZVZhbHVl
KQorICAgICAgICAjIHVzZSB0MCBiZWNhdXNlIHBlcmZvcm1HZXRCeUlESGVscGVyIHVzdWFsbHkg
cHV0cyB0aGUgZG9uZVZhbHVlIHRoZXJlIGFuZCBvZmZsaW5lYXNtIHdpbGwgZWxpZGUgdGhlIHNl
bGYgbW92ZS4KKyAgICAgICAgbW92ZSBkb25lVmFsdWUsIHQwCisgICAgICAgIGdldChtX2RvbmUs
IHQxKQorICAgICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgICAgICBqbXAgLmdldFZh
bHVlU3RhcnQKKyAgICBlbmQKKworCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMp
CisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0RG9uZVNsb3cKKyAgICBwZXJmb3JtR2V0
QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9m
aWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZh
bHVlKQorCisuZ2V0RG9uZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
aXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhy
b3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2Rv
bmUsIHQwKQorCisgICAgIyBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlIHB1dHMgdGhlIGRvbmVW
YWx1ZSBpbnRvIHQwCisuZ2V0VmFsdWVTdGFydDoKKyAgICAjIEJyYW5jaCB0byBzbG93IGlmIG5v
dCBtaXNjIHByaW1pdGl2ZS4KKyAgICBidHFueiB0MCwgfjB4ZiwgLmdldFZhbHVlU2xvdworICAg
IGJ0aXogdDAsIDB4MSwgLm5vdERvbmUKKyAgICBkaXNwYXRjaCgpCisKKy5ub3REb25lOgorICAg
IG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRjaCh2KQorICAgICAgICBtb3ZlIHYsIHQyCisgICAg
ICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAg
ICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDAsIDB4YmFkZGIwMWUpCisgICAgICAg
IGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAg
c2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2ZSBjbG9iYmVyZWQgdDMuCisgICAgbG9h
ZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNoZWNr
IGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMgYSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2lsbCBoYXZl
IHRocm93biBhbiBlcnJvciBiZWZvcmUuCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVy
YXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVT
bG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFuZERpc3BhdGNoKQorCisuZ2V0VmFsdWVT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0
X3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKworCiBsbGludE9wV2l0aFByb2ZpbGUob3Bf
Z2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9iYXNlLCB0MSkKICAg
ICBnZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbV9pbmRleCwgdDIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKaW5kZXggOGQ3NjcxMTZjMDU0
ZTVlYTY2NGVmNDA2MmM1NmYyNjA1ZTBkOGI0NS4uNTg5YWUwZTBmM2VkMzRiNjYxZTg1NjJiY2Ey
OTgwMmVjMTBlNWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vdHJhbnNmb3JtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Ry
YW5zZm9ybS5yYgpAQCAtNjI5LDcgKzYyOSw3IEBAIGVuZAogCiBjbGFzcyBOb2RlCiAgICAgZGVm
IHZhbGlkYXRlCi0gICAgICAgIHJhaXNlICJVbnJlc29sdmVkICN7ZHVtcH0gYXQgI3tjb2RlT3Jp
Z2luU3RyaW5nfSIKKyAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgJyN7ZHVtcH0nIGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHZhbGlkYXRlQ2hpbGRyZW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IGI4ZGU5NjU1ODJmN2Q5MTI3MTMzN2Q1NDMxOTAzZTgzMThjMjZmNDcuLjkzZTdlNzM2
MDFiZjczZTdkYWQ3NTRlYWJjMTU2M2Q4YTBlODcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDUsNiArNDUsNyBAQAog
I2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNTMsOCArMTU0LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
I2RlZmluZSBSRVRVUk5fUFJPRklMRUQodmFsdWVfXykgXAogICAgIFJFVFVSTl9XSVRIX1BST0ZJ
TElORyh2YWx1ZV9fLCBQUk9GSUxFX1ZBTFVFKHJldHVyblZhbHVlX18pKQogCi0jZGVmaW5lIFBS
T0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBc
CisjZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWVfXykgXAorICAgIFBST0ZJTEVfVkFMVUVfSU4o
dmFsdWVfXywgbV9wcm9maWxlKQorCisjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHBy
b2ZpbGVOYW1lKSBkbyB7IFwKKyAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5w
cm9maWxlTmFtZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAgICAg
fSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRocm93QXJpdHlDaGVja1N0YWNrT3ZlcmZs
b3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkK
QEAgLTk2NSw2ICs5NjksMTI4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCkK
ICAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1Byb3BlcnR5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKSkp
OwogfQogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIC8vIERvbid0IHNl
dCBQQzsgd2UgY2FuJ3QgdGhyb3cgYW5kIGl0J3MgcmVsYXRpdmVseSBzbG93LgorICAgIEJFR0lO
X05PX1NFVF9QQygpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJ
dGVyYXRvck9wZW4sIHdpZHRoPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8T3BJdGVyYXRvck9wZW46Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworICAgIEpTVmFs
dWUgaXRlcmFibGUgPSBHRVRfQyhieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCk7CisgICAg
UFJPRklMRV9WQUxVRV9JTihpdGVyYWJsZSwgbV9pdGVyYWJsZVByb2ZpbGUpOworICAgIEpTVmFs
dWUgc3ltYm9sSXRlcmF0b3IgPSBHRVRfQyhieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yKS5qc1Zh
bHVlKCk7CisgICAgYXV0byYgaXRlcmF0b3IgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisK
KyAgICBhdXRvIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24gPSBbJl0geworICAgICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpLmlz
U3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7
CisKKyAgICAgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVja2VkIHRo
ZSB3YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlkLgorICAgICAgICBKU0Z1bmN0aW9uKiBzeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5bWJvbEl0
ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7IAorCisgICAgICAgIGlmIChnbG9iYWxP
YmplY3QtPmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpICE9IHN5bWJvbEl0
ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YzsKKworICAgICAgICAvLyBXZSBzaG91bGQgYmUgZ29vZCB0byBnby4KKyAgICAgICAgbWV0YWRh
dGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1l
dGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAgICAgR0VU
KGJ5dGVjb2RlLm1fbmV4dCkgPSBKU1ZhbHVlKCk7CisgICAgICAgIGF1dG8qIGl0ZXJhdGVkT2Jq
ZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oaXRlcmFibGUpOworICAgICAgICB7CisgICAgICAgICAg
ICBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFy
cmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZh
bHVlcyk7CisgICAgICAgIH0KKyAgICAgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYXRvci5qc1Zh
bHVlKCksIG1faXRlcmF0b3JQcm9maWxlKTsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6
OkZhc3RBcnJheTsKKyAgICB9OworCisgICAgaWYgKGl0ZXJhYmxlLmluaGVyaXRzPEpTQXJyYXk+
KHZtKSkgeworICAgICAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbigpID09IEl0
ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
cGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkpOwor
ICAgIH0KKworICAgIC8vIFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMg
bW9kZS4KKyAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFk
YXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YzsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BB
VEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7
Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dF93aWRlMTYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lk
ZTE2PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlw
ZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAg
cmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRh
ZGF0YVB0cik7Cit9CisKK3RlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgQkVH
SU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JO
ZXh0LCB3aWR0aD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9ICpyZWludGVycHJldF9jYXN0PE9w
SXRlcmF0b3JOZXh0OjpNZXRhZGF0YSo+KG1ldGFkYXRhUHRyKTsKKworICAgIEFTU0VSVCghR0VU
KGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpKTsKKyAgICBKU09iamVjdCogaXRlcmF0b3IgPSBq
c0Nhc3Q8SlNPYmplY3QqPihHRVQoYnl0ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgpKTs7Cisg
ICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCku
YXNDZWxsKCk7CisgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNB
cnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgeworICAgICAgICBpZiAoYXV0byBhcnJheSA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChhcnJheS0+c3RydWN0
dXJlSUQoKSk7CisKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vl
bk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRp
b25Nb2RlOjpGYXN0QXJyYXk7CisgICAgICAgICAgICBhdXRvJiBpbmRleFNsb3QgPSBhcnJheUl0
ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KTsKKyAg
ICAgICAgICAgIGludDY0X3QgaW5kZXggPSBpbmRleFNsb3QuZ2V0KCkuYXNBbnlJbnQoKTsKKyAg
ICAgICAgICAgIEFTU0VSVCgwIDw9IGluZGV4ICYmIGluZGV4IDw9IG1heFNhZmVJbnRlZ2VyKCkp
OworCisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICAgICAgYm9vbCBkb25lID0g
aW5kZXggPT0gLTEgfHwgaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpOworICAgICAgICAgICAgR0VU
KGJ5dGVjb2RlLm1fZG9uZSkgPSBqc0Jvb2xlYW4oZG9uZSk7CisgICAgICAgICAgICBpZiAoIWRv
bmUpIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVyZSBiZWNh
dXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAgICAgICAgICAgICBpbmRleFNs
b3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoaW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSk7Cisg
ICAgICAgICAgICAgICAgdmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBtX3ZhbHVlUHJv
ZmlsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgor
ICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVy
KC0xKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdFVChieXRlY29kZS5tX3ZhbHVl
KSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8vIFJldHVybiB0
byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEu
c2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7
Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFz
dF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8TmFy
cm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlw
ZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAg
cmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBjLCBtZXRh
ZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4
dF90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5
X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3MTM1ZTJi
Nzg0YWI2OGRiNWY1NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjdhYjA4YTJmYWQ2OWE0YjBkNDU5MjM3
NzkzNzVkY2Q4YjJlZTBhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDYsNiArMjQ2LDggQEAgU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
aW5fYnlfaWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwpOwor
Ly8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QpOworLy8gU0xP
V19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfc3RyY2F0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fcHJp
bWl0aXZlKTsKQEAgLTI4Myw2ICsyODUsMTggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
c3ByZWFkKTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxsRnJhbWUqLCBjb25z
dCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdyhDYWxsRnJh
bWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUx
NihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9m
YXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFk
YXRhKTsKKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQYXRoUmV0dXJu
VHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUq
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNihD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRh
KTsKKwogdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlwZShTTE9XX1BB
VEggKikoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCAz
NTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNlLi42ODc0ZWM3OTAzNzU4Y2Y5
ZGY0NDM5YTYyMzkwNjFjZjI3MDU4OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAKQEAgLTMzMCw2ICszMzAsMjQgQEAgY29uc3QgY2hhciogaW50cmlu
c2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitP
cHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJbnRyaW5z
aWMgaW50cmluc2ljKQoreworICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgY2FzZSBBcnJh
eVZhbHVlc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWM6Cisg
ICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7CisgICAgY2FzZSBBcnJheUtleXNJ
bnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbktpbmQ6OktleXM7CisgICAgY2FzZSBBcnJheUVudHJpZXNJbnRyaW5zaWM6
CisgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvbktpbmQ6OkVudHJpZXM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBX
VEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCA2YmZm
ZjkwMDYzY2UyZDdkOGFjMjA1NDJlOGE4ZDdlMThjNDJiYWU5Li43MWJhM2FhZDM1OTY5NTZhZmMy
ZDBhYmZjNmZkMWRlMTdhZjFlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaApAQCAtMTg3LDYgKzE4Nyw4IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7
CiAgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAorT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4g
aW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKKwogY29uc3QgY2hhciogaW50
cmluc2ljTmFtZShJbnRyaW5zaWMpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKaW5kZXggNTk5ZTc3NGIw
M2RkM2U1YmE2ZDRkN2ZhMzRiYjk4YTk2ODdlYzYwOS4uNGZkMGExMTY1MjVjZGM1MzJhNTNkMGI4
YjVhY2I1MzM4N2E4ZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBKU09iamVj
dCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRl
cm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAgICBzdGF0aWMg
SlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogaXRlcmF0
ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CisgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVj
dCwgSXRlcmF0aW9uS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwg
c3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGtpbmQpKSk7CisgICAgfQogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZVdpdGhJ
bml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQyYzUzNzc3Y2NkZWM1ZmNk
NGRiODEwZDE4NTRmYTYwYzlmNDgxZWQuLmQzMDJiMTg2NTNlMzg0OTc4OTJiNjA1ZmExMjhhOTlj
MGY5NGYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
QEAgLTIyNSw2ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKFZNJikgY29uc3Q7
CisgICAgYm9vbCBpc0NhbGxhYmxlKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZN
JiwgQ2FsbFR5cGUmLCBDYWxsRGF0YSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihW
TSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYsIENvbnN0cnVjdFR5cGUmLCBD
b25zdHJ1Y3REYXRhJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZTY1NzhhZWVmZjY5YzFjZmRi
ZWJlYWJhZDgwYWY3Li42MmY5ZDI0ZjE1ZDA3MjQ1YWQ3NzZjNDg3OWQyMDdmMTU1N2NhYWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKQEAgLTgyNyw2ICs4MjcsMTMgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGdW5jdGlvbihW
TSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGFzQ2VsbCgpLT5pc0Z1bmN0aW9uKHZtKTsKIH0KIAor
aW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNvbnN0Cit7CisgICAgQ2Fs
bFR5cGUgdW51c2VkVHlwZTsKKyAgICBDYWxsRGF0YSB1bnVzZWREYXRhOworICAgIHJldHVybiBp
c0NhbGxhYmxlKHZtLCB1bnVzZWRUeXBlLCB1bnVzZWREYXRhKTsKK30KKwogaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0sIENhbGxUeXBlJiBjYWxsVHlwZSwgQ2FsbERhdGEm
IGNhbGxEYXRhKSBjb25zdAogewogICAgIGlmICghaXNDZWxsKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGU4YjIzY2U1OTlkMzYyZGM2NWYzM2Y4ZWYyM2FkOGY1
ZDZkOTcxMWIuLmIyNTAzNTY5Yzg0MjI1NjAxMTQxYTgwY2Y1OTg0OGY1ZDY3M2I3NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC02MCwxMyArNjAsMTMgQEAgaW5s
aW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAvLyBTcGVjaWZpYyB0eXBlIG92ZXJsb2Fkcy4K
ICNkZWZpbmUgRk9SX0VBQ0hfSlNfRFlOQU1JQ19DQVNUX0pTX1RZUEVfT1ZFUkxPQUQobWFjcm8p
IFwKICAgICBtYWNybyhKU0ltbXV0YWJsZUJ1dHRlcmZseSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1
dHRlcmZseVR5cGUsIEpTVHlwZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlKSBcCi0gICAgbWFj
cm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpTVHlwZTo6
SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTU3RyaW5nSXRlcmF0b3IsIEpTVHlw
ZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUpIFwK
ICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0T2JqZWN0VHlwZSkgXAog
ICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlLCBKU1R5cGU6
OkZpbmFsT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6SlNGdW5j
dGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhJbnRlcm5hbEZ1
bmN0aW9uLCBKU1R5cGU6OkludGVybmFsRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkludGVybmFsRnVu
Y3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwgSlNUeXBlOjpBcnJheVR5cGUsIEpTVHlw
ZTo6RGVyaXZlZEFycmF5VHlwZSkgXAorICAgIG1hY3JvKEpTQXJyYXlJdGVyYXRvciwgSlNUeXBl
OjpKU0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUpIFwKICAg
ICBtYWNybyhKU0FycmF5QnVmZmVyLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSwgSlNUeXBlOjpB
cnJheUJ1ZmZlclR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlldywgRmlyc3RUeXBl
ZEFycmF5VHlwZSwgTGFzdFR5cGVkQXJyYXlUeXBlKSBcCiAgICAgbWFjcm8oSlNQcm9taXNlLCBK
U1R5cGU6OkpTUHJvbWlzZVR5cGUsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDI2YWEw
ZDdjNmVkZmE2M2UzYzhmZjYyMDhmNjI1ZjU3MDM2ODczZjAuLjExNzNhYTA4OGRjYjc2YzA0ZmU0
YjVmYzBiMWE0OTM5MzM5MWU3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU1OSwxMCArNTU5LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1
bmN0aW9uPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcu
c3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7CiAgICAgICAg
IH0pOwotICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigKLSAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52
bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBB
cnJheVZhbHVlc0ludHJpbnNpYykpOwotICAgICAgICB9KTsKKyAgICBtX2FycmF5UHJvdG9WYWx1
ZXNGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
dm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcywg
QXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKIAogICAgIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9u
LmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBp
bml0KSB7CkBAIC0xNzQ5LDcgKzE3NDYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVj
dC0+bV9wYXJzZUludEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cGFyc2VGbG9hdEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09iamVjdC0+
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24pOwogICAgIHRoaXNP
YmplY3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDJjMjhlOGJmNmNhNGU3
M2I1NmNkYTM3NzRiMjE3NjQ3MWE5ZjA1MTMuLjBhY2RmYWVkOWU5YWRmYzIzOGFiN2MyMzQyZTM1
NDkzMGFhNjkyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtMjk5LDcgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9uOwogCiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9Ub1N0
cmluZ0Z1bmN0aW9uOwotICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgSlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29s
dmVGdW5jdGlvbjsKQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiog
ZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KHRoaXMpOyB9
CiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0OwogICAgIEpT
RnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBh
cnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1
ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVz
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQo
KTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVu
Y3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0
aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpAQCAtNjE5LDYgKzYxOSw3IEBAIHB1YmxpYzoKICAg
ICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9uTWFpblRocmVh
ZCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1i
b2xGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhlY0Z1bmN0
aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRv
ckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCk7IH0K
ICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQogICAgIEdldHRlclNl
dHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIq
IHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTk2OTRkMDEyN2JhZTFjZWE1Y2Y2M2ZhOWNk
ZDk3NzAwMGNiN2FhNC4uZmI0MGZjOTUwNzZhYzUwYTBhMzk0ZjU4YzUzZWIxY2JkYjA2ZmM3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC0xMTks
NiArMTE5LDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkg
PSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAwMCwgTm9y
bWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRhaWxEZWxl
dGVkRnJhbWVzU2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCisgICAgdihCb29s
LCB1c2VJdGVyYXRpb25JbnRyaW5zaWNzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICBc
CiAgICAgdihCb29sLCB1c2VPU0xvZywgZmFsc2UsIE5vcm1hbCwgIkxvZyBkYXRhTG9nKClzIHRv
IG9zX2xvZyBpbnN0ZWFkIG9mIHN0ZGVyciIpIFwKICAgICAvKiBkdW1wRGlzYXNzZW1ibHkgaW1w
bGllcyBkdW1wREZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KEJvb2wsIGR1bXBEaXNhc3NlbWJs
eSwgZmFsc2UsIE5vcm1hbCwgImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFsbCBKSVQgY29tcGlsZWQg
Y29kZSB1cG9uIGNvbXBpbGF0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKaW5kZXggNzY0YWQwNjVhYzAxMWUzM2MzMjM4Y2Q5ZGE5NTM5YzE1ODM5
MjNlNS4uOWMyY2U3YWZhZTZlMzhlN2E2MDgwMjZmNTE3NzExMGUzYzg1NTYyZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjY4LDYgKzEyNjgs
OCBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1w
Q29udGV4dCogY29udGV4dCkgY29uc3QKIHZvaWQgU3RydWN0dXJlOjpkdW1wQnJpZWYoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKSBjb25zdAogewogICAgIG91dC5wcmlu
dCgiJSIsIHN0cmluZywgIjoiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBpZiAoaW5k
ZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykKKyAgICAgICAgb3V0LnByaW50KCIsIiwg
SW5kZXhpbmdUeXBlRHVtcChpbmRleGluZ1R5cGUoKSkpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6
ZHVtcENvbnRleHRIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9FbnVt
Q2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCmluZGV4IDM1N2JhMmZhMmY3OTI5YTZhOTk4YTlhNGVm
MTRkMmJlNTc1NDYzNzEuLjU2YWJjNGI1M2VjOWZhYjYwNzViZjZkMmViYmJlZDFmMzNjZGY5ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgK
KysrIGIvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaApAQCAtNTks
MyArNTksOSBAQAogCiAjZGVmaW5lIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9F
TlVNX0NMQVNTX1dJVEhfSU5URUdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9SRUxBVElPTkFMX09Q
RVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8
VD4pCiAKKyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1Nf
V0hFTihlbnVtTmFtZSwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9S
X0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHwsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAg
ICBPVkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCAmLCBlbmFi
bGVFeHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hF
TihlbnVtTmFtZSwgXiwgZW5hYmxlRXhwcmVzc2lvbikgXAorCisjZGVmaW5lIE9WRVJMT0FEX0JJ
VFdJU0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhlbnVtTmFtZSkg
T1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwg
c3RkOjppc19pbnRlZ3JhbF92PFQ+KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5ZGM5ODljNTViNDM0ZWZmNmZkM2VmNGRhM2E1MjNjN2Zk
NTczYWIyLi45ZjdkYzA3YjVlMGEyN2ZhMGFmYmI1Y2E3MWNkOWQ5NTFmM2FiMDIzIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU5IEBACisyMDIwLTA0LTE1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBmb3Itb2YgaXRlcmF0aW9uIGZvciBKU0Fy
cmF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
aWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qczoKKyAgICAgICAg
KGZvbyk6CisgICAgICAgICogc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanM6CisgICAgICAgIChj
YXRjaCk6CisgICAgICAgIChpdGVyLnJldHVybik6CisgICAgICAgIChpdGVyYXRvckludGVyZmFj
ZUVycm9yVGVzdCk6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJldHVybik6
CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybik6CisgICAgICAgICog
c3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanM6IEFkZGVkLgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAu
anM6IEFkZGVkLgorICAgICAgICAoZmluZCk6CisgICAgICAgIChpLmxldC52Lm9mLmZpbmQpOgor
ICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoc2V0IGFkZCk6CisgICAgICAgICogc3Ry
ZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5uZXh0LnJldHVybi5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJs
ZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1m
b3Itb2YtdmFsdWUtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5l
eHQucmV0dXJuLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAg
ICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1
cm5zLW5vbi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5s
ZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVz
cy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6IEFkZGVkLgorICAg
ICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQg
ZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAq
IHN0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJv
bC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAo
aS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZv
ci1vZi1oZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6Cisg
ICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQgdmFsdWUpOgorICAgICAgICAoaS5sZXQuaXRlcmFi
bGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6Cisg
ICAgICAgIChpLmNhdGNoKToKKwogMjAyMC0wNC0xNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBTa2lwIGFsbCBsb3cgZXhlY3V0YWJsZSBtZW1vcnkgd2FzbSB0
ZXN0cyBvbiBhcm02NApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9m
LWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1v
Zi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMKaW5kZXggNTVlY2MwYmZjZjkxOWNhY2FlN2ZkMTVk
ZGI0MGIxNGZkY2E5NGVkYS4uMjAxMmI5MTI4NTBmNTgxMTY3ZmJkMzEwNTA1OWI3NmQ3NjYzYjZk
OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJy
YXktZW50cmllcy5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0
ZS1hcnJheS1lbnRyaWVzLmpzCkBAIC0zLDEwICszLDEyIEBAIGZ1bmN0aW9uIGZvbygpIHsKICAg
ICB2YXIgYXJyYXkgPSBbXTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1MDAwOyBpKyspCiAg
ICAgICAgIGFycmF5LnB1c2goaSk7Ci0gICAgCisKICAgICB2YXIgcmVzdWx0ID0gMDsKLSAgICBm
b3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgYXJyYXkuZW50cmllcygpKQorICAgIGZvciAodmFyIFtr
ZXksIHZhbHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpIHsKKyAgICAgICAgcHJpbnQoa2V5ICsgIiAi
ICsgJHZtLmluZGV4aW5nTW9kZShhcnJheSkpOwogICAgICAgICByZXN1bHQgKz0ga2V5ICsgdmFs
dWUgKyBhcnJheVtrZXldOworICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKaW5kZXggZmQ2NDEzZmUzYjVlOTAzYWZmZTM4MDNmZDAw
NGMwY2IxZjFjNjRmMy4uZDNkMWJkN2U4NThlODc0ZmJkMTEzZDgyZjkyMTFlYTRiZDVlZjdiNSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCkBAIC0yMiw3ICsyMiw3IEBAIGZvciAodmFy
IHZhbHVlIG9mIGl0ZXIpIHsKICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2
YWx1ZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMg
Y2FsbGVkLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAK
IApAQCAtNTMsNyArNTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAo
U3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0K
IGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxs
ZWQuIjsKQEAgLTEwOCwxMCArMTA4LDEwIEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewog
ICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1cCBuZXh0LiIpCi0gICAgICAg
IHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7
CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxl
ZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAg
LTEzNiw3ICsxMzYsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3Ry
aW5nKGUpICE9PSAiRXJyb3I6IGxvb2tpbmcgdXAgcmV0dXJuLiIpCi0gICAgICAgIHRocm93ICJF
cnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiAKIApA
QCAtMTY1LDEwICsxNjUsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYg
KFN0cmluZyhlKSAhPT0gIkVycm9yOiBuZXh0IGlzIGNhbGxlZC4iKQotICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYg
KHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC0xODMsNyAr
MTgzLDcgQEAgdmFyIGl0ZXIgPSB7CiAgICAgfSwKICAgICByZXR1cm46IGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1
cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxs
ZWQiKTsKICAgICB9CiB9OwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdHJ5IHsKICAgICB9CiB9IGNh
dGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0
aW9uLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7Cisg
ICAgICAgIHRocm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6
IHJldHVybiBpcyBub3QgY2FsbGVkLiI7CkBAIC0yMTAsNyArMjEwLDcgQEAgdmFyIGl0ZXIgPSB7
CiAgICAgfSwKICAgICByZXR1cm46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJuQ2FsbGVk
ID0gdHJ1ZTsKLSAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKICAgICB9CiB9OwogdHJ5
IHsKQEAgLTIxOCw4ICsyMTgsOCBAQCB0cnkgewogICAgICAgICBicmVhazsKICAgICB9CiB9IGNh
dGNoIChlKSB7Ci0gICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gaXMgY2FsbGVk
LiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAg
aWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gd2FzIGNhbGxlZCIpCisgICAgICAgIHRo
cm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBp
cyBub3QgY2FsbGVkLiI7CkBAIC0yNTUsMTAgKzI1NSwxMCBAQCBmdW5jdGlvbiBpdGVyYXRvcklu
dGVyZmFjZUVycm9yVGVzdChub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAgICAgfSBj
YXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwog
ICAgIH0KICAgICBpZiAocmV0dXJuQ2FsbGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVy
biBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxl
ZCIpOwogfQogCiBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJldHVybihub3RJ
dGVyYXRvclJlc3VsdCkgewpAQCAtMjgyLDcgKzI4Miw3IEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50
ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAg
ICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWlu
YXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhy
b3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmICghcmV0dXJu
Q2FsbGVkKQogICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVkLiI7CkBA
IC0zMTMsNyArMzEzLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1
cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAg
ICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIlR5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0IGludGVy
ZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBl
cnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYg
KCFyZXR1cm5DYWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxs
ZWQuIjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1
ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI0OThhNjA0MzNkZjJkYzE3NTNhOWQ3Yjg4Yjk2YmQzMjQwMDZmODEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVzLmpzCkBA
IC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIHRlc3QoYXJyYXkpIHsKKyAgICBsZXQgc3VtID0gMDsK
KyAgICBmb3IgKGxldCB2IG9mIGFycmF5KSB7CisgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gIm51
bWJlciIpCisgICAgICAgICAgICBzdW0gKz0gdjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmV0dXJuIHN1bTsKKyAgICB9Cit9Citub0lubGluZSh0ZXN0KTsKKworbGV0IGFycmF5ID0gWzEs
MiwzLDQsInN0cmluZyJdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGlm
ICh0ZXN0KGFycmF5KSAhPT0gMTApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCisK
K2FycmF5ID0gWzEsMiwzLDQse31dCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7Cisg
ICAgaWYgKHRlc3QoYXJyYXkpICE9PSAxMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Yt
b24tbWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9u
LW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MzhiN2VlODE0MjRhMmQyZjUzOGNlN2IyMDU5ZDhkNmU0NThl
NGJhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5p
bmctZm9yLW9mLW9uLW1hcC5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiAqZmluZChub2Rl
cywgcCkKK3sKKyAgICBmb3IgKGxldCBbYXJyYXldIG9mIG5vZGVzKSB7CisgICAgICAgIGlmICgh
YXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUoZmluZCk7CisKK2xldCBtYXAgPSBu
ZXcgTWFwKCk7Citub0lubGluZShtYXBbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQpOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBtYXAuc2V0KFsxLDIsNCw1LDVdLCB7fSk7CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmb3IgKGxldCB2IG9mIGZpbmQo
bWFwLCBpICUgMikpIHsgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWNvbnRhaW5pbmctZm9yLW9mLW9uLXNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1j
b250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJmMzI3MzkwZDczNzVhMjIw
MmFlNTlhMTEyNDY1Njk4Y2I2ZWFiNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKQEAgLTAsMCArMSwyMyBAQAor
ZnVuY3Rpb24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgYXJyYXkgb2Ygbm9kZXMp
IHsKKyAgICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2ID09PSBwKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAgICB9Cit9Citub0lubGluZShmaW5k
KTsKKworbGV0IHNldCA9IG5ldyBTZXQoKTsKK25vSW5saW5lKHNldFtTeW1ib2wuaXRlcmF0b3Jd
KCkubmV4dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKQorICAgIHNldC5hZGQoWzEs
Miw0LDUsNV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGZv
ciAobGV0IHYgb2YgZmluZChzZXQsIGkgJSAyKSkgeworICAgICAgICBpZiAoaSAlIDIgIT09IDEp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vIHJlc3VsdCBzaG91bGQgaGF2ZSBiZWVu
IHByb2R1Y2VkIGhlcmUiKTsKKyAgICAgICAgaWYgKCEodiBpbnN0YW5jZW9mIEFycmF5KSkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigicmVzdWx0IHdhcyBub3QgYW4gYXJyYXkiKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1n
ZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWI0YzQ5YzkzYjI5ZmNiMGY3MTBjNmM4MmQxZmQ4ODAwMWEyMmUyNQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRl
ci5qcwpAQCAtMCwwICsxLDIzIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7Cisg
ICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAg
ICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgZ2V0IGRv
bmUoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbmFsVGllcigpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgRm9yY2VPU1IoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAg
ICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJu
KCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAg
Zm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIHsKKyAgICB9CisgICAgaWYgKHJl
dHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzIGIvSlNUZXN0cy9z
dHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzA5NmVl
MDNlMTUyNTczYWVkYzY0ZDA0MzlmYjJiZjIyYzY0MTViCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpAQCAtMCwwICsxLDIx
IEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0IHJldHVybkNhbGxl
ZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgZG9uZTogMCwKKyAgICAg
ICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgZG9uZTog
dGhpcy5kb25lKyssCisgICAgICAgICAgICAgICAgZ2V0IHZhbHVlKCkgeyBpZiAoaXNGaW5hbFRp
ZXIoKSkgRm9yY2VPU1IoKTsgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAg
ICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigp
IHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZv
ciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQorICAgIGlmIChyZXR1
cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYyYmQzMmFkZDdjYzNiYTM0MzI1NGRhNzEwOGU1MTlmZjc1YjMyNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5zLW5vbi1v
YmplY3QuanMKQEAgLTAsMCArMSwxNiBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkg
eworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7Cisg
ICAgICAgIG5leHQoKSB7IHJldHVybiAxOyB9LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgp
IHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1
ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPSAiVHlwZUVycm9yOiBJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKKyAgICAgICAgICAgIHRocm93
IGU7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRl
ci1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdl
dHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YTE0MmM4YTZjNTRmNDc2ZWMw
MzlhMTRlOWUyZDNlN2I5NmRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90
aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNCBA
QAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAg
bGV0IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7
IHJldHVybiB0aGlzOyB9LAorICAgICAgICBnZXQgZG9uZSgpIHsKKyAgICAgICAgICAgIHRocm93
IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0
b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAg
cmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJ5IHsKKyAgICAg
ICAgZm9yIChhIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAgICAgICB0
aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1uZXh0
LWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4t
Zm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjE5NGZkN2NhNWFjNTlhZDY5NjE5NDJmODYy
N2I2MGE1YWEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJv
bS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNCBAQAorZm9yIChsZXQgaSA9
IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxl
ZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICB0
aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3ltYm9sLml0
ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAg
ICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIG5vSW5saW5l
KGl0ZXJhYmxlLm5leHQpOworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcm9ycigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBp
ZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFk
ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2Yt
aGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwODc4ODM1OGU0ZWQzMDYxMmFjYzZmMmVmM2EzMGQ4ZDU2
NjY3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVl
LWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2ZvciAobGV0IGkg
PSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1cm5DYWxs
ZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7IHJldHVy
biB0aGlzOyB9LAorICAgICAgICBkb25lOiBmYWxzZSwKKyAgICAgICAgZ2V0IHZhbHVlKCkgewor
ICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4o
KSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsK
KyAgICB0cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFibGUpIHsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgICAgIH0KKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7
CisgICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396558</attachid>
            <date>2020-04-15 12:26:21 -0700</date>
            <delta_ts>2020-04-15 12:58:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415122617.patch</filename>
            <type>text/plain</type>
            <size>264522</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4zMDU4MTc0ZGU4NjljYzhi
Nzc4MGUxOGQ0OTNjN2VjNmM1MjE1MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTkgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzLCBGbHVzaGluZy9QaGFudG9taW5nCisg
ICAgICAgIHZhbHVlcyBhdCB0aGUgZW5kIG9mIGVhY2ggYmxvY2suCisKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9y
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5o
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6CisgICAg
ICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjphcnJheVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9m
aWxlRm9yKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6
dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6
CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0
aW9uRm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVn
aXN0ZXJzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2Zp
bGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3Ry
dWN0aW9uLmg6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgor
ICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJh
c2VJbnN0cnVjdGlvbjo6d2lkZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRp
b25Nb2RlTWV0YWRhdGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N1cGVyU2FtcGxlci5oLgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAg
ICAoSlNDOjppc1N1YnR5cGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
Q29udGFpbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAo
SlNDOjpTdXBlclNhbXBsZXJTY29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmljRW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJc0VtcHR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ck9wZW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVy
aWNOZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdl
bmVyaWNOZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvckdlbmVyaWNDbG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0QXN5bmNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmZvckFsbFZhbHVlcyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3Rh
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAq
IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
RkdTaW1wbGlmaWNhdGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6
REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICog
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxl
dmVsKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNp
emUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1i
ZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3Bl
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToK
KyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpM
YXp5SlNWYWx1ZTo6c3BlY3VsYXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdW
YWxpZGF0ZS5jcHA6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5l
cmF0b3IvTWV0YWRhdGEucmI6CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmNsb29wU3RhY2spOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2hlY2tlZFJldHVy
bik6CisgICAgICAgIChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFB1dENhbGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAg
ICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9v
cGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9K
SVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNo
ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNo
ZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2tw
b2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhp
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgor
ICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChK
U0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0
b3JfbmV4dF90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rf
bmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgor
ICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5j
cHA6CisgICAgICAgIChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAg
KiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojph
cnJheVByb3RvVmFsdWVzRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKIDIwMjAt
MDQtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IERlYnVnZ2VyOiBhZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBleHByZXNz
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGUwMzk0YjdiZTViNWJiMDE4YjRlZmJjYzk4NWY1Yjc4ZGEyMjY4NmQuLjE5NmM0
MjJmNDBjMDhhMWVjMTcxMGJmMDE0Y2IxODk5YzBjODE4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9FbnVt
Q2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oOgorCiAyMDIwLTA0LTE0ICBQZW5nIExpdSAgPHBlbmcu
bGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgaW50ZXJmYWNlIEFWQXVkaW9Sb3V0aW5n
QXJiaXRlciBmb3IgTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggNTJiNDZlY2M5ZTI4
OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4uNWE5YTBiNDQ0MTEwNzIzZDczOWEzMjUwMjg1
ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtNDAsOCArNDAsOCBA
QCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltzZGs9bWFjb3N4Kl0gPSAtV2wsLW9yZGVyX2Zp
bGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdDQ19QUkVGSVhfSEVBREVSID0gSmF2YVNjcmlw
dENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotT1RIRVJf
Q0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87Ci1P
VEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4
PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6
ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ1BMVVNQTFVTRkxBR1Mg
PSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9
dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIgJChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElO
Rk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RBTExfUEFUSCA9ICQoSkFWQVNDUklQVENP
UkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUw
MTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4MWNjMjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5
Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xv
YmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsK
IAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkw
MEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggKi87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgw
MDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmgg
Ki87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3
MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLzsgfTsKKwkJNTNENDFF
QzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5
ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dh
c21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAq
LzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3
MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0
aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBC
MTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQ
bGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBC
eXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0
ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4
MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVzZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0
YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NERCMURBRjA4QUIw
MEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REQxREFGMDlBMDAwQjky
Nzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVz
c1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0
OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUwRTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJCQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUg
LyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi8sCiAJCQkJMEY2NjZFQkUxODM1NjZGOTAw
RDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKKwkJCQk1M0Qz
NTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggKi8sCiAJCQkJRTNE
MjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUz
RDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNE
MzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4
NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJD
MDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4
MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJ
CTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJ
CQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJ
CQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
UHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
Ki8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAw
QkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdB
OUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQg
LyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4REFFQjFEMzhE
MDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUx
NEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAq
LywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8q
IElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0
ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2
RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3Rh
dHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRl
cmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAw
NTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2JmNWJhNWViZWYwZWM4Li4xNTM5N2U4YjdmNDhh
ODRmYjI3ZjExZDJmMTM3MWUwZTJhMzAxY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjg2LDYgKzY4Niwy
MCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7
CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBM
b2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChsb2dp
Y2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5t
X3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRy
LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAg
ICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBvcjY0KGRlc3Qs
IHNyYywgZGVzdCk7CkBAIC0xNjAzLDcgKzE2MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAg
fQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMs
IG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CkBAIC0xNjE4LDcgKzE2MzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdp
c3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCog
YWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50
OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBpZiAoIWltbTgubV92YWx1ZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCmluZGV4IDhjNjk3OWJiOWIyZmRlYjA0Y2EwMjZlNzY2ZDIwOGI3M2EwNjNmMmUuLjJhMWRk
ZWRlZTM2ZGJlM2NkZTU3MmY0ODYwNWE0NjRjODBiNmU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpi
cmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IxNjsKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3I4OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpzdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKQEAgLTk2LDYgKzk3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgb3IxNihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsK
ICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRy
KSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBvcjgoaW1tLCBBZGRyZXNzKHNjcmF0Y2hS
ZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IGZiMzQ4YjkyZGQyNjIzYzA2NTFl
ZmQyZTRhOGMwZThkZTIzN2IyMDEuLjk0MjY1N2M2MmYwNzQ5Y2EwNWM0ZWVlNGQ2N2I5NWZlNjQ1
NWQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKQEAgLTIwNywxMCArMjA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3V0T2ZCb3VuZHMo
KSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9vbCogYWRkcmVzc09mT3V0T2ZCb3Vu
ZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQogICAgIAotICAgIHZvaWQgb2JzZXJ2ZVN0
cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICB9CisgICAgdm9pZCBvYnNlcnZlU3Ry
dWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlE
ID0gc3RydWN0dXJlSUQ7IH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAK
ICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3Ry
dWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCmluZGV4IDFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIuLmUyODhh
OTk3MjAwOGJjOTUyOTdmNThhZjA5NTlkM2ZjZDk0MGRkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzQsNiArMzQsNyBAQCB0eXBl
cyBbCiAgICAgOkdldEJ5VmFsSGlzdG9yeSwKICAgICA6R2V0UHV0SW5mbywKICAgICA6SW5kZXhp
bmdUeXBlLAorICAgIDpJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgOkpTQ2VsbCwKICAgICA6
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsCiAgICAgOkpTR2xvYmFsT2JqZWN0LApAQCAtMTE2
Miw2ICsxMTYzLDU5IEBAIG9wIDpnZXRfcmVzdF9sZW5ndGgsCiAgICAgICAgIG51bVBhcmFtZXRl
cnNUb1NraXA6IHVuc2lnbmVkLAogICAgIH0KIAorIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgaXRl
cmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0Owor
IyBGb3IgYnVpbHRpbiBpdGVyYXRvcnMsIGhvd2V2ZXIsIHRoaXMgaGFzIHNwZWNpYWwgYmVoYXZp
b3Igd2hlcmUgbmV4dCBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZSwgd2hpY2gKKyMgaW5kaWNhdGVz
IHRoYXQgd2UgYXJlIGluIGEga25vd24gaXRlcmF0aW9uIG1vZGUgdG8gb3BfaXRlcmF0b3JfbmV4
dC4KK29wIDppdGVyYXRvcl9vcGVuLAorICAgIGFyZ3M6IHsKKyAgICAgICAgaXRlcmF0b3I6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBz
eW1ib2xJdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYWJsZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgfSwKKyAgICBt
ZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgY2Fs
bExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgaXRlcmF0b3JQcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCisgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
KyAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICB9LAorICAgIGNoZWNrcG9p
bnRzOiB7CisgICAgICAgIHN5bWJvbENhbGw6IG5pbCwKKyAgICAgICAgZ2V0TmV4dDogbmlsLAor
ICAgIH0KKworIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgbmV4dFJlc3VsdCA9IG5leHQuQGNhbGwo
aXRlcmF0b3IpOyBkb25lID0gbmV4dFJlc3VsdC5kb25lOyB2YWx1ZSA9IGRvbmUgPyB1bmRlZmlu
ZWQgOiBuZXh0UmVzdWx0LnZhbHVlOworb3AgOml0ZXJhdG9yX25leHQsCisgICAgYXJnczogewor
ICAgICAgICBkb25lOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIG5leHQ6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAg
ICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAg
aXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBH
ZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwKKyAgICB9
LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBuaWwsCisgICAgICAg
IGdldERvbmU6IG5pbCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9CisKIG9wIDp5aWVs
ZCwKICAgICBhcmdzOiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLApAQCAt
MTI5MCw2ICsxMzQ0LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9jYXRpb24KIG9wIDpv
cF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9pZF9yZXR1cm5fbG9j
YXRpb24KIG9wIDpvcF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9y
X29wZW5fcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRp
b24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZV9ub190bHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBkOGZmNmM3OTg5NmFm
ZDAwZTIwY2M0Mjc3OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhkNDQyMDQwOGNhYzUw
YTM4ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIzMSwxMyBAQCBCaXRt
YXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChjb25zdCBD
b2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChPcENhbGxWYXJhcmdz
OjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJlc3VsdC5zZXQoT3BJ
dGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ3
NWU0YTA0NGM5MjBmYTA5Y2Y5MzA2MDBiZjMxNjAzNDFjMTZmNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaApAQCAt
MCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9m
aWxlKiBhcnJheVByb2ZpbGVGb3JJbXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNp
Z25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRl
eCk7CisgICAgcmV0dXJuICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZTsK
KworICAgIC8vIEluc2VydCBwZXIgbWV0YWRhdGEgb3ZlcnJpZGVzIGhlcmUgd2hlbiB3ZSBuZWVk
IHRoZW0uCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVj
b2RlTWV0YWRhdGE+Citib29sIGhhc0FycmF5UHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIHJldHVybiBhcnJheVBy
b2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGVGb3Io
Qnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sK
KyAgICBBU1NFUlQoaGFzQXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgp
KTsKKyAgICByZXR1cm4gKmFycmF5UHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJ
bmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1ZVBy
b2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVu
c2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludElu
ZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9w
X2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAg
ICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRhZGF0YS5t
X2l0ZXJhdG9yUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDog
cmV0dXJuICZtZXRhZGF0YS5tX25leHRQcm9maWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICB9IGVsc2UgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7Cisg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRv
ck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGU7
CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiAmbWV0YWRhdGEu
bV9kb25lUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJl
dHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgCisgICAgICAgIHJl
dHVybiAmbWV0YWRhdGEubV9wcm9maWxlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29k
ZU1ldGFkYXRhPgorYm9vbCBoYXNWYWx1ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0
YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gdmFsdWVQcm9m
aWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yKEJ5
dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7Cisg
ICAgQVNTRVJUKGhhc1ZhbHVlUHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7
CisgICAgcmV0dXJuICp2YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5k
ZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK09wZXJhbmQgZGVzdGluYXRp
b25Gb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgs
IEpJVFR5cGUgdHlwZSA9IEpJVFR5cGU6Ok5vbmUpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNr
cG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3Bf
aXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAg
ICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gYnl0ZWNvZGUubV9p
dGVyYXRvcjsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuIGJ5
dGVjb2RlLm1fbmV4dDsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZSBpZiBjb25z
dGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAg
IHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmNvbXB1dGVOZXh0OiB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBKSVRUeXBlOjpERkdKSVQg
fHwgdHlwZSA9PSBKSVRUeXBlOjpERkdKSVQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJh
bmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV92YWx1ZTsgLy8gV2UgcmV1c2UgdmFsdWUgYXMgYSB0ZW1wIGJlY2F1c2UgaXRz
IGVpdGhlciBub3QgdXNlZCBpbiBzdWJzZXF1ZW50IGJ5dGVjb2RlcyBvciB3cml0dGVuIGFzIHRo
ZSB0ZW1wIG9iamVjdCBpcyBraWxsZWQuCisgICAgICAgIH0KKyAgICAgICAgY2FzZSBPcEl0ZXJh
dG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgY2FzZSBP
cEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBieXRlY29kZS5tX3ZhbHVlOworICAgICAg
ICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2Rz
dDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2NhdGlvbnMKKwordGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRm9yKGNvbnN0IEJ5dGVjb2RlJiBi
eXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShj
aGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09
IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBP
cEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX3N5
bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJ
RCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXgg
PT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2Rl
Lm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fY2FsbGVlOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3Vuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2tw
b2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlm
IGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAg
ICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2Fs
bCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2Rl
OjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3Bv
aW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJu
IDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2FyZ2M7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlmZl90IHN0YWNrT2Zmc2V0SW5SZWdpc3Rl
cnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludElu
ZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0
ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAg
QVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7Cisg
ICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIGJ5dGVjb2Rl
Lm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6
Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9p
bnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhdG9yLm9m
ZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9hcmd2OworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorTExJbnRDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hl
Y2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAg
IHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1NjI2YzEzLi5hNWE1MDdl
ZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTI1OSw2ICsyNTksOSBA
QCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNj
b3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAgVVNFUyhPcFlpZWxkLCBnZW5lcmF0b3Is
IGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9yT3Blbiwgc3ltYm9sSXRlcmF0b3IsIGl0
ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQsIGl0ZXJhdG9yLCBuZXh0LCBpdGVyYWJs
ZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkOgogICAgICAgICBoYW5kbGVO
ZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU3ByZWFkPigpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwgdGhyb3duVmFsdWUpCiAKKyAgICBERUZT
KE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkKKyAgICBERUZTKE9wSXRlcmF0b3JOZXh0
LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50ZXI6IHsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIyNTkxOTQ3NzY4NTU3ZWE4N2E2NTdmMjNh
NjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2OWU5NjM0MTc1MTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtNDAsMTgg
KzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxsTGlua0luZm86OkNhbGxUeXBlIENhbGxM
aW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgaWYgKG9wY29k
ZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKQorICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNhc2Ugb3Bf
dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAgICByZXR1cm4gVGFpbENhbGxWYXJh
cmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2FzZSBvcF9jYWxsX2V2YWw6
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoK
ICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJn
cykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ2FsbFZhcmFy
Z3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkKKworICAgIGNhc2Ugb3BfY29u
c3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0OwotICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CiAg
ICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF90
YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgcmV0dXJuIFRhaWxD
YWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwotICAgIHJldHVybiBUYWls
Q2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2FsbDsKIH0KIAogQ2Fs
bExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjEzZDE3MzRhMDJjNThhMzIxNzU5MjVk
Mjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEzNzhhZWJlZjkwMjU2ZjExNWVmMTdlM2Ix
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQgogICAgIGNh
c2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFz
PE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgY2FsbExp
bmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShwcm9m
aWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9p
dGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9w
SXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOwor
ICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdlNjE2MGI2NTNlN2E0ZTczMDRiMi4uYTRh
N2M1YWFiZjA1NmIzODMxNDQ4NDE4ZjkxZGE4ODU0ZjdiYTdjNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQ
cm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtOTcsNiArOTgs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CiAKKwogI2lmIEVOQUJMRShBU1NF
TUJMRVIpCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNlbmRpZgpAQCAtNTgz
LDYgKzU4NSwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wQ2F0
Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAKKyAgICAgICAgY2FzZSBv
cF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wSXRl
cmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
b3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcEl0
ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BS
ZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsNiArMTI0MCwzMyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDE4CiAgICAgICAgIC8vIFdlIG5lZWQgdG8g
YWRkIG9wdGltaXphdGlvbnMgZm9yIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNf
ZGVjbF9pbl9ldmFsIHRvIGRvIGxpbmsgdGltZSBzY29wZSByZXNvbHV0aW9uLgogCisgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5
SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFN0
cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVs
dE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZt
LmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVy
ZUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgaXRlcmF0
b3Igb3BlbiBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAgICAgICAgICAgIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRD
YWNoZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIH0pOworCisKKyAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eworICAgICAgICAgICAgYXV0byBjbGVhcklmTmVlZGVkID0gWyZdIChHZXRCeUlkTW9kZU1ldGFk
YXRhJiBtb2RlTWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1v
ZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1vZGVNZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVj
dHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBpdGVy
YXRvciBuZXh0IExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOworICAgICAgICAgICAgICAgIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdl
dEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
Y2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAg
Y2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgfSk7
CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9
IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMzEs
NyArMTI3NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkK
ICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRC
eUlkQ2FjaGUobWV0YWRhdGEpOworICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM2
OSwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAg
ICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24g
PSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAgICBp
ZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUp
IHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkg
YWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8
T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRh
ZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBvcGVuIHByb3Bl
cnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNjZXNz
LiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0byBj
bGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3VyZSBv
dXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4uCisgICAgICAgICAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEo
dGhpcyk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVN
ZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVN
b2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMTAyLDEx
IEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29k
ZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0
aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJu
ICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFk
YXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4
MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5s
aW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVm
aW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0
byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5j
KG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENP
REVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisKKyAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZh
bHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNl
KTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0Pihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJl
c3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJv
ZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwg
ZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAgQEAg
dm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykK
IAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJU0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmlu
ZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4YzIuLjI4MmNmOGY0Mjdj
MWZiZWFiMjk2YTM1ODNiMDc5OTQxZGExMGVmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtODYsNiArODYsMzUgQEAgR2V0QnlTdGF0
dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9wX2dldF9ieV92YWw6CiAgICAgICAgIHJldHVybiBH
ZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9y
X29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9w
SXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVj
dGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisKKyAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9i
eV9pZF9wcm90b19sb2FkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5t
b2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3Rh
dHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRp
ZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7
CisgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4
dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0
YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBH
ZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRh
Lm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdl
dEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+dmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDogewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3Jt
YXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgKaW5kZXggMDg1YWU4ZDE5OTc2Yjg4NmYwMDE5Zjg1ZmE2N2IwMmJlMTRjZGE1ZS4uM2Q3
MGNkNTQzZWNmYWU5MDIyNTAyOTYwMWEwZDQwNWVjNjcxYjJkMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQg
PSA6OkpTQzo6T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJP
ZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJf
T0ZfQllURUNPREVfV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNv
ZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0PE9wY29kZUlE
PihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChu
dW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhN
ZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSBvcF93aWRl
MTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSBvcF93aWRlMzI7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3RocyA9IDo6SlND
OjpvcGNvZGVMZW5ndGhzOwpAQCAtNDEsNyArNDMsOSBAQCBzdHJ1Y3QgSlNPcGNvZGVUcmFpdHMg
ewogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSBXYXNt
T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfV0FTTV9X
SVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9m
Qnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9X
QVNNX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29kZXNX
aXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gd2FzbV93aWRlMTY7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3YXNtX3dpZGUzMjsKICAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gd2FzbU9wY29kZUxlbmd0aHM7
CkBAIC05OCwxMiArMTAyLDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5hcnJvdygpLT50
ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgT3Bjb2Rl
U2l6ZSB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRzPigp
KQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUzMjsKKyAgICAgICAgcmV0dXJu
IGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUxNiA6IE9wY29kZVNpemU6Ok5h
cnJvdzsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFk
YXRhOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJh
aXRzPgorICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hl
Y2twb2ludHM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3VudCgpIGNvbnN0CiAgICAgewpAQCAtMTM3
LDYgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUOjpkZWNvZGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPGNs
YXNzIFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRz
PgorICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCgoaXM8
VCwgVHJhaXRzPigpKSk7CisgICAgICAgIHJldHVybiBUKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2lnbmVkVHlwZSo+KHRoaXMgKyAod2lkdGgg
PT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8
Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgVCogY2FzdCgp
CiAgICAgewpAQCAtMTYxLDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNT
RVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8
T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KQEAgLTE2OSwxNCArMTk0LDE2IEBAIHB1
YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTMyPFRyYWl0cz4oKSk7Ci0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMy
Pio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KHRoaXMgKyAx
KTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJsaWMgQmFzZUluc3RydWN0
aW9uPE9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoSW5zdHJ1Y3Rpb24pID09
IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIHN0cnVj
dCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVJRD4gewog
fTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0gMSwgIlNvIHBvaW50ZXIg
bWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkNjkxOTMxYzZjNzk0OGU1NTdlNGY1NjkyM2FlMzQ5MGZl
YjllOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
dGVyYXRpb25Nb2RlTWV0YWRhdGEuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBK
U0MgeworCitlbnVtIGNsYXNzIEl0ZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKKyAgICBHZW5lcmlj
ID0gMSA8PCAwLAorICAgIEZhc3RBcnJheSA9IDEgPDwgMSwKK307CisKK2NvbnN0ZXhwciB1aW50
OF90IG51bWJlck9mSXRlcmF0aW9uTW9kZXMgPSAyOworCitPVkVSTE9BRF9CSVRXSVNFX09QRVJB
VE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVSR1JBTFMoSXRlcmF0aW9uTW9kZSk7CisKK3N0
cnVjdCBJdGVyYXRpb25Nb2RlTWV0YWRhdGEgeworICAgIHVpbnQ4X3Qgc2Vlbk1vZGVzIHsgMCB9
OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHNlZW5Nb2RlcykpID09IHNpemVv
ZihJdGVyYXRpb25Nb2RlKSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXgg
MmQxNDNiOWNmNjc0MzA1ZDQwYzkxZWIwYWUzNTEzMzEyNTY5NDQxZi4uYmJlMWY2N2ZmYmVmZThl
OGJiMTM2N2ViNmM3ZWQ2N2NiYWE4YWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTYwLDE0ICs2MCwzMSBAQCB2
b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUlu
dGVybmFsKFZNJiB2bSwgY29uc3QgRgogICAgIH0KIAogICAgIGF1dG8mIGluc3RydWN0aW9uID0g
bV9vd25lci0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZU9mZnNldC5nZXQoKSk7Ci0gICAg
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFk
YXRhKG1fb3duZXIuZ2V0KCkpKTsKKyAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgp
KSB7CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5t
X21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9v
cGVuOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGF1
dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRh
KG1fb3duZXIuZ2V0KCkpOworICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0
YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KIH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0
YSYgbWV0YWRhdGEpCit2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRh
ZGF0YSkKIHsKLSAgICAvLyBLZWVwIGhpdENvdW50Rm9yTExJbnRDYWNoaW5nIHZhbHVlLgotICAg
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgp
OworICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwogfQogCi0K
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDIyMGZmZjNlM2JmNTQzNDFlOTYxYzgyZGY4YzRl
OGM5MDAwNzM0YmUuLjFkNTk1N2VmZjgxMDkyYTFkYWJkZWU1MDI1Y2FjNWU2ZjM4Njc4MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnN0YWxsKFZNJik7CiAK
LSAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6TWV0YWRh
dGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2Rl
TWV0YWRhdGEmKTsKIAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBj
b25zdCB7IHJldHVybiBtX2tleTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKaW5kZXggMTg1MWI2M2M3Y2E2YWVmMmZiMzZiZjJmODdlOTJhMTllMGQ0MGMxOC4uYWE4
ODU5YWRkNjI4NjBmZmRhZGI0ZDIyMjg3YzM0YjA3Y2U1YjMzNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTQ4LDYgKzE0OCw5IEBAIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6OmdldE1TQlNldENv
bnN0ZXhwcihtCiAgICAgbWFjcm8oT3BUYWlsQ2FsbCkgXAogICAgIG1hY3JvKE9wQ2FsbEV2YWwp
IFwKICAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorICAgIG1hY3JvKE9wSXRlcmF0b3JPcGVuKSBc
CisgICAgbWFjcm8oT3BJdGVyYXRvck5leHQpIFwKKwogCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InR5cGUtbGltaXRzIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZDc2ZDRmYTdiNDZlOThiOWY5NzAwZGMzODYz
MGY0Li45NDY1OGIwOTZiZjE5M2M4N2NmZDcxYTlmNWJkZTE1ZjYxMzMyYTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTIwLDYg
KzEyMCwxNiBAQCBpbmxpbmUgYm9vbCBpc0FueVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9vbCBpc1N1YnR5cGVTcGVjdWxhdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7CisgICAgcmV0
dXJuICEodmFsdWUgJiB+Y2F0ZWdvcnkpICYmIHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBzcGVj
dWxhdGlvbkNvbnRhaW5zKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRl
Z29yeSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBjYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisK
IGlubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewog
ICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNDZWxsKSAmJiAhKHZhbHVlICYgflNwZWNDZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAppbmRleCA5
NjEwZGNlNWNkYmMzZWMwOWNlMzNiMWQ2YmNjNGIzZmY4YTZjM2M4Li5lOWJmOTUzMWY3YmE1OTU3
MzExMGUzMWE3YTQ0Y2QyMjhiNzU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC00OCw2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CiAgICAgfQogCisgICAgdm9pZCByZWxlYXNlKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvU2FtcGxlKTsKKyAgICAgICAgZ19zdXBlclNhbXBs
ZXJDb3VudC0tOworICAgICAgICBtX2RvU2FtcGxlID0gZmFsc2U7CisgICAgfQorCiBwcml2YXRl
OgogICAgIGJvb2wgbV9kb1NhbXBsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYzZDM2MmNh
YzE5ZDQ5Mzk4OTQ3NzdiZWRhN2MwYWMyZDYzNjA2M2YuLjhmZWRlNjJiNTMwZWJkMTAxZmVkYTYx
YWJhYjk0OWEzZjNiMzU5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MDE2LDE0ICs0MDE2LDE1
IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVk
KGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5v
ZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCit2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZv
ck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKIHsK
ICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9kZSA/IGZvckxvb3BOb2RlLT5pc0ZvckF3
YWl0KCkgOiBmYWxzZTsKLSAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgKGlzRm9yQXdhaXQgJiYg
aXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkpOworICAgIGF1dG8gc2hvdWxk
RW1pdEF3YWl0ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObzsK
KyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNl
TW9kZSgpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFy
eSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0
b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwg
bm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gaXNGb3JBd2FpdCA/IGVt
aXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJ
dGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4
dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVs
KCk7CkBAIC00MTMwLDcgKzQxMzEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAg
ICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQo
KSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdhaXQgPyBF
bWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9y
R2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgp
LCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwogCiAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5k
b25lKSwgbG9vcERvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0
KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDE0Myw3ICs0MTQ0
LDE0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAgICBwb3BGaW5hbGx5Q29udHJv
bEZsb3dTY29wZSgpOwogICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpIHsKICAgICAgICAg
ICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4K
LSAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBpc0Zv
ckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgICAgIGVt
aXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hvdWxkRW1pdEF3
YWl0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwor
fQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxC
YWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFi
bGUpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwgaXMz
MkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpKSkgewor
ICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1YmplY3ROb2RlLCBjYWxsQmFj
aywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmFibGUgPSBuZXdUZW1wb3JhcnkoKTsK
KyAgICBlbWl0Tm9kZShpdGVyYWJsZS5nZXQoKSwgc3ViamVjdE5vZGUpOworCisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGl0ZXJhdG9yU3ltYm9sID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGl0ZXJhYmxlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBuZXh0T3JJbmRleCA9IG5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG5ld1RlbXBvcmFyeSgpOworICAgIENhbGxBcmd1bWVu
dHMgYXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgbW92ZShhcmdzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYWJsZS5nZXQoKSk7CisgICAgZW1pdEl0ZXJhdG9yT3BlbihpdGVyYXRvci5nZXQoKSwg
bmV4dE9ySW5kZXguZ2V0KCksIGl0ZXJhdG9yU3ltYm9sLmdldCgpLCBhcmdzLCBub2RlKTsKKwor
ICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gdHJ5
U3RhcnRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5VmlhVGhyb3dM
YWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5TGFiZWwgPSBuZXdMYWJl
bCgpOworICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExh
YmVsPiBlbmRDYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1Vu
ZGVmaW5lZCgpKTsKKworICAgIC8vIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvcidzIGxpZmV0
aW1lIG11c3QgYmUgbG9uZ2VyIHRoYW4gSXRlcmF0b3JDbG9zZUNvbnRleHQuCisgICAgRmluYWxs
eUNvbnRleHQgZmluYWxseUNvbnRleHQoKnRoaXMsIGZpbmFsbHlMYWJlbC5nZXQoKSk7CisgICAg
cHVzaEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKGZpbmFsbHlDb250ZXh0KTsKKworICAgIHsKKyAg
ICAgICAgUmVmPExhYmVsU2NvcGU+IHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpM
b29wKTsKKworICAgICAgICBSZWY8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICBlbWl0TGFiZWwoKnNjb3Bl
LT5jb250aW51ZVRhcmdldCgpKTsKKyAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAg
aWYgKGZvckxvb3BOb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmb3JMb29wTm9k
ZS0+aXNGb3JPZk5vZGUoKSk7CisgICAgICAgICAgICBwcmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4
dEZvckxvb3BJdGVyYXRpb24oZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAg
ICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkb25lID0gbmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmdzKCp0aGlzLCBudWxs
cHRyLCAwKTsKKyAgICAgICAgICAgIG1vdmUobmV4dEFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0ZXJh
dG9yLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dChkb25lLmdldCgpLCB2
YWx1ZS5nZXQoKSwgaXRlcmFibGUuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBuZXh0QXJncywg
bm9kZSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBsb29wRG9uZS5n
ZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQo
KSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBwdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0
KCksIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRG
aW5hbGx5KTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMsIHZhbHVlLmdldCgpKTsKKyAgICAgICAg
ZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNl
cXVlbmNlIGZvciBhYnJ1cHQgY29tcGxldGlvbnMuCisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IEZpbmFsbHkgYmxvY2sgZm9yIHRoZSBlbnVtZXJhdGlvbi4KKyAgICAgICAgICAgIGVtaXRMYWJl
bChmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBwb3BUcnkodHJ5RGF0
YSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+
IGZpbmFsbHlCb2R5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZpbmFsbHlFeGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworCisgICAg
ICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZmluYWxseUNvbnRleHQuY29tcGxl
dGlvblZhbHVlUmVnaXN0ZXIoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3Rl
cigpLCB0cnlEYXRhKTsKKyAgICAgICAgICAgIG1vdmUoZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVy
LmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpKTsKKyAgICAg
ICAgICAgIGVtaXRKdW1wKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBl
bWl0TGFiZWwoZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIG1vdmVFbXB0eVZhbHVl
KGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFs
bHkgZmFsbCB0aHJvdWdoIGNhc2UuCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseUJvZHlM
YWJlbC5nZXQoKSk7CisgICAgICAgICAgICByZXN0b3JlU2NvcGVSZWdpc3RlcigpOworCisgICAg
ICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlEb25lID0gbmV3TGFiZWwoKTsKKworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwor
ICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgp
LCByZXR1cm5NZXRob2QuZ2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAgICAgICAgICAg
IFJlZjxMYWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAg
IGVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgVHJ5RGF0
YSogcmV0dXJuQ2FsbFRyeURhdGEgPSBwdXNoVHJ5KHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSwg
Y2F0Y2hMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkQ2F0Y2gpOworCisgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgICAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iu
Z2V0KCkpOworICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCks
IG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5v
KTsKKworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFy
eSgpLCB2YWx1ZS5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiJfcyk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5RG9uZS5nZXQoKSk7CisgICAg
ICAgICAgICBlbWl0RmluYWxseUNvbXBsZXRpb24oZmluYWxseUNvbnRleHQsIGVuZENhdGNoTGFi
ZWwuZ2V0KCkpOworCisgICAgICAgICAgICBwb3BUcnkocmV0dXJuQ2FsbFRyeURhdGEsIGZpbmFs
bHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgLy8gQ2F0Y2ggYmxvY2sgZm9yIGV4Y2VwdGlv
bnMgdGhhdCBtYXkgYmUgdGhyb3duIHdoaWxlIGNhbGxpbmcgdGhlIHJldHVybgorICAgICAgICAg
ICAgLy8gaGFuZGxlciBpbiB0aGUgZW51bWVyYXRpb24gZmluYWxseSBibG9jay4gVGhlIG9ubHkg
cmVhc29uIHdlIG5lZWQgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2ggYmxvY2sgaXMgYmVjYXVz
ZSBpZiBlbnRlcmVkIHRoZSBhYm92ZSBmaW5hbGx5IGJsb2NrIGR1ZSB0byBhIHRocm93bgorICAg
ICAgICAgICAgLy8gZXhjZXB0aW9uLCB0aGVuIHdlIHdhbnQgdG8gcmUtdGhyb3cgdGhlIG9yaWdp
bmFsIGV4Y2VwdGlvbiBvbiBleGl0aW5nCisgICAgICAgICAgICAvLyB0aGUgZmluYWxseSBibG9j
ay4gT3RoZXJ3aXNlLCB3ZSdsbCBsZXQgYW55IG5ldyBleGNlcHRpb24gcGFzcyB0aHJvdWdoLgor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChjYXRjaExhYmVsLmdldCgp
KTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdpc3Rl
ciA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5
SGFuZGxlcihleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlv
blR5cGVSZWdpc3RlcigpLCByZXR1cm5DYWxsVHJ5RGF0YSk7CisgICAgICAgICAgICAgICAgLy8g
U2luY2UgdGhpcyBpcyBhIHN5bnRoZXNpemVkIGNhdGNoIGJsb2NrIGFuZCB3ZSdyZSBndWFyYW50
ZWVkIHRvIG5ldmVyIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byByZXNvbHZlIGFueSBzeW1i
b2xzIGZyb20gdGhlIHNjb3BlLCB3ZSBjYW4gc2tpcCByZXN0b3JpbmcgdGhlIHNjb3BlCisgICAg
ICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaGVyZS4KKworICAgICAgICAgICAgICAgIFJlZjxMYWJl
bD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRy
dWUoZW1pdElzRW1wdHkobmV3VGVtcG9yYXJ5KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5n
ZXQoKSksIHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1vdmUoZXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAg
ICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgICAgIGVt
aXRMYWJlbChlbmRDYXRjaExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgYnJlYWtMYWJlbElzQm91bmQgPSBzY29wZS0+YnJlYWtUYXJnZXRNYXlC
ZUJvdW5kKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkKKyAgICAgICAgICAgIGVt
aXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CisgICAgICAgIHBvcEZpbmFsbHlDb250cm9s
Rmxvd1Njb3BlKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgeworICAgICAgICAg
ICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93Lgor
ICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2Rl
LCBFbWl0QXdhaXQ6Ok5vKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbWl0TGFiZWwobG9vcERv
bmUuZ2V0KCkpOwpAQCAtNDI2NSw1NiArNDQwNCw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAg
ICBPcElzRW1wdHk6OmVtaXQodGhpcywgZHN0LCBzcmMpOwogICAgIHJldHVybiBkc3Q7CiB9Ci0g
ICAgCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3
YWl0KQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlz
LCBudWxscHRyKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvcik7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICAgICAgaWYgKGRv
RW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7
Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJl
bCgpOwotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCks
IGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Ci0gICAgICAg
IGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgIH0KLSAgICByZXR1cm4gZHN0Owot
fQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMo
KnRoaXMsIG51bGxwdHIsIDEpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVn
aXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90
U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gZHN0OwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICBSZWY8TGFiZWw+IGRvbmUg
PSBuZXdMYWJlbCgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5L
ZXl3b3JkKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5
KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOwotCi0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5B
cmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1l
dGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNh
bGw6Ok5vKTsKLQotICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKLSAgICAg
ICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKLQotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09i
amVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKLSAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpOwotICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKLX0KIAogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cHVzaEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIpCiB7CkBAIC00NTU1LDcgKzQ2NDQsMzUgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVySUQqIHZhbHVlKQogICAgIG1v
dmUodmFsdWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4dE9ySW5k
ZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVyYWJsZSwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8gUmVzZXJ2ZSBz
cGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxG
cmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVn
aXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOwor
CisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisgICAgZW1pdEV4
cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2
b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck9wZW46OmVtaXQodGhpcywgaXRlcmF0b3IsIG5leHRP
ckluZGV4LCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUudGhpc1JlZ2lzdGVyKCksIGl0ZXJhYmxl
LnN0YWNrT2Zmc2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBp
dGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNlcnZl
IHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENh
bGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2Fs
bEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7
CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBlbWl0
RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yTmV4dDo6ZW1pdCh0aGlzLCBkb25lLCB2YWx1ZSwg
aXRlcmFibGUsIG5leHRPckluZGV4LCBpdGVyYXRvci50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iu
c3RhY2tPZmZzZXQoKSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRv
clN5bWJvbCk7CiAgICAgZW1pdENhbGxJdGVyYXRvcihpdGVyYXRvci5nZXQoKSwgYXJndW1lbnQs
IG5vZGUpOwpAQCAtNDU2Myw2ICs0NjgwLDU3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4CiAg
ICAgcmV0dXJuIGl0ZXJhdG9yLmdldCgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICB7CisgICAgICAg
IENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgIG1v
dmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBlbWl0
Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6
OlllcykKKyAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOworICAgIH0KKyAgICB7CisgICAgICAg
IFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0
KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZh
Y2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0
LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lz
dGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAg
ICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwg
MSk7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Ip
OworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUp
OworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
bmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBkc3Q7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShS
ZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUs
IEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJl
bCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsK
KyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVy
bk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMo
KnRoaXMsIG51bGxwdHIpOworICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5v
ZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsK
KworICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAgZW1pdEF3
YWl0KHZhbHVlLmdldCgpKTsKKworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdU
ZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKKyAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwor
ICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKK30KKworCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVy
YXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1l
cygpLmFzeW5jSXRlcmF0b3JTeW1ib2wpOwpAQCAtNDU3NSw3ICs0NzQzLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2EKICAgICBlbWl0SnVtcChhc3luY0l0ZXJhdG9yRm91bmQuZ2V0KCkpOwog
ICAgIGVtaXRMYWJlbChhc3luY0l0ZXJhdG9yTm90Rm91bmQuZ2V0KCkpOwogCi0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBu
b2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0R2Vu
ZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICBtb3ZlKGl0ZXJhdG9yLmdldCgpLCBj
b21tb25JdGVyYXRvci5nZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhv
ZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLm5leHQpOwpAQCAtNDYwNCw3ICs0NzcyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGUKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKICAg
ICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0
ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0ZXJh
dG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoYXJndW1lbnQsIG5v
ZGUpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwog
CiAgICAgICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAtNDY0Miw3ICs0
ODEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRob2Qu
Z2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBF
bWl0QXdhaXQgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlID0gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0
QXdhaXQ6Ok5vOwotICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRv
ci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0
QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5
cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRo
b2QuIl9zKTsKIApAQCAtNDcwMyw3ICs0ODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW1pdExhYmVsKG5leHRFbGVtZW50LmdldCgp
KTsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIG5l
eHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7CisgICAg
ICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4
dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKIAogICAg
ICAgICAgICAgZW1pdExhYmVsKGJyYW5jaE9uUmVzdWx0LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IGQ1MzRjZDgyOGFhYzNkMTQwYjRmNDZjODY4NzY4MDkxNGUwZGUzMjUuLjZiNzA4ZTk2YWIx
NDYwZGE2YTBhZTBjYjk1MzY4YTc5ZGNmOGVmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgyOCw2ICs4
MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERlZmluZVByb3Bl
cnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0ZXIs
CiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0
ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJpY0VudW1l
cmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Np
b25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIsIFJl
Z2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogICAgICAgICB2b2lkIGVt
aXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBF
eHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogPSBudWxs
cHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRyKTsKIAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0R2V0VGVtcGxhdGVPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBUYWdn
ZWRUZW1wbGF0ZU5vZGUqKTsKQEAgLTg5OCw5ICs4OTksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Rlcml2ZWRBcnJheShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBEZXJp
dmVkQXJyYXlUeXBlKTsgfQogICAgICAgICB2b2lkIGVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxl
KFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yKTsKIAotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4
dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCog
dmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKLSAgICAgICAgdm9p
ZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOworICAgICAg
ICB2b2lkIGVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQq
IG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRvciwgQ2FsbEFyZ3VtZW50cyYg
aXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZvaWQg
ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVn
aXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBDYWxsQXJndW1lbnRz
JiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXN5bmNJdGVyYXRv
cihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVtaXRBd2FpdDo6Tm8pOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUp
OworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBpdGVy
YXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVt
aXRBd2FpdDo6Tm8pOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJl
Z2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CiAKQEAgLTk1
MCw5ICs5NTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHVzaENhdGNo
U2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICB2b2lkIGVtaXRQb3BDYXRjaFNj
b3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
SXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSopOwotCiAgICAgICAgIHZvaWQgZW1pdEF3YWl0KFJlZ2lzdGVySUQqKTsK
ICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQ0ZmRiNGRk
NTRkNDkyZjkwZDJkNzIxZmQ3ZGFjMTJmZjdkMmY4NTAuLjJiMTVjYWE0NzEzYTg4NTY1YzRjZDA5
NTI2ZjkwYzI0NWY2M2EwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ1NzIsNyArNDU3Miw3IEBAIHZvaWQgQXJy
YXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIHJocykKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgaWYgKG1fdGFyZ2V0UGF0
dGVybnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShp
dGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5l
cmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NTg4LDcgKzQ1ODgsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNraXBw
ZWQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9y
TmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdl
dCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
ZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ2MjQsNyArNDYyNCw3IEBAIHZvaWQgQXJyYXlQ
YXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIHJocykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobG9vcFN0YXJ0Lmdl
dCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvck5leHQo
dmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwg
bmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGRvbmUuZ2V0KCksIGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS52YWx1ZSk7CkBAIC00NjQyLDcgKzQ2NDIsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAKICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdG9yQ2xv
c2VkLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0
b3IuZ2V0KCksIHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0b3JDbG9zZWQu
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMGE0YTExZjliNDBlNmIxM2M1OTY0
MjI4ZTQxMTI4OWYxZDllZTg2Ni4uMThkYWUwMDRjNzIyY2Q2ZmRjZjg5MTJiYzVjNDIxM2E0MzFi
MjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDM5OCwxMCArNDM5OCw4IEBAIHZvaWQgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcygKICAgICAg
ICAgICAgICAgICBmdW5jdG9yKGZvck5vZGUobm9kZSkpOwogICAgICAgICB9CiAgICAgfQotICAg
IGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0gICAg
ICAgIGZ1bmN0b3IobV9zdGF0ZS5hcmd1bWVudChpKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IG1f
c3RhdGUubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3RvcihtX3N0YXRlLmxv
Y2FsKGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5zaXplKCk7IGktLTspCisgICAg
ICAgIGZ1bmN0b3IobV9zdGF0ZS5hdEluZGV4KGkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXRUYWlsQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDg5N2M3MGRmZmJhMDY2YjY0OWNhZmRjYzFlZjA5
MzM3NjgxMDRkMTMuLjQzOGUxNmRlODU5NTkyNTRkOTU1NzIxYjZmMDhkYjk1ODE0ZmQ4ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oCkBAIC0xMzcsMTEgKzEzNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1ha2VIZWFwVG9wRm9y
Tm9kZShlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwu
bnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkgY29u
c3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IH0KKyAg
ICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNB
dFRhaWwubnVtYmVyT2ZUbXBzKCk7IH0KKyAgICBBYnN0cmFjdFZhbHVlJiBhdEluZGV4KHNpemVf
dCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KTsgfQogICAg
IEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKSB7IHJldHVybiBtX2Jsb2Nr
LT52YWx1ZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGxv
Y2FsKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGlu
ZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkgeyByZXR1
cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGluZGV4KTsgfQorICAgIEFic3RyYWN0
VmFsdWUmIHRtcChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC50
bXAoaW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3RydWN0dXJlcygpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAwOTk3YmFiMDUyNTI2NGU2ZjE2NDg1NDI0MmQ5NGNlM2I1N2UzNmRjLi5jZDI2NDJlOTU0ZWVm
OGZmNmIxZDYyODY3MWYzZjNmMWU4ZDM1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC0xNTcsNyArMTU4LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEhlbHBlciBmb3IgbWluIGFuZCBtYXguCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7Cisg
ICAgYm9vbCBoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAKICAgICB2b2lkIHJlZmluZVN0YXRpY2FsbHko
Q2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0KTsKICAgICAvLyBCbG9ja3MgY2FuIGVp
dGhlciBiZSB0YXJnZXRhYmxlIChpLmUuIGluIHRoZSBtX2Jsb2NrTGlua2luZ1RhcmdldHMgb2Yg
b25lIElubGluZVN0YWNrRW50cnkpIHdpdGggYSB3ZWxsLWRlZmluZWQgYnl0ZWNvZGVCZWdpbiwK
QEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEhhbmRsZSBjYWxscy4gVGhpcyBy
ZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5saW5pbmcgYW5kIGludHJpbnNpY3MuCiAgICAg
ZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5hbCB9OwogICAgIFRlcm1pbmFs
aXR5IGhhbmRsZUNhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBl
IG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAg
ICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5r
U3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xODgsMjcgKzE4OSwyNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJp
YW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCk7CiAgICAgdW5z
aWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdz
IG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2
ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0
IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBo
YW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0
dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1l
bnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3Rl
ciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAgICAgdW5zaWduZWQgZ2V0SW5saW5pbmdC
YWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAg
ICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0aW1pemVkVG9KdW1wLCBJ
bmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVD
YWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
Q2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1
bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJ
bmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1
bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywg
Ym9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwotICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFu
ZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2Rl
SW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBo
YW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENh
bGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1l
bnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5k
ZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5z
aWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJv
b2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRs
ZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJn
dW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0
SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
ICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIHZv
aWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxW
YXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAvLyBIYW5kbGUgaW50cmlu
c2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBu
ZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwor
ICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGlu
dHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmlu
c2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhh
bmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5h
bEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OworICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9wZXJhbmQgcmVzdWx0LCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBo
YW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwg
U3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAg
Ym9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUs
IE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFNw
ZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIE5v
ZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQo
U3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAgICBib29sIGhhbmRsZURP
TUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYs
IE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3Vs
dCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9vbCBoYW5kbGVN
b2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBl
LCBOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRl
Y29kZT4KQEAgLTMxOCwxNSArMzE5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBnZXRM
b2NhbE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAgIE5vZGUqIGdldChWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAg
ICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjb25z
dGFudEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLnRvQ29uc3RhbnRJ
bmRleCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUo
KTsKICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUgfHwgIW1fY29uc3Rh
bnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ29kZUJsb2NrJiBj
b2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5kKTsKLSAgICAg
ICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJlcHJlc2VudGF0
aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQp
OworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQo
b3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFu
dFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpKTsKICAg
ICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXplKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3RhbnRJbmRleCArIDEpOwogICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwgbV9jb25zdGFudHMuc2l6
ZSgpOyArK2kpCkBAIC0zNDcsMTAgKzM0OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKCktPmlz
Q2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBpbmxp
bmVDYWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAob3Bl
cmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpCisgICAgICAgICAgICAgICAg
aWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlNDb25zdGFudChjYWxsZWUpOwogICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZCA9PSBWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0
byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRoaXMgZW5hYmxlcyBDcmVh
dGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQgd2UgZG9uJ3QgaGF2ZSBz
dWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1c2VzIG9mIENhbGxlZSwg
c2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUgZnVuY3Rpb24gaXMgYSBz
aW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00MTAsNyArNDExLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNocmluaygwKTsKICAgICB9CiAKLSAgICBO
b2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNl
dE1vZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0KE9wZXJhbmQgb3BlcmFuZCwgTm9kZSog
dmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1
ZSwgc2V0TW9kZSk7CiAgICAgfQpAQCAtNjkxLDE1ICs2OTIsMjAgQEAgcHJpdmF0ZToKICAgICAg
ICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAorICAgIE5vZGUqIGpzQ29uc3RhbnQoRnJv
emVuVmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRkVG9HcmFw
aChKU0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1ZSkpOworICAgIH0KKwogICAgIC8vIEFz
c3VtZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4KICAgICBO
b2RlKiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZVN0cm9uZyhj
b25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6
ZVN0cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgTm9kZSogd2Vha0pTQ29uc3Rh
bnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZFRvR3Jh
cGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKSk7Cisg
ICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKTsK
ICAgICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldC9zZXQgdGhlIHRoaXMgdmFs
dWUuCkBAIC04NTAsNyArODU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSog
YWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9w
SW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywg
Tm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcCA9PSBUYWls
Q2FsbCkgewpAQCAtOTU5LDcgKzk2NSwzNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAgIH0KLSAgICAKKworICAgIC8v
IEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGEgdHJ1ZSBib3R0b20gdmFsdWUgZm9yIGV4YW1wbGUg
YW55IG9iamVjdCBzcGVjdWxhdGlvbiB3aWxsIG5vdyBiZSBPYmplY3R8T3RoZXIgYXMgdGhpcyBy
ZXR1cm5zIG51bGwuCisgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzIHdoZW4gd2UgY2FuIGFsbG9j
YXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAgRnJvemVuVmFsdWUqIGJvdHRvbVZhbHVl
TWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSBzcGVjKQorICAgIHsKKyAgICAgICAg
Ly8gSXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgd2hhdCB3ZSByZXR1cm4gaGVyZS4KKyAgICAg
ICAgaWYgKHNwZWMgPT0gU3BlY05vbmUpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVl
emUoSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBT
cGVjT3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVsbCgpKTsK
KworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjQm9vbGVhbikpCisg
ICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNCb29sZWFuKHRydWUpKTsKKworICAg
ICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjRnVsbE51bWJlcikpCisgICAg
ICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdW1iZXIoMCkpOworCisgICAgICAgIGlm
IChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNCaWdJbnQpKQorICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKworICAg
ICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJv
bCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUobV92bS0+c21hbGxTdHJpbmdz
LmVtcHR5U3RyaW5nKCkpOworCisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMs
IFNwZWNDZWxsT3RoZXIgfCBTcGVjT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBo
LmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgQVNTRVJUKHNwZWN1bGF0aW9uQ29udGFpbnMo
c3BlYywgU3BlY0VtcHR5KSk7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShKU1ZhbHVl
KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSBnZXRBcnJheU1vZGUoQXJyYXk6OkFjdGlvbiBh
Y3Rpb24pCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jazsKQEAgLTExNzQsNyArMTIxMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIE9wdGlvbmFsOiBhIGNvbnRpbnVhdGlvbiBibG9jayBmb3IgcmV0dXJucyB0byBq
dW1wIHRvLiBJdCBpcyBzZXQgYnkgZWFybHkgcmV0dXJucyBpZiBpdCBkb2VzIG5vdCBleGlzdC4K
ICAgICAgICAgQmFzaWNCbG9jayogbV9jb250aW51YXRpb25CbG9jazsKIAotICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1ZTsKKyAgICAgICAgT3BlcmFuZCBtX3JldHVyblZhbHVl
OwogICAgICAgICAKICAgICAgICAgLy8gU3BlY3VsYXRpb25zIGFib3V0IHZhcmlhYmxlIHR5cGVz
IGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrLAogICAgICAgICAvLyB3aGlj
aCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhhdCBwYXN0IERGRyBjb21waWxhdGlv
bnMgb2YgdGhpcwpAQCAtMTE5NCw3ICsxMjMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIENv
ZGVCbG9jayosCiAgICAgICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssCiAgICAgICAg
ICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2Fs
bC4KLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1ZVZSLAorICAgICAgICAg
ICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBpbmxp
bmVDYWxsRnJhbWVTdGFydCwKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCwKQEAgLTEyNjksNiArMTMw
NSw3IEBAIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJs
b2NrKCkKICAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxv
Y2soQnl0ZWNvZGVJbmRleCgpLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIG1fbnVtVG1w
cywgMSkpOwogICAgIEJhc2ljQmxvY2sqIGJsb2NrUHRyID0gYmxvY2sucHRyKCk7CiAgICAgbV9n
cmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CisgICAgVkVSQk9TRV9MT0coIkFkZGlu
ZyBuZXcgdW50YXJnZXRhYmxlIGJsb2NrOiAiLCBibG9ja1B0ci0+aW5kZXgsICJcbiIpOwogICAg
IHJldHVybiBibG9ja1B0cjsKIH0KIApAQCAtMTMwMSw4ICsxMzM4LDggQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2FsbE9wPgogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2Rl
IGNhbGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8Q2FsbE9wPigpOwotICAg
IE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpOwotICAgIGludCByZWdp
c3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7CisgICAgTm9k
ZSogY2FsbFRhcmdldCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNo
ZWNrcG9pbnQoKSkpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+
KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5j
aGVja3BvaW50KCkpKTsKIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKQEAgLTEzMTAsOCArMTM0Nyw4IEBAIEJ5
dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25z
dCBJbnN0cnVjdGlvbiogcGMsIE5vCiAKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCA9
IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7CiAKLSAgICByZXR1cm4gaGFuZGxl
Q2FsbChieXRlY29kZS5tX2RzdCwgb3AsIGtpbmQsIHBjLT5zaXplKCksIGNhbGxUYXJnZXQsCi0g
ICAgICAgIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBn
ZXRQcmVkaWN0aW9uKCkpOworICAgIHJldHVybiBoYW5kbGVDYWxsKGRlc3RpbmF0aW9uRm9yKGJ5
dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCksIEpJVFR5cGU6OkRGR0pJVCksIG9w
LCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAorICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSwgcmVn
aXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOwogfQogCiB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlu
a1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCkKQEAgLTEzMjEsNyArMTM1OCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3Rh
dHVzLCBOb2RlKiBjYWxsCiB9CiAKIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlw
ZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6
ZSwKKyAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgTm9kZSogY2FsbFRhcmdldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAg
Q2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
CiB7CkBAIC0xNjM3LDcgKzE2NzQsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2Fs
bFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCit2b2lkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJl
c3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxv
Y2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
CiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9j
dXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXph
dGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsK
QEAgLTE2NzEsNyArMTcwOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgc2l6ZV90
IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXpl
KCk7CiAKICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKLSAgICAgICAgcmVzdWx0ID0gbV9pbmxp
bmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCkudmlydHVhbFJlZ2lzdGVyKCk7CisgICAg
ICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHQpOwogCiAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAgaWYg
KGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4MjMsNyArMTg2MCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIENhCiAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBzYXZlZEN1cnJlbnRJ
bnN0cnVjdGlvbjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9m
ZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFu
Y2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxl
ZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQs
IENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5k
ZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQogewogICAgIFZFUkJPU0VfTE9H
KCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxuIik7CiAKQEAgLTE5MDAsNyAr
MTkzNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgcmV0dXJuIENhbGxPcHRpbWl6
YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZh
cmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNh
bGxMaW5rU3RhdHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
ZW50LAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJn
dW1lbnRzT2Zmc2V0LAogICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQpCkBAIC0yMDQ0LDcgKzIwODEsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6Z2V0
SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cwogfQog
CiBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKKyAgICBOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0
aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgIEJ5
dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQpAQCAtMjIyMCw3ICsyMjU3LDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBBU1NFUlQob3AgPT0gQXJpdGhNaW4gfHwg
b3AgPT0gQXJpdGhNYXgpOwogCkBAIC0yMjUwLDcgKzIyODcsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGlu
dCByZWdpcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNp
YyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICAgICBUaGUgaW50cmluc2ljIGlz
ICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTIzODksMjcgKzI0MjYsMTEgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzogewogICAg
ICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2lu
ZDsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7Ci0gICAgICAgICAgICBjYXNlIEFy
cmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5VmFsdWVzSW50
cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNp
YzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAg
ICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNh
c2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0
ZXJhdGlvbktpbmQ6OkVudHJpZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBPcHRp
b25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoaW50
cmluc2ljKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEha2luZCk7CiAKICAgICAgICAg
ICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1
c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1
cC4KLSAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKyAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0g
anNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oKmtpbmQpKSk7CiAKICAg
ICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gZXhpc3RpbmcgZXJyb3Igc3RyaW5nLgogICAg
ICAgICAgICAgdW5zaWduZWQgZXJyb3JTdHJpbmdJbmRleCA9IFVJTlQzMl9NQVg7CkBAIC0zNjQ3
LDcgKzM2NjgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklU
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
IT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2Niw3ICszNjg3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LAogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5v
ZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2Rl
KiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIHN3
aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5n
dGhJbnRyaW5zaWM6IHsKQEAgLTM3ODAsNyArMzgwMSw3IEBAIHN0YXRpYyB2b2lkIGJsZXNzQ2Fs
bERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0
R2VuZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIo
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5v
ZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUs
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7
CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zODU5LDcgKzM4ODAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVO
YW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlw
ZWRBcnJheUNvbnN0cnVjdG9yKAotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFs
RnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgT3BlcmFuZCByZXN1
bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSB0eXBlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKCFpc1R5cGVkVmlldyh0
eXBlKSkKQEAgLTM5MTYsNyArMzkzNyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5
cGVkQXJyYXlDb25zdHJ1Y3RvcigKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKLSAg
ICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBWRVJCT1NFX0xPRygiICAgIEhh
bmRsaW5nIGNvbnN0YW50IGludGVybmFsIGZ1bmN0aW9uICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAi
XG4iKTsKQEAgLTY2MDQsMjAgKzY2MjUsNDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
TEFTVF9PUENPREUob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKTsKICAgICAgICAgfQot
ICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczogewogICAg
ICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGw8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5z
dHJ1Y3Rpb24sIENvbnN0cnVjdFZhcmFyZ3MsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOwogICAgICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50
SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0
aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAgICAgICAgICAg
aW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKICAgICAgICAgICAgIGFkZENh
bGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSks
IGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQs
IGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxsX2V2YWwp
OwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29w
ZW46IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSXRlcmF0b3JPcGVuPigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAgdWludDMyX3Qgc2Vlbk1vZGVzID0g
bWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXM7CisKKyAgICAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9kZXMgPSBXVEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7
CisgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0
ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ2FzZSA9IGZhbHNlOwor
CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsK
KyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51bGxwdHI7CisgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2Nr
KCk7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudElu
ZGV4OworCisgICAgICAgICAgICBOb2RlKiBzeW1ib2xJdGVyYXRvciA9IGdldERpcmVjdChieXRl
Y29kZS5tX3N5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQoKTsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlv
bk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0Lmlz
U3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3Qgc2V0IHVwIHRoZSB3YXRj
aHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5lc3MuCisgICAgICAgICAgICAg
ICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJheUl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5TeW1i
b2xJdGVyYXRvckZ1bmN0aW9uID0gbV9ncmFwaC5mcmVlemUoZ2xvYmFsT2JqZWN0LT5hcnJheVBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKG51
bWJlck9mUmVtYWluaW5nTW9kZXMgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uKSwgc3ltYm9s
SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVC
bG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGtub3duSXRlckZ1bmN0aW9uID0g
YWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0
aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0FycmF5
ID0gYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEFycmF5VHlwZSksIGdldChieXRl
Y29kZS5tX2l0ZXJhYmxlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJh
bmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAg
ICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0QXJyYXlCbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KGdlbmVy
aWNCbG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYW5kUmVzdWx0ID0gYWRkVG9H
cmFwaChBcml0aEJpdEFuZCwgaXNBcnJheSwga25vd25JdGVyRnVuY3Rpb24pOworCisgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGJpdCBhbmQgY2Fubm90IGhhdmUgZWZmZWN0cyBz
byBpdCdzIG9rIHRvIGV4aXQgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgYW5kUmVz
dWx0KTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworCisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gVGhlIGJyYW5jaCBhYm92ZSBtYXkgaGF2ZSBtYWRlIGV4aXQgaW52YWxpZCBidXQg
aXQncyBhY3R1YWxseSBvay4KKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIE5vZGUqIGtp
bmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0
aW9uS2luZDo6VmFsdWVzKSkpOworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRk
VG9HcmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSwgaXRlcmF0b3Is
IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVy
YXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsKKyAgICAgICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgaXRlcmF0b3IpOworCisgICAgICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fbmV4dCwganNDb25zdGFudChKU1ZhbHVlKCkpKTsKKworICAgICAgICAg
ICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0
QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0
KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAg
ICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJh
dGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0
eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck9wZW4+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAg
ICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIE5v
ZGUqIGl0ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygp
OworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVu
dGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0
YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgIGJyYW5jaERh
dGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAg
IGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdE9iamVjdEJsb2NrKTsKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhZGRU
b0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvcikpOworCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOworICAgICAgICAg
ICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1
ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAgICAgICAg
ICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJv
clN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRU
b0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJv
ck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGlzT2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
Q2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBnZXRQcmVkaWN0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogbmV4dElt
cGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1
cmUobmV4dEltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFj
Y2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAg
IEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmln
aW4oKSk7CisKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1f
bmV4dCwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihuZXh0SW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVz
LCB0eXBlLCBvcGNvZGVMZW5ndGgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBz
ZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdl
IG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAg
ICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Z2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgh
Z2VuZXJhdGVkQ2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3Rh
bnQoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7
CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwgcmVzdWx0KTsKKworICAgICAgICAgICAg
ICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5
IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgp
ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAg
ICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9y
VGVybWluYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBzdGFydEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247
CisgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9pdGVyYXRvcl9vcGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jf
bmV4dDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMg
PSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVz
KTsKKyAgICAgICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9m
SXRlcmF0aW9uTW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7
CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4
OworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7
CisgICAgICAgICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0g
Z2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAg
QmFzaWNCbG9jayogY29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOwor
CisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5ICYm
IGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9ucyB3
ZSBuZWVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9p
bnRzKCkuYWRkTGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworCisg
ICAgICAgICAgICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgIT0gMSkgeworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBoYXNOZXh0ID0gYWRkVG9HcmFwaChJc0VtcHR5LCBnZXQoYnl0
ZWNvZGUubV9uZXh0KSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
ZmFzdEFycmF5QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRh
LmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRh
cmdldChmYXN0QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5v
dFRha2VuID0gQnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGhhc05leHQpOworCisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRk
U3RydWN0dXJlU2V0KGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSksIGl0
ZXJhdG9yKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzRG9uZUJsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5v
dERvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsK
KworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4
ID0ganNDb25zdGFudChqc051bWJlcigtMSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBp
bmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVp
bnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMy
T25seSksIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNEb25lID0gYWRk
VG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIGluZGV4LCBkb25lSW5kZXgpOworCisgICAgICAgICAg
ICAgICAgICAgIEJyYW5jaERhdGEqIGlzRG9uZUJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNo
RGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNEb25lQnJhbmNoRGF0YS0+dGFrZW4g
PSBCcmFuY2hUYXJnZXQoaXNEb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBpc0RvbmVC
cmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGlzRG9uZUJyYW5jaERhdGEp
LCBpc0RvbmUpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAg
ICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhp
dChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6
Z2V0VmFsdWUpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBub3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2Fj
aGVzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdl
dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJh
dG9yOjpGaWVsZDo6SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUu
bV9pdGVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYWJsZSA9IGdldChi
eXRlY29kZS5tX2l0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYnV0dGVyZmx5
ID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGl0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogbGVuZ3RoID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKGFycmF5
TW9kZS5hc1dvcmQoKSksIGl0ZXJhYmxlLCBidXR0ZXJmbHkpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIGluZGV4LCBsZW5n
dGgpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IC8vIFRoZSBhYm92ZSBj
b21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBlZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5kZXggYW5kIGxl
bmd0aCBhcmUgaW50MzJzLgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7
CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgu
bV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtl
biA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5j
aERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KGRvTG9hZEJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaXNEb25lKTsK
KyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBkb0xvYWRCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmll
bGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6
SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikp
OworICAgICAgICAgICAgICAgICAgICBOb2RlKiBvbmUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEp
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtYWtlU2FmZShhZGRUb0dy
YXBoKEFyaXRoQWRkLCBpbmRleCwgb25lKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGZh
bHNlTm9kZSA9IGpzQ29uc3RhbnQoanNCb29sZWFuKGZhbHNlKSk7CisKKworICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFy
Zywgc2luY2UgaXQgb25seSB1c2VzIHRocmVlIGNoaWxkCisgICAgICAgICAgICAgICAgICAgIC8v
IHNsb3RzLgorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFy
Z0NoaWxkKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8v
IExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGdldEJ5VmFsID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIEdldEJ5VmFsLCBPcEluZm8o
YXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGdldEJ5VmFsKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgZmFsc2VOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9y
KSwgbmV3SW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxz
LiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0
aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBC
eXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9u
LT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJv
Y2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1
bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JU
ZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJvbGwg
YmFjayB0aGUgY2hlY2twb2ludC4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0
YXJ0SW5kZXg7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEJsb2NrID0gaXNEb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVz
KCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHRydWVOb2RlID0ganNDb25zdGFudChqc0Jv
b2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0Nv
bnN0YW50KGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJvdHRvbU5v
ZGUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbU5v
ZGUpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCB0cnVlTm9kZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZv
KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBn
ZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0
cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZs
dXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBt
X2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2Fz
ZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9j
aykgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVy
bWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0PihjdXJyZW50
SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7Cisg
ICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxv
Y2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERv
bmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAg
IE9wZXJhbmQgbmV4dFJlc3VsdCA9IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJl
c3VsdCk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVy
YXRvclJlc3VsdCA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNo
RGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAg
ICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJn
ZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5j
aCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvclJlc3Vs
dCkpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hl
cygpOworICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlK
U1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9w
SW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50
LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9y
LCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgYXV0byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRP
U1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JO
ZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0g
aXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24o
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0NvbnN0YW50KGJv
dHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbih2YWx1ZVByZWRpY2l0aW9uKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byogZG9uZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKS5lbnN1cmUoZG9uZUltcGwpOworCisgICAgICAgICAgICAgICAgICAg
IEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOwor
CisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0
dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxl
R2V0QnlJZChieXRlY29kZS5tX2RvbmUsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoZG9uZUltcGwpLCBpZGVudGlmaWVy
TnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gU2V0IGEgdmFsdWUgZm9yIG1fdmFsdWUgc28gd2UgZG9uJ3QgdGhpbmsKKyAgICAg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbVZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFk
ZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdl
dChjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtl
biA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBnZXQoYnl0ZWNvZGUubV9kb25lKSk7
CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrID0gbm90RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOwor
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPnZh
bHVlLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodmFsdWVJbXBsKTsKKworICAgICAgICAg
ICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9
IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVQcmVkaWNpdGlvbiwgYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2YWx1
ZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7
CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92
YWx1ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCByZXN1
bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdh
bnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRl
Y29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9j
dXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
RXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAg
ICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX25leHQpOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgICAgICAgICAgRnJvemVuVmFsdWUq
IGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5t
X2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcikpOwpAQCAt
NzEwNyw3ICs3NTM1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxh
dGVyLCBhcyB0aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAg
ICAgICAgICAgLy8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVy
LgogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRTY29wZT4oKTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxsRnJhbWVTbG90
OjpjYWxsZWUpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAg
ICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RD
b25zdGFudDxKU0Z1bmN0aW9uKj4oKm1fdm0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdl
YWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc0ODYsNyArNzkxNCw3IEBAIEJ5
dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJldHVyblZhbHVl
LAogICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
CkBAIC03NDk1LDcgKzc5MjMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSgKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1f
cHJvZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQogICAgICwgbV9jb250aW51YXRpb25CbG9jayhj
b250aW51YXRpb25CbG9jaykKLSAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAg
ICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBh
cnNlci0+bV9pbmxpbmVTdGFja1RvcCkKIHsKICAgICB7CkBAIC03NTYxLDcgKzc5ODksNyBAQCBC
eXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAg
ICAgLy8gTWFjaGluZSBjb2RlIGJsb2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sg
PT0gYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKCFjYWxsZWUp
OwotICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAgICAgICAgQVNT
RVJUKCFyZXR1cm5WYWx1ZS5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxG
cmFtZVN0YXJ0LmlzVmFsaWQoKSk7CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOwpA
QCAtNzk3Niw3ICs4NDA0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAg
ICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKIAogICAgICAgICAgICAgICAg
IGF1dG8gbm9kZUFuZEluZGV4ID0gYmxvY2stPmZpbmRUZXJtaW5hbCgpOwotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxl
KTsKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJbmRleC5ub2Rl
LCBub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICAg
ICAgYmxvY2stPnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IGU3ZjZlNzYyNDY2OWIz
MDFmNWEwMjA0OGMyNWQ0ODE1YzNhMTMzOWQuLjYxMGQ3ZDIwZWY2NTM1ZjdhOGU5NWJjZWExMjFl
ZjNiOGFiNDAyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2lj
QmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9k
ZU9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFs
aXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVP
cmlnaW4gbm9kZU9yaWdpbiwgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgTm9kZSog
bGl2ZW5lc3NOb2RlID0gamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChv
cGVyYW5kKTsKICAgICAgICAgaWYgKCFsaXZlbmVzc05vZGUpCkBAIC0zMDIsMTEgKzMwMiw5IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBqZXR0aXNvbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2Nr
LCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3Jp
Z2luKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAg
ICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9y
aWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJs
b2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaSkpOwotICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBq
ZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3Jp
Z2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkp
OworCiAgICAgICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpldHRpc29uZWRC
bG9jayk7CiAgICAgfQogICAgIApAQCAtMzUyLDExICszNTAsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgLy8gVGltZSB0byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8g
YmUga2VwdCBhbGl2ZSBpbiBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0
byBoaXR0aW5nIHRoZSBmaXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93
biBhCiAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJsb2NrLgotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAg
ICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91
bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
aSkpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICAgICAg
a2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9k
ZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRp
c29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlY29uZEJsb2NrLT5waGlzLnNpemUoKTsgKytpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1
OWI3NzgwYTZjYzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjYwMDMzMmYxOTBmZjhiNDA0
MmNkNTQyYWI5NWI1MDUzNmFkN2E3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI3NCw2ICsyNzQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSQogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAg
ICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46Cisg
ICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CiAgICAgY2Fz
ZSBvcF9wdXRfdG9fc2NvcGU6CkBAIC0zMTEsNiArMzEzLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEkKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJh
bXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBj
YXNlIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9y
ZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlv
bjoKICAgICBjYXNlIG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY29uc3Ry
dWN0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnc19zbG93X3JldHVy
bl9sb2NhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDFhNGRlY2RhMGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYuLmRiYzgzMWMy
ZWJlMDg2Zjg3MzY2YTdlNTRhMzVlNTkzYTliMDc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjQxMSw3ICsyNDExLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTogewotICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggYmY0MzUw
YzRjZDE3ZTNkNTAwNjYzOGY1NWFhYzM1YTU2NTI5OTRhMS4uZDljOTc0MjhmZDZhZTVlYTUwNmQw
NTcyNjczMDIwZGQxYWZmMTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGb3JBbGxLaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9y
QWxsS2lsbHMuaApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGJl
Zm9yZUlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIGlmIChhZnRlci5ieXRlY29kZUluZGV4KCku
Y2hlY2twb2ludCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVjb2RlSW5kZXgo
KS5jaGVja3BvaW50KCkgIT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSk7Ci0g
ICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zm
c2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpLCAiV2hlbiB0aGUgREZHIGRv
ZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0
Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29k
ZUluZGV4KCkub2Zmc2V0KCkgfHwgbm9kZUFmdGVyLT5vcCgpID09IEV4aXRPSyB8fCBub2RlQWZ0
ZXItPm9wKCkgPT0gSW52YWxpZGF0aW9uUG9pbnQsICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1v
dGlvbiBpdCBzaG91bGQgY2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vy
cm91bmRpbmcgYnl0ZWNvZGVzLiIpOwogCiAgICAgICAgICAgICBhdXRvIGxpdmVCZWZvcmUgPSB0
bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYmVmb3JlLmJ5dGVjb2RlSW5kZXgo
KSk7CiAgICAgICAgICAgICBhdXRvIGxpdmVBZnRlciA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2lu
dCgqY29kZUJsb2NrLCBhZnRlci5ieXRlY29kZUluZGV4KCkpOwpAQCAtMTAyLDggKzEwMiw2IEBA
IHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3Jl
LCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpLCAi
VHJhbnNpdGlvbmluZyBhY3Jvc3MgYSBjaGVja3BvaW50IGJ1dCBiZWZvcmUgYW5kIGFmdGVyIGRv
bid0IHNoYXJlIGFuIGlubGluZUNhbGxGcmFtZS4iKTsKLQogICAgIC8vIERldGVjdCBraWxscyB0
aGUgc3VwZXIgY29uc2VydmF0aXZlIHdheTogaXQgaXMga2lsbGVkIGlmIGl0IHdhcyBsaXZlIGJl
Zm9yZSBhbmQgZGVhZCBhZnRlci4KICAgICBCaXRWZWN0b3IgbGl2ZUFmdGVyID0gZ3JhcGgubG9j
YWxzQW5kVG1wc0xpdmVJbkJ5dGVjb2RlKGFmdGVyKTsKICAgICB1bnNpZ25lZCBudW1Mb2NhbHMg
PSBncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
Y3BwCmluZGV4IDIwMmQyMjUwNTNmYTlkZmJlNWMyM2M2NGJjZjhiZTM4NGUzZTc2NTQuLjdjYzM0
YWUyZDBkNGU1Zjg0OGU2OTU3MzAyNDkyYzEyMWQ3MWZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCkBAIC01OSw2
ICs1OSw5IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNp
Y0Jsb2NrKiBiYXNpY0Jsb2NrKQogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhl
YWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZM
b2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJP
ZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsK
ICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkg
PT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOworICAgIEFT
U0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNC
bG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0
VGFpbC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZUbXBzKCkpOwogCiAgICAgbV9hYnN0cmFjdFZhbHVlcy5yZXNpemUoKTsKIApAQCAtMTYxLDYg
KzE2NCwxMCBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAg
ICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwogICAgICAg
ICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAg
IH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLnRtcChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRU
YWlsLnRtcChpKS5jbGVhcigpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpAQCAtMTc1LDEz
ICsxODIsOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAg
ICAgYmxvY2stPmNmYVRoaW5rc1Nob3VsZFRyeUNvbnN0YW50Rm9sZGluZyA9IGZhbHNlOwogICAg
ICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0Fy
ZVdhdGNoZWQ7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwg
PSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICAg
ICAgYmxvY2stPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICAgICAg
YmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICB9Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxv
Y2FscygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQubG9jYWwoaSku
Y2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIo
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkW2ldLmNsZWFyKCk7
CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldLmNsZWFyKCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTIzOSw3ICsyNDIsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpl
bmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICAg
ICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMg
dGhlIHZhbHVlIGZyb20gaGVhZCB0byB0YWlsLgotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gdmFyaWFibGVBdChpbmRleCk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBhdElu
ZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKQEAgLTMwNCw3ICszMDcsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRl
OjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IHZh
cmlhYmxlQXQoaSk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gYXRJbmRl
eChpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiB2
YWx1ZUF0VGFpbCA6IGJsb2NrLT5zc2EtPnZhbHVlc0F0VGFpbCkKQEAgLTM0Myw2ICszNDYsNyBA
QCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykKICAgICAgICAgZGF0YUxvZygiICAgTWVyZ2luZyBmcm9tICIsIHBvaW50ZXJE
dW1wKGZyb20pLCAiIHRvICIsIHBvaW50ZXJEdW1wKHRvKSwgIlxuIik7CiAgICAgQVNTRVJUKGZy
b20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpID09IHRvLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZkxvY2FscygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKSk7CisgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9
PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKICAgICAKICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAKQEAgLTM1MiwxNCArMzU2LDkgQEAgYm9vbCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAg
CiAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkgewogICAgIGNhc2UgVGhyZWFkZWRDUFM6IHsK
LSAgICAgICAgZm9yIChzaXplX3QgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGZyb20tPnZhcmlh
Ymxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2FyZ3VtZW50KSB7Ci0gICAgICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
YXJndW1lbnQpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJs
b2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwg
dG8tPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCksIGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBm
b3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJl
ck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3Rp
bmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5sb2NhbChsb2NhbCk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1
ZXNBdFRhaWwubG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKSwg
ZnJvbS0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNB
dEhlYWQuYXQoaW5kZXgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0
d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KSwgdG8t
PnZhcmlhYmxlc0F0SGVhZC5hdChpbmRleCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hdChpbmRl
eCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRleCAxODY1ZTZh
MWVmZmMzZGFhZWZlNTg0Y2E4NjJjNDliYzM2ODU4NTAwLi5jNWQwMjY4NzNlMDEwZDA3ZjM4MTFj
NmM0ZmVmNTY2ZTFjYTcwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0xNTgsMTAgKzE1OCwxMiBAQCBwdWJsaWM6
CiAgICAgCiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4mIHZhcmlhYmxlc0ZvckRlYnVnZ2lu
ZygpOwogCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLnNp
emUoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV92YXJpYWJsZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9m
TG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgfQor
ICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51
bWJlck9mVG1wcygpOyB9CiAgICAgCi0gICAgQWJzdHJhY3RWYWx1ZSYgdmFyaWFibGVBdChzaXpl
X3QgaW5kZXgpCisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAg
ewogICAgICAgICBhY3RpdmF0ZVZhcmlhYmxlSWZOZWNlc3NhcnkoaW5kZXgpOwogICAgICAgICBy
ZXR1cm4gZmFzdEZvcndhcmQobV92YXJpYWJsZXNbaW5kZXhdKTsKQEAgLTE2OSwxNyArMTcxLDE3
IEBAIHB1YmxpYzoKIAogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5k
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMub3BlcmFuZElu
ZGV4KG9wZXJhbmQpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMub3BlcmFu
ZEluZGV4KG9wZXJhbmQpKTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwo
c2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJs
ZXMubG9jYWxJbmRleChpbmRleCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxl
cy5sb2NhbEluZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGFy
Z3VtZW50KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1f
dmFyaWFibGVzLmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgo
bV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRleCkpOwogICAgIH0KICAgICAKICAgICAvLyBD
YWxsIHRoaXMgYmVmb3JlIGJlZ2lubmluZyBDRkEgdG8gaW5pdGlhbGl6ZSB0aGUgYWJzdHJhY3Qg
dmFsdWVzIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlK
U1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKaW5k
ZXggZjVlZWYyZjNkZjcyMTI5YTgzOGM3Njg2ZTI2Yjk2MGI1MGY1ODFlZS4uN2EzMzY2NmFhNzFh
MWY2NjZjOTRiMjhiNjQ0NzQ4NGQ2N2JiYjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGF6eUpTVmFsdWUuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IExhenlKU1ZhbHVlIG5ld1N0cmluZyhHcmFwaCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgTGF6
aW5lc3NLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLbm93blZhbHVl
ID8gU3BlY0J5dGVjb2RlVG9wIDogU3BlY1N0cmluZzsgfQogICAgIAogICAgIEZyb3plblZhbHVl
KiB0cnlHZXRWYWx1ZShHcmFwaCYpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggYTg1MmRiZGQ5YjkzNzBkNmRlNjUzYzVhNDg4NzExNzAw
ZThiODc5Yi4uNTIyMzRiNGE1ZDNmNjk3NmMyZmE5OTgxNmRjZTExMDY4MTA1NGVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC00OCwxMSArNDgsMTIgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0KEV4
aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVk
IHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6T1NSRXhpdChF
eGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25l
ZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCwgdW5zaWduZWQgZGZnSVJJbmRl
eCkKICAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5t
X29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQogICAgICwgbV9qc1Zh
bHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2Zp
bGUpCiAgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAgICAsIG1fZGZnSVJJ
bmRleChkZmdJUkluZGV4KQogICAgICwgbV9zdHJlYW1JbmRleChzdHJlYW1JbmRleCkKIHsKICAg
ICBib29sIGNhbkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMxZDY4Nzc5NzJmMjU5ZDYyYzFhMjMw
MGIyYjE2MS4uOGNlOGI5MjA3OWFmNzUyOTk3MDNmMTdmZGRhZTJmZWMzYjljMjhjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxs
RnJhbWUqLCB2b2lkKiwgdm9pZAogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBl
eGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2luZyBpbnRvIGJhc2VsaW5lIGNvZGUu
CiBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7Ci0gICAgT1NSRXhpdChFeGl0
S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3Vs
YXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9
IFVJTlRfTUFYKTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgsIHVuc2lnbmVkIGRmZ0lSSW5k
ZXggPSBVSU5UX01BWCk7CiAKICAgICBmcmllbmQgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopOwogCkBAIC0xNTksNiArMTU5LDcgQEAgc3RydWN0
IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUlu
ZGV4OworICAgIHVuc2lnbmVkIG1fZGZnSVJJbmRleDsKIAogICAgIENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4gY29kZUxvY2F0aW9uRm9yUmVwYXRjaCgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAKaW5kZXggMWRmMzk0MzI0MWQ1YWY3OTMxOThlZjljNzEyNzNlNzU4YTBhMjI2YS4uMDg1
ZGM1MzBiM2JjMzc5ZmI0ZjNlNjA5MWNiNWM2NTIwMjc1ODdhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAt
MTU5LDkgKzE1OSwxNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2Fs
bGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogI2RlZmluZSBMTElOVF9S
RVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6
OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikg
OiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRy
PEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSkKIAogICAgICAgICBzd2l0
Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6
Q2FsbDoKLSAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Y2FsbCk7CisgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CisgICAgICAgICAg
ICBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfY2FsbCkKKyAgICAgICAgICAg
ICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAg
ICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3Jf
b3BlbikKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9u
Lm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAgICAgICAgICAgICAgICBqdW1wVGFy
Z2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX25leHQpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0
cnVjdDoKICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Y29uc3RydWN0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDYgKzI0NSw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NFUlQoanVtcFRh
cmdldCk7CiAgICAgcmV0dXJuIGp1bXBUYXJnZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggMjEwMDNlZDVmZDNmYmMzODE2MmM4OTJiMzRjODQ3YjkyNzY4M2ZhZS4uNmUwOTBhMzhi
ZmMwOTQ3NWE3ZDdiZDU5MWUyNTFhM2U5MzQ2ODU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTExMDEsNiArMTEwMSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jdXJyZW50Tm9k
ZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5
dGVjb2RlVXNlc0FzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBMYXp5SlNDb25zdGFudDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1
cnJlbnROb2RlLT5sYXp5SlNWYWx1ZSgpLnNwZWN1bGF0ZWRUeXBlKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAg
Y2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CkBAIC0x
MzA1LDcgKzEzMTEsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAg
IGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgotICAgICAgICBjYXNlIExhenlKU0NvbnN0
YW50OgogICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBz
aG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLgogICAg
ICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsICJVbmV4cGVjdGVkIG5v
ZGUgZHVyaW5nIHByZWRpY3Rpb24gcHJvcGFnYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4
YTFiZmYzOThjYi4uOWFlOTgwNGM3NWI5NWVjNTYxZWQyZjFhNTJiOWRlYzk4Yzg0NWVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTcxLDYgKzcxLDgg
QEAgcHVibGljOgogICAgICAgICAgICAgZGF0YUxvZ0YoIikgPT0gKCVzID0gIiwgI3JpZ2h0KTsg
XAogICAgICAgICAgICAgZGF0YUxvZyhyaWdodCk7IFwKICAgICAgICAgICAgIGRhdGFMb2dGKCIp
ICglczolZCkuXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgICAgICAgICBkYXRhTG9n
KCJcblxuXG4iKTsgXAorICAgICAgICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihu
dWxscHRyKS0+ZHVtcEJ5dGVjb2RlKCk7IFwKICAgICAgICAgICAgIGR1bXBHcmFwaElmQXBwcm9w
cmlhdGUoKTsgXAogICAgICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVf
XywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNsZWZ0ICIgPT0gIiAjcmlnaHQpOyBc
CiAgICAgICAgICAgICBDUkFTSCgpOyBcCkBAIC01NjgsNiArNTcwLDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IGdldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlr
ZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+
IHNldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSktPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRl
ZENQUykKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxv
Y2spLCAhYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0
VGFpbC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworCisgICAgICAgICAgICAgICAg
Z2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0OworICAgICAgICAgICAgICAgIHNldExv
Y2FsUG9zaXRpb25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVz
QXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkt
PmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
Zm9ybSA9PSBUaHJlYWRlZENQUykKQEAgLTcxNiw2ICs3MjYsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgY2hlY2tPcGVyYW5kKAorICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9j
YWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kOjp0bXAoaSkpOworICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
Y2hlY2tPcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlv
bnMsIHNldExvY2FsUG9zaXRpb25zLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoaSkpOwpAQCAtOTQ0LDcgKzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNr
T3BlcmFuZCgKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2ssIE9wZXJhbmRzPHNpemVfdD4mIGdl
dExvY2FsUG9zaXRpb25zLAotICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0
aW9ucywgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgICAgIE9wZXJhbmRzPHNpemVfdD4m
IHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAo
Z2V0TG9jYWxQb3NpdGlvbnMub3BlcmFuZChvcGVyYW5kKSA9PSBub3RTZXQpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IDRhOGIx
ZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQuLjk0ZGUzOGNiNzE2NzhhZDg2YWJh
YzZiN2M2Mjg3OWMxNmIxMGM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNM
LnJiCkBAIC0xMzcsNiArMTM3LDcgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkdldEJ5SWRNZXRh
ZGF0YS5oIgogI2luY2x1ZGUgIkdldEJ5VmFsSGlzdG9yeS5oIgogI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bj
b2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFn
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0
YS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXgg
N2NkMTVkMzE1ZDYzOTBhYmEyNjM1ZTk2MzU5Zjg5MGUyZWI3MWE5NS4uYzA3NzVkOGUxYjEwNTAy
ZGYwMWE3NGFmMGM2ZGViNGE4NzVjYzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL01ldGFkYXRhLnJiCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIE1ldGFkYXRhCiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhKTsKIAogICAgIHB1YmxpYzoKKyAgICAg
ICAgI3tvcC5vcGNvZGVJRH0KICAgICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5jYXBpdGFsaXpl
ZF9uYW1lfSYjeyIgX19vcCIgaWYgaW5pdHN9KSN7aW5pdHN9IHsgfQogCiAje2ZpZWxkc30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgppbmRleCA5YjVlZTkwOTZl
ZTcxYjFiMGQzZWQ3ZjdjZDE4ZGIwNmZjYjM1ZmNmLi43ZjQzMDJkODgyZWY2ZjM1OTU3Njc3ZWRj
ZjA0OWQzMjZmOTY0NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0
aW9uLnJiCkBAIC01Myw3ICs1MywxNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGVuZAogCiAgIGRlZiBz
b3J0IQotICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8IGEubWV0YWRhdGEu
ZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIH0KKyAgICAgIEBvcGNvZGVz
ID0gQG9wY29kZXMuc29ydCB7IHxhLCBifAorICAgICAgICAgIHJlc3VsdCA9IG5pbAorICAgICAg
ICAgIGlmIGEuY2hlY2twb2ludHMgb3IgYi5jaGVja3BvaW50cworICAgICAgICAgICAgICByYWlz
ZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7YS5u
YW1lfSIgaWYgYS5jaGVja3BvaW50cyBhbmQgYS5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAg
ICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRh
OiAje2IubmFtZX0iIGlmIGIuY2hlY2twb2ludHMgYW5kIGIubWV0YWRhdGEuZW1wdHk/CisgICAg
ICAgICAgICAgIHJlc3VsdCA9IGEuY2hlY2twb2ludHMgPyBiLmNoZWNrcG9pbnRzID8gMCA6IC0x
IDogMQorICAgICAgICAgIGVsc2lmCisgICAgICAgICAgICAgIHJlc3VsdCA9IGEubWV0YWRhdGEu
ZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIAorICAgICAgICAgIGVuZAor
ICAgICAgICAgIHJlc3VsdAorICAgICAgfQogICAgICAgQG9wY29kZXMuZWFjaCgmOmNyZWF0ZV9p
ZCEpCiAgIGVuZAogCkBAIC03Myw2ICs4MywxOSBAQCBjbGFzcyBTZWN0aW9uCiAgICAgICBlbmQK
IAogICAgICAgaWYgY29uZmlnWzplbWl0X2luX3N0cnVjdHNfZmlsZV0KKyAgICAgICAgICBpID0g
MAorICAgICAgICAgIHdoaWxlIHRydWUKKyAgICAgICAgICAgICAgaWYgIW9wY29kZXNbaV0uY2hl
Y2twb2ludHMKKyAgICAgICAgICAgICAgICAgIHByaW50KCJGT1VORCBUSEUgTlVNQkVSIE9GIENI
RUNLUE9JTlRTIEFORCBJJ00gUFJJTlRJTkcgSVQgSU5UTyBUSEUgRklMRSBXSU5ET1dTISIpCisg
ICAgICAgICAgICAgICAgICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgb3V0IDw8ICIj
ZGVmaW5lIE5VTUJFUl9PRl8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9XSVRIX0NI
RUNLUE9JTlRTICN7aX1cbiIKKyAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAg
IGVuZAorCisgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgIGVuZAorICAgICAgICAgIG91
dCA8PCAiXG4iCisKICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VBQ0hfI3tjb25m
aWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFfU0laRShtYWNybykgXFxcbiIpCiAg
ICAgICAgICAgaSA9IDAKICAgICAgICAgICB3aGlsZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDY0NTM5MTI3YjhjNzRjODIw
MjliMmJiNjE4MGU2OTY5NzFhNjRiYzguLjNmZjkyYjQ1M2E3MjkyNmRjNzRlY2JkY2Y2ZTMxNGJj
ZmIzNjhlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC00MywxMzkgKzQzLDEzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAg
IGNsYXNzIENvZGVCbG9jazsKLSAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgVk07Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsK
LSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50
OwotICAgIGNsYXNzIEpTTW9kdWxlUmVjb3JkOwotICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKLSAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBSZWdpc3RlcjsKLSAgICBjbGFzcyBKU1Njb3BlOwot
ICAgIGNsYXNzIFNvdXJjZUNvZGU7Ci0gICAgY2xhc3MgU3RhY2tGcmFtZTsKLSAgICBzdHJ1Y3Qg
Q2FsbEZyYW1lQ2xvc3VyZTsKLSAgICBzdHJ1Y3QgSGFuZGxlckluZm87Ci0gICAgc3RydWN0IElu
c3RydWN0aW9uOwotICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKLQotICAgIGVudW0gRGVidWdI
b29rVHlwZSB7Ci0gICAgICAgIFdpbGxFeGVjdXRlUHJvZ3JhbSwKLSAgICAgICAgRGlkRXhlY3V0
ZVByb2dyYW0sCi0gICAgICAgIERpZEVudGVyQ2FsbEZyYW1lLAotICAgICAgICBEaWRSZWFjaERl
YnVnZ2VyU3RhdGVtZW50LAotICAgICAgICBXaWxsTGVhdmVDYWxsRnJhbWUsCi0gICAgICAgIFdp
bGxFeGVjdXRlU3RhdGVtZW50LAotICAgICAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24sCi0gICAg
fTsKLQotICAgIGVudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKLSAgICAgICAgU3RhY2tGcmFtZUds
b2JhbENvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVFdmFsQ29kZSwKLSAgICAgICAgU3RhY2tGcmFt
ZU1vZHVsZUNvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGUsCi0gICAgICAgIFN0
YWNrRnJhbWVOYXRpdmVDb2RlCi0gICAgfTsKLQotICAgIGNsYXNzIEludGVycHJldGVyIHsKLSAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDYWNo
ZWRDYWxsOwotICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOwotICAgICAgICBmcmllbmQgY2xhc3MgVk07Ci0KLSAgICBw
dWJsaWM6Ci0gICAgICAgIEludGVycHJldGVyKFZNICYpOwotICAgICAgICB+SW50ZXJwcmV0ZXIo
KTsKLSAgICAgICAgCitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBFdmFsRXhlY3V0YWJsZTsKK2Ns
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworY2xhc3MgSlNGdW5jdGlvbjsKK2Ns
YXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKK2NsYXNzIEpT
TW9kdWxlUmVjb3JkOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNzIFJlZ2lz
dGVyOworY2xhc3MgSlNTY29wZTsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBTdGFja0ZyYW1l
Oworc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7CitzdHJ1Y3QgSGFuZGxlckluZm87CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CitzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisKK2VudW0gRGVidWdIb29rVHlw
ZSB7CisgICAgV2lsbEV4ZWN1dGVQcm9ncmFtLAorICAgIERpZEV4ZWN1dGVQcm9ncmFtLAorICAg
IERpZEVudGVyQ2FsbEZyYW1lLAorICAgIERpZFJlYWNoRGVidWdnZXJTdGF0ZW1lbnQsCisgICAg
V2lsbExlYXZlQ2FsbEZyYW1lLAorICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50LAorICAgIFdpbGxF
eGVjdXRlRXhwcmVzc2lvbiwKK307CisKK2VudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKKyAgICBT
dGFja0ZyYW1lR2xvYmFsQ29kZSwKKyAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgU3RhY2tG
cmFtZU1vZHVsZUNvZGUsCisgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwKKyAgICBTdGFja0Zy
YW1lTmF0aXZlQ29kZQorfTsKKworY2xhc3MgSW50ZXJwcmV0ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBm
cmllbmQgY2xhc3MgVk07CisKK3B1YmxpYzoKKyAgICBJbnRlcnByZXRlcihWTSAmKTsKKyAgICB+
SW50ZXJwcmV0ZXIoKTsKKyAgICAKICNpZiBFTkFCTEUoQ19MT09QKQotICAgICAgICBDTG9vcFN0
YWNrJiBjbG9vcFN0YWNrKCkgeyByZXR1cm4gbV9jbG9vcFN0YWNrOyB9CisgICAgQ0xvb3BTdGFj
ayYgY2xvb3BTdGFjaygpIHsgcmV0dXJuIG1fY2xvb3BTdGFjazsgfQogI2VuZGlmCi0gICAgICAg
IAotICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOworICAg
IAorICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCk7CiAKLSAgICAg
ICAgc3RhdGljIGlubGluZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOworICAgIHN0YXRp
YyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlKTsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CisgICAgc3RhdGljIGJv
b2wgaXNPcGNvZGUoT3Bjb2RlKTsKICNlbmRpZgogCi0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZVBy
b2dyYW0oY29uc3QgU291cmNlQ29kZSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNP
YmopOwotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Ci0gICAg
ICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rp
b24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBB
cmdMaXN0Jik7Ci0gICAgICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3RE
YXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKLSAgICAgICAgSlNWYWx1
ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNTY29wZSopOwotCi0gICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJh
bWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0
ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwotCi0gICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5m
byogdW53aW5kKFZNJiwgQ2FsbEZyYW1lKiYsIEV4Y2VwdGlvbiopOwotICAgICAgICB2b2lkIG5v
dGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKLSAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWco
Q2FsbEZyYW1lKiwgRGVidWdIb29rVHlwZSk7Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgc3RhY2tU
cmFjZUFzU3RyaW5nKFZNJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7Ci0KLSAgICAgICAg
dm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVz
dWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhTdGFja1NpemUgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IGVudW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwotICAg
ICAgICAKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVy
blZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBzdGF0aWMgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlNPYmplY3QqIHJldHVyblZhbHVlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbEZyYW1lQ2xvc3Vy
ZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQ
cm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7Ci0KLSAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KENhbGxGcmFtZUNsb3N1cmUmKTsKLQotICAgICAgICBWTSYgbV92bTsKKyAgICBKU1ZhbHVlIGV4
ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KiB0aGlzT2JqKTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Cisg
ICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlv
biwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCos
IEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYs
IGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CisgICAgSlNWYWx1ZSBleGVjdXRl
KEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNT
Y29wZSopOworCisgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rp
b24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGlu
dCYgYXJnYyk7CisKKyAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENh
bGxGcmFtZSomLCBFeGNlcHRpb24qKTsKKyAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRp
b25Ub0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNlcHRpb24q
KTsKKyAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tUeXBl
KTsKKyAgICBzdGF0aWMgU3RyaW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3Rv
cjxTdGFja0ZyYW1lPiYpOworCisgICAgdm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIs
IFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNp
emVfdCBtYXhTdGFja1NpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
KworcHJpdmF0ZToKKyAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRpYWxpemVB
bmRSZXR1cm4gfTsKKyAgICAKKyAgICBzdGF0aWMgSlNWYWx1ZSBjaGVja2VkUmV0dXJuKEpTVmFs
dWUgcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOworICAg
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU09iamVj
dCogY2hlY2tlZFJldHVybihKU09iamVjdCogcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlQocmV0dXJuVmFsdWUpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQor
CisgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1
dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7CisKKyAg
ICBKU1ZhbHVlIGV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3VyZSYpOworCisgICAgVk0mIG1fdm07CiAj
aWYgRU5BQkxFKENfTE9PUCkKLSAgICAgICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CisgICAg
Q0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CiAjZW5kaWYKLSAgICAgICAgCisgICAgCiAjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiAhRU5BQkxFKExMSU5UX0VNQkVEREVEX09Q
Q09ERV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2Rl
LCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQu
CisgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsg
Ly8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQuCiAjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9FTUJF
RERFRF9PUENPREVfSUQpIHx8IEFTU0VSVF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBV
VEVEX0dPVE9fT1BDT0RFUykKLSAgICB9OwotCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwotCi0gICAgaW5saW5lIENhbGxGcmFtZSogY2Fs
bGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBudW1Vc2Vk
U3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCi0gICAgewot
ICAgICAgICAvLyBXZSB3YW50IHRoZSBuZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3Rh
Y2sgYWxpZ25lZCBvZmZzZXQgd2l0aCBhIHN0YWNrCi0gICAgICAgIC8vIGFsaWduZWQgc2l6ZS4g
QWxpZ24gdGhlIHNpemUgaGVyZS4KLSAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCi0gICAgICAgICAgICBzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLAotICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVyczsKLQotICAgICAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCi0gICAg
ICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKAotICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAg
ICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWU6
OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQp
OwotICAgIH0KLQotICAgIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbWF4QXJndW1lbnRzID0gMHgxMDAwMDsKLSAgICB1bnNpZ25l
ZCBzaXplRnJhbWVGb3JWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1l
bnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3Rh
Y2tTbG90cyk7Ci0gICAgdm9pZCBsb2FkVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUq
IGZpcnN0RWxlbWVudERlc3QsIEpTVmFsdWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQz
Ml90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFy
Z3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0g
ICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMy
X3QgbGVuZ3RoKTsKLSAgICB2b2lkIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVp
bnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNl
dFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSog
ZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7Cit9OworCitK
U1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CisKK2lu
bGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKQoreworICAgIC8vIFdlIHdhbnQgdGhlIG5ldyBmcmFtZSB0byBiZSBhbGxvY2F0
ZWQgb24gYSBzdGFjayBhbGlnbmVkIG9mZnNldCB3aXRoIGEgc3RhY2sKKyAgICAvLyBhbGlnbmVk
IHNpemUuIEFsaWduIHRoZSBzaXplIGhlcmUuCisgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCksCisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpIC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnM7CisKKyAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCisgICAgdW5zaWduZWQg
cGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAg
ICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCisgICAgICAgIG51bVVzZWRTdGFja1Nsb3Rz
ICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVycyk7CisgICAgcmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7Cit9CisKK3Vuc2lnbmVkIHNpemVPZlZh
cmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAw
eDEwMDAwOwordW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSosIFZNJiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Ns
b3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JG
b3J3YXJkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25l
ZCBudW1Vc2VkU3RhY2tTbG90cyk7Cit2b2lkIGxvYWRWYXJhcmdzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSogZmlyc3RFbGVtZW50RGVzdCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNl
dCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1
ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgp
Owordm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMy
X3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMy
X3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1aW50MzJfdCBsZW5ndGgpOwogICAgIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOWEx
YTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmLi44YjNhMjM4YTRkYWYxZmM2NzkxNDBkOGJiZWM3
NzA5Yjg1NjhiYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNjEsNyArMjYx
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBtX2xhYmVs
c1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCldID0gbGFiZWwoKTsKIAogICAgICAgICBpZiAoSklU
SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRp
bmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1
Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5n
IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdP
ZmZzZXQoKSk7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPm9wY29kZUlEKCk7CiAKQEAgLTQzOCw2ICs0MzgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfaW50ZXJuYWxfZmllbGQp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfaW50ZXJuYWxfZmllbGQpCiAKKyAgICAgICAgREVG
SU5FX09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9u
ZXh0KQorCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9y
c2hpZnQpCiAgICAgICAgIERFRklORV9PUChvcF91bnNpZ25lZCkKQEAgLTUyNSw3ICs1MjgsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgcmFyZUNh
c2VQcm9maWxlID0gJnJhcmVDYXNlUHJvZmlsZXMuYXQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dD
YXNlKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBk
YXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5k
ZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0
YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2Rl
SW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIGlm
IChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRl
Y29kZVNsb3dQYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7CkBAIC01ODks
NiArNTkyLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfcHV0X3RvX3Njb3BlKQogCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9pdGVyYXRvcl9vcGVuKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3Jf
bmV4dCkKKwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh1bnNpZ25lZCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
U0xPV19PUChkZWMpCkBAIC02MjYsOCArNjMyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiQXQgIiwgZmlyc3RUbywgIiBzbG93OiAiLCBpdGVyIC0gbV9zbG93Q2FzZXMu
YmVnaW4oKSwgIlxuIik7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0
ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUbyAhPSBpdGVyLT50bywgIk5vdCBlbm91
Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUbyA9PSAoaXRlciAtIDEpLT50bywgIlRvbyBtYW55
IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5v
ZmZzZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGlu
IHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoZmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBtYW55
IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1t
MzIoMSksIEFic29sdXRlQWRkcmVzcygmcmFyZUNhc2VQcm9maWxlLT5tX2NvdW50ZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxMTgyYWEwNzI5YTI3NDkxMDA0ZjQ1
ZTFlYTZhYzEuLjgzYWUxYTdiNjk4ZDY5MzNkYmI4YTAzNzE5MDQ5ZWMyMjU4MThmNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk3LDYgKzI5Nyw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogCisgICAg
ICAgIHZvaWQgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dU
b0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CisKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShKdW1w
KTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYpOwogICAgICAgICB2
b2lkIGFkZFNsb3dDYXNlKCk7CkBAIC02NzYsNiArNjc5LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAorICAgICAg
ICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVy
YXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dD
YXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYs
IGJvb2wgaXNVbnNpZ25lZCk7CiAKQEAgLTkxMSw2ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExh
YmVsPiBtX2xhYmVsczsKKyAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9j
aGVja3BvaW50TGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9n
ZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFs
czsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlk
c1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZTFlNTY1
ZGM1MjQ5ZjZhY2ZkYWEyNGJmZmI0NDcxZmZjYjIwYjg2Ni4uMDkxZWU5Mzg1MzA1ZDM3OTdjMmFk
ZWI2YTM2MTBiZTAzNTliMTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKEpTVkFMVUU2NCkKICNpbmNsdWRlICJKSVQuaCIK
IAorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCkBAIC00Miw4ICs0NCw4
IEBACiAjaW5jbHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdu
bWVudC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9w
Pgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7
Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCk7CisgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCksIHJlZ1QwKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CkBAIC02MSwyMCArNjMsMjEgQEAgc3RkOjplbmFibGVfaWZfdDwKICwgdm9p
ZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0lu
Zm8qKQogeworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnQgPSBtX2J5dGVjb2RlSW5kZXguY2hlY2tw
b2ludCgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgIGludCBhcmdDb3VudCA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBpbnQgcmVnaXN0
ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOworICAgIGludCBh
cmdDb3VudEluY2x1ZGluZ1RoaXMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRl
Y29kZSwgY2hlY2twb2ludCk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0
PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQp
KTsKIAogICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIo
cmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygw
KSksIHJlZ1QwKTsKICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsK
ICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHJlZ1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlua0lu
Zm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAg
ICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50KS5h
ZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7
CiAgICAgfQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVv
ZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rl
ciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0Nv
dW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyksIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIH0KIAogCkBAIC0yMDcsNyArMjEwLDcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25l
ZCBjYWxsTGlua0luZm9JbmQKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJ
RDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1
YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5tX2NhbGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2lu
dCgpKTsKIAogICAgIC8qIENhbGxlciBhbHdheXM6CiAgICAgICAgIC0gVXBkYXRlcyBjYWxsRnJh
bWVSZWdpc3RlciB0byBjYWxsZWUgY2FsbEZyYW1lLgpAQCAtMjM0LDkgKzIzNyw4IEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWdu
ZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJl
Z1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAot
ICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKSB7CisgICAgaWYgKGNvbXBpbGVDYWxs
RXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBEYXRhTGFiZWxQ
dHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBKdW1wIHNsb3dDYXNlID0gYnJh
bmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25D
aGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CkBAIC0zODAsNiArMzgyLDE4NCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVj
dD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBz
d2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1
cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxOYXJyb3c+OworICAgICAgICBjYXNlIFdpZGUxNjog
cmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTE2PjsKKyAgICAgICAgY2FzZSBXaWRl
MzI6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUzMj47CisgICAgICAgIGRlZmF1
bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOwor
ICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9u
LCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1
bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86
OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVy
YXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Bl
bj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJl
YWNoZWQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoaXRlcmF0b3IpIGlzIGluIHJlZ1QwCisKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZ2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQ7Cisg
ICAgCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKKworICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihp
ZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQp
OworCisgICAgZmFzdENhc2UubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlv
biwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZv
ckNoZWNrcG9pbnQoanVtcCgpKTsKKworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAg
IFZpcnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKKyAgICBVbmlxdWVk
U3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworCisg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKKyAgICAKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAg
ICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJv
dzogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8TmFycm93PjsKKyAgICAgICAgY2FzZSBX
aWRlMTY6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUxNj47CisgICAgICAgIGNh
c2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+OworICAgICAg
ICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
fSkoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCByZWdU
MCk7CisgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHkocmVnVDApOworICAg
IHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAm
bWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0
aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRp
b25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKKyAgICBv
cjgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVy
aWMpKSwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5N
b2RlcykpOworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBt
X2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8g
Y2FsbCByZXN1bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09iamVjdCkgaW4gcmVnVDAKKworICAgIEdQ
UlJlZyB2YWx1ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7
CisgICAgR1BSUmVnIGRvbmVHUFIgPSByZWdUMTsKKyAgICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwg
Z2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0IGdldCBieSBpZCBiZWxvdy4KKyAgICBtb3ZlKHZhbHVl
R1BSLCBpdGVyUmVzdWx0R1BSKTsKKworICAgIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGl0ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZl
ZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAgICAg
IHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
KSksIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCkp
LCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Cisg
ICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJ
ZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kb25lLCBkb25l
R1BSKTsKKyAgICAgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICB9CisKKworICAgIHsKKyAg
ICAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9
IHJlZ1QzOworICAgICAgICBjb25zdCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGZhbHNlOworICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZU
cnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBS
ZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2Vu
KAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVy
dHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOworCisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGluayh0
aGlzKTsKKyAgICB9CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+
KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1w
U2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7CisgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJS
ZXN1bHRHUFIgPSByZWdUMjsKKworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAg
ICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNo
SWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFu
Y2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAg
ICAgICAgCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJS
ZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkb25l
VlJlZywgcmVnVDEpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1
bXAoKSk7CisKKyAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0KKworICAgIHsgICAKKyAg
ICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZh
bHVlVlJlZyA9IGJ5dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BS
ID0gcmVnVDA7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAg
ICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9
CisKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IDkwNjk2Y2Jl
YzEwZTM5M2I5OTcwZjBlYjIwMTE4ZDIxOTc0YzM1MjUuLmQxNDBhYWM5YmUyZDU0MDNkMWJjMGQ5
OTEyYWU5ZTEwNWY4MGQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAKQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93
Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAg
ICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExB
VEZPUk0oKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKKyAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAppbmRleCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUxYmEyNzU2NTUzM2Y0Li4yN2E1
N2Y0ZWUzNjE2NGFjZThlMzlmMzY4Y2U3NjViZjE1ZGRmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
ZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUg
IkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTA1LDcgKzEwNyw3IEBAIEFMV0FZ
U19JTkxJTkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENhbGwoQ29kZVB0cjxOb1B0clRh
Zz4gdGFyZ2V0KQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUo
KQogewotICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KS5iaXRzKCk7CisgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhhdCB0
aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwg
ZnJhbWUgb24KQEAgLTE4Myw2ICsxODUsMjUgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aGFz
QW55U2xvd0Nhc2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5PiYgc2xvd0Nhc2VzLCBWZWN0b3IKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6Y2hlY2twb2ludFJlYWNoZWQo
KQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRo
b2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24s
IHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRleCA9
IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fY2hlY2twb2ludExhYmVs
cy5hZGQobV9ieXRlY29kZUluZGV4LCBsYWJlbCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d1RvSG90Rm9yQ2hlY2twb2ludChKdW1wIGp1bXApCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVy
aW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMg
c2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKworICAgIGF1
dG8gaXRlciA9IG1fY2hlY2twb2ludExhYmVscy5maW5kKG1fYnl0ZWNvZGVJbmRleCk7CisgICAg
QVNTRVJUKGl0ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxzLmVuZCgpKTsKKyAgICBqdW1wLmxpbmtU
byhpdGVyLT52YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFkZFNs
b3dDYXNlKEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4KTsgLy8gVGhp
cyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVy
YXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldC4KQEAgLTMxOSw3ICszNDAsNyBA
QCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoTWV0YWRhdGEmIG1ldGFk
YXRhKQogewogICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICByZXR1cm47
Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YS5tX3Byb2ZpbGUpOworICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUodmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBtX2J5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5
cGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2FlMTUwY2M2NjEwNzYyYmFjYzhiZTQyMjA3M2Fh
ZDY0YWIzMTE5MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMzZGZiYmYwZTMzNjBkMzZmNTVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMzQsNiAr
MTM0LDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dF
cnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgQVNTRVJUKHZtLnRhcmdldE1h
Y2hpbmVQQ0ZvclRocm93KTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93
SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4
ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1Li45ZmNjNDFkZWM0NTgyYzk2
NTI5MjM2NTVkYThmMzAyNjk1ZGY3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUo
Vk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5kbGVF
eGNlcHRpb24oVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElz
Tm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IoQ29kZUJsb2NrKikgV1RGX0lO
VEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpT
R2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggOGRlYTdmMjc4ZTc2NjJlNTAzMTRjZWI5YjA4
MzM5Zjg3YmZkYTQ5Ny4uNjg2ODllODMzODMzYjE1NmRmYzgwOWQwMTJhMDc5NjcxYzRmNzc5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVT
dGF0ZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKQEAgLTgyLDYgKzgz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7IFwKICAgICBWTSYg
dm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsgXAorICAgIGRhdGFMb2dMbklmKExMSU5UX1RSQUNJTkcgJiYgT3B0aW9u
czo6dHJhY2VMTEludFNsb3dQYXRoKCksICJDYWxsaW5nIHNsb3cgcGF0aCAiLCBXVEZfUFJFVFRZ
X0ZVTkNUSU9OKTsgXAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pCiAKICNpZm5kZWYgTkRFQlVHCkBAIC02OTMsNyArNjk1LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiB9CiAKIAotc3RhdGljIHZvaWQgc2V0
dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBPcEdldEJ5
SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBz
bG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFBy
b3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0
YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2Vs
bC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3NDMsMzkgQEAgc3RhdGljIHZvaWQgc2V0
dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBDb2QKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2spOwogICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCi0gICAgICAgICAgICBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNs
b3RCYXNlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1
cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi0KLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlE
KGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgTExJTlRfQkVHSU4o
KTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7
Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV9iYXNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXQpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVj
dCwgaWRlbnQsIHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGNhbGxG
cmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7Ci0gICAgCisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCiAgICAgaWYgKCFMTElOVF9BTFdB
WVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAgICYm
IHNsb3QuaXNDYWNoZWFibGUoKQogICAgICAgICAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAg
ICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAobWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6RGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpVbnNldDoKLSAgICAgICAg
ICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9k
ZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
LnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgR2V0QnlJZE1vZGU6OlByb3RvTG9hZDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJl
SUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5wcm90b0xvYWRN
b2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IDA7CkBAIC03OTksMzUgKzc5
NiwxMDMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAg
ICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsK
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2sp
OwogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hl
LgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2Rl
V2l0aG91dENhY2hlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVX
aXRob3V0Q2FjaGUoKTsKIAogICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNh
Y2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5o
aXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5l
ZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgp
OwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNh
Y2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgbWV0YWRh
dGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAg
ICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwog
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNo
aW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJh
c2UoKSAhPSBiYXNlVmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICghKC0t
bWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAgICAgICAgICAgICAgIHNldHVw
R2V0QnlJZFByb3RvdHlwZUNhY2hlKGdsb2JhbE9iamVjdCwgdm0sIGNvZGVCbG9jaywgcGMsIG1l
dGFkYXRhLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
ICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYmIGlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7CiAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwotICAgICAg
ICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7Cisg
ICAgICAgICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQogCi0gICAgTExJTlRfUFJPRklMRV9W
QUxVRShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQg
PSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBn
bG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsK
KyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKK30KKworTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQoreworICAgIExM
SU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JPcGVu
PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
KyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
aXRlcmF0b3IpOworICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxM
SW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0
PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
KyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUg
c2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29p
bmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgUmVnaXN0ZXImIGRvbmVS
ZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworCisgICAg
aWYgKCFpdGVyYXRvclJldHVybi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiJfcykpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRH
ZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnBy
b3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZG9uZVJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOworICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVy
biB2YWx1ZSB0bXAgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2Rl
IG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIFJlZ2lzdGVyJiB2YWx1ZVJl
Z2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIEpT
VmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKKworICAgIEpT
VmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEu
bV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
dmFsdWVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fdmFsdWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
ICAgIExMSU5UX0VORCgpOworfQorCisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE1NjMsNyArMTYyOCw3IEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUs
IENvZGVTcGVjaWFsaXphdGlvbktpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IDApCiB7CiAgICAg
Ly8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCkBAIC0xNTcx
LDE2ICsxNjM2LDE2IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgLy8gLSBJZiBwb3Nz
aWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KICAgICAvLyAtIFJldHVybiBhIHR1
cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFt
ZS4KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9jYWxsZWUpOworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBjYWxsZWVGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwog
ICAgIAotICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBieXRlY29kZS5t
X2FyZ3Y7CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAtIHN0YWNrT2Zm
c2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpOwogICAgIAot
ICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhieXRlY29kZS5t
X2FyZ2MpOworICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7
CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVy
RnJhbWUoY2FsbEZyYW1lKTsKICAgICAKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2lu
ZCwgY2FsbGVlQXNWYWx1ZSwgJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4g
c2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmY2FsbExpbmtJbmZv
Rm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NhbGwpCkBAIC0xNjA0LDYgKzE2NjksMjggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCkKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcENvbnN0cnVj
dD4oKSwgQ29kZUZvckNvbnN0cnVjdCkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBz
bG93IG9wZW5fY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdl
bmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCks
IENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCkpOworfQorCitMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCk7CitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRh
dGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8
T3BJdGVyYXRvck5leHQ+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5l
eHQpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9y
X3ZhcmFyZ3MpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE5OTAsNiArMjA3Nyw0NCBAQCBz
dGF0aWMgdm9pZCBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU0dsb2JhbE9iamVjdAogICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29k
ZS5tX2RzdCkgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yT3BlbkNo
ZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck9wZW4mIGJ5dGVjb2RlKQoreworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAg
ICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4g
b2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBKU1ZhbHVlIG5leHQg
PSBpdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUihieXRlY29kZS5tX25leHQpID0gbmV4dDsKK30KKworc3RhdGljIHZvaWQgaGFuZGxl
SXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJhdG9yTmV4dCYgYnl0ZWNvZGUs
IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlJiBzaWRlU3RhdGUpCit7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRl
eCA9IHNpZGVTdGF0ZS5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKKworICAgIGF1dG8mIHZh
bHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7Cisg
ICAgYXV0byBpdGVyYXRvclJlc3VsdE9iamVjdCA9IHNpZGVTdGF0ZS50bXBzW09wSXRlcmF0b3JO
ZXh0OjpuZXh0UmVzdWx0XTsKKyAgICBhdXRvIG5leHQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
Ynl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCk7ICAgIAorCisgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKG5leHQsICJXZSBzaG91bGQgbm90IE9TUiBleGl0IHRvIGEgY2hlY2twb2ludCBm
b3IgZmFzdCBjYXNlcy4iKTsKKworICAgIGF1dG8mIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworICAgIGlmIChjaGVja3BvaW50SW5kZXggPT0g
T3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAgZG9uZVJlZ2lzdGVyID0gaXRlcmF0
b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorCisg
ICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChkb25lUmVnaXN0ZXIuanNWYWx1ZSgpLnRvQm9v
bGVhbihnbG9iYWxPYmplY3QpKQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0ganNVbmRlZmluZWQo
KTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVj
dC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSk7Cit9CisKIGlubGlu
ZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKIHsKICAgICBSRUxFQVNFX0FT
U0VSVCghY29kZUJsb2NrLT52bSgpLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7CkBAIC0yMDY2
LDYgKzIxOTEsMTUgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX2No
ZWNrcG9pbnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAgICAgaGFuZGxlVmFy
YXJnc0NoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BUYWls
Q2FsbFZhcmFyZ3M+KCksICpzaWRlU3RhdGUuZ2V0KCkpOwogICAgICAgICBicmVhazsKIAorICAg
IGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBoYW5kbGVJdGVyYXRvck9wZW5DaGVj
a3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JPcGVu
PigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDog
eworICAgICAgICBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCAqc2lkZVN0YXRlLmdldCgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTAzLDYgKzIyMzcsMTIg
QEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNDZWxsKiBjZWxsKQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOwog
fQogCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBkYXRhTG9nTG4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7Cit9CisKIGV4dGVy
biAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50X2NyYXNoKCkKIHsKICAgICBD
UkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjZGFmYTRmOTNjM2E5ZjA5ODA1NzFjODE3Njdj
MWEuLmY5YTM0ZGFiMzZkOWZhNTI3NTZhMTk4YjJkNzRmNzUyYzUzOGFjMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTEwMzIsNyArMTAzMiw3IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVO
YW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdp
ZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAotbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9u
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0
clRhZykKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNh
bGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBj
bG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVsc2UKQEAgLTEwNDUsMTEgKzEwNDUsMTEg
QEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFAKICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExM
SW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKICAgICAgICAgIyBjcmFzaGVz
LgogICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgZGlzcGF0
Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICAgICAgZGlzcGF0
Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAogICAgIGRlZmluZU9TUkV4aXRSZXR1cm5M
YWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwo
KQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3JvIHByZXBhcmVGb3JS
ZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCkBAIC0x
MTE3LDcgKzExMTcsMTEgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEs
IHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCiBl
bmQKIAotbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK21hY3JvIHNsb3dQYXRoRm9yQ29t
bW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0
aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJl
Q2FsbCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNo
LCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbENhbGxTbG93UGF0aCgKICAgICAgICAg
c2xvd1BhdGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIwIGFuZCByMQpAQCAtMTEyNiw3ICsxMTMw
LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXIKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJh
bWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQsIFNs
b3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRh
cmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0
aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcp
CiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0yMDE2LDcgKzIwMjAsNyBAQCBtYWNybyBkb0NhbGxW
YXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGZyYW1lU2xv
d1BhdGgsIHNsbwogICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNw
CiAgICAgICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAg
c2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVuZAogCiAKQEAgLTIwNzksNyArMjA4Myw3
IEBAIGVuZCkKICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4K
IAogX2xsaW50X29wX2NhbGxfZXZhbDoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1Bh
dGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAogICAgICAgICBu
YXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDg4LDcgKzIwOTIsNyBAQCBfbGxpbnRf
b3BfY2FsbF9ldmFsOgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9v
cF9jYWxsX2V2YWxfd2lkZTE2OgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZv
ckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCiAgICAgICAgIHdpZGUx
NiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwOTcsNyArMjEwMSw3IEBAIF9sbGludF9vcF9j
YWxsX2V2YWxfd2lkZTE2OgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGlu
dF9vcF9jYWxsX2V2YWxfd2lkZTMyOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0
aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCiAgICAgICAgIHdp
ZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIxMDcsNyArMjExMSw3IEBAIF9sbGludF9v
cF9jYWxsX2V2YWxfd2lkZTMyOgogCiAKIGNvbW1vbk9wKGxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50LCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNp
emUsIE9wQ2FsbEV2YWwsIG1hY3JvICgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BD
YWxsRXZhbCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8gKCkKICAgICAgICAgZGlzcGF0Y2hPcChz
aXplLCBvcF9jYWxsX2V2YWwpCiAgICAgZW5kKQogZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA4
MTg5MWMyMmU2MTgzYzgwNDJhYmRmY2U4ZDQzOTExYWY0MWY2NTRhLi43NGM0ODBkZjIxMjE3MTY1
NTBjNWZkNGYwODQ0YWIxMTA4ZmRjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjcsNyArNjcs
NyBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRh
LCBkaXNwYXRjaCwgZm4pCiAgICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAogICAgICAgICBtZXRh
ZGF0YSh0NSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQ1LCB0MSwg
dDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQx
LCB0MCkKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCkBAIC03NywxNiArNzcsMTcgQEAgZW5kCiAKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5n
IGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1tYWNy
byBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFjcm8g
ZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQ
QgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MykKKyAgICBnZXQoc2l6ZSwg
b3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQzKQogICAgIHN0b3JlaSByMSwgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMpCi0gICAgdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQogICAgIGRpc3BhdGNoKCkKKwog
ZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbikKQEAgLTYzMiw5ICs2MzMsOSBAQCBtYWNybyB3
cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVlRmll
bGROYW1lKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQogICAgIHN0b3JlaSB0
YWcsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFRhZ09m
ZnNldFttZXRhZGF0YV0KLSAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KKyAgICBz
dG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1f
YnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCiBlbmQKIAogCkBAIC0xMzc4LDcgKzEz
NzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJ
ZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVj
dDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWRE
aXJlY3QsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9w
cm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJl
Y3RTbG93OgpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAg
ICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAg
ICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2Rl
LmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIs
IHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0
dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgpAQCAtMTQxMyw3ICsxNDE0LDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJm
bHlbdDNdLCB0MAogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgLm9w
R2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgSW50MzJUYWcsIHQw
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0
MCkKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CkBAIC0xNDIx
LDcgKzE0MjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlk
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQx
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQz
LCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgVW5kZWZp
bmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVu
ZGVmaW5lZFRhZywgMCkKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlk
RGVmYXVsdDoKQEAgLTE0MzAsNyArMTQzMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAg
ICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2Rl
LmNhY2hlZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICBy
ZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE0NDAsNyArMTQ0MSw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVy
T1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0Miwg
dDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCBy
MCkKIAogZW5kKQpAQCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1bHRQYXlsb2FkLCBQ
YXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1MjcsNyArMTUyOCw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gz
CiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCiAg
ICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQot
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikK
KyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gz
LCBzY3JhdGNoMikKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTcyLDcgKzE1
NzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9wR2V0QnlWYWxOb3RFbXB0eToKICAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIs
IHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEp
CiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU4
NSw3ICsxNTg2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoK
ICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkK
ICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQyLCBy
MSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDIsIHIxLCBy
MCkKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xOTU3LDEwICsxOTU4LDEwIEBAIG1h
Y3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVw
YXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdP
ZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCiAgICAgICAgIHByZXBhcmVDYWxsKCVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0
NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlv
bihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0Vu
dHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRy
eVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVD
YWxsKQorICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQog
ICAgIGVuZCkKIGVuZAogCkBAIC0yMjg4LDcgKzIyODksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2Nv
cGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRG
cm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29w
ZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVu
ZAogCkBAIC0yMjk3LDcgKzIyOTgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9t
X3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAg
ICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3Qw
XSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9m
aWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0
MikKICAgICBlbmQKIApAQCAtMjMwNSw3ICsyMzA2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVd
LCB0MwogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdP
ZmZzZXRbdDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRf
dmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAgICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEs
IHQyKQogICAgIGVuZAogCkBAIC0yNTk0LDYgKzI1OTUsMTUgQEAgbGxpbnRPcFdpdGhSZXR1cm4o
b3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGMKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogZW5kKQogCitsbGludE9wKG9wX2l0ZXJh
dG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAg
ICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKKyAgICBi
cmVhaworZW5kKQorCitsbGludE9wKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwo
b3BfaXRlcmF0b3JfbmV4dCwgc2l6ZSkKKyAgICBicmVhaworZW5kKQogCiBsbGludE9wV2l0aFBy
b2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwgdDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CmluZGV4IGFlMmUzNzczZmZkY2M0MDY3NGM3YWFjMGMxZDRmZTZjZDBmYjc4NTkuLjg2MTM2ZTg1
N2M5Zjc4MjJiMjQ0NmM2MjZiZmRjN2EzZGZiYjJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02OCwyNiAr
NjgsMjYgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRh
ZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2
YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB0MSwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IG1fcHJvZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9y
ZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAK
LW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBz
dG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0
c1ttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1l
LCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFkYXRhXQogZW5kCiAKICMgQWZ0ZXIg
Y2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJl
IG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2FkUEMo
KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBtX2RzdCwgdDEpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lz
dGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNpemUs
IG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQy
LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgcjApCiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTEzNDAsNyArMTM0MCw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xv
dwogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEK
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZERpcmVjdCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJ
ZERpcmVjdFNsb3c6CkBAIC0xMzQ4LDUzICsxMzQ4LDU5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKKyMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCittYWNybyBwZXJmb3Jt
R2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmls
ZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0YSh0
MiwgdDEpCi0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9k
ZVt0Ml0sIHQxCi0gICAgZ2V0KG1fYmFzZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkYiAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKIAogLm9wR2V0
QnlJZERlZmF1bHQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVs
dCwgLm9wR2V0QnlJZFByb3RvTG9hZAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVm
YXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVm
YXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0s
IHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0
W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5v
cEdldEJ5SWRQcm90b0xvYWQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6
UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKICAgICBsb2FkaSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1l
dGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MwotICAgIGJpbmVxIHQzLCB0
MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2Rl
TWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQotICAgIGxvYWRwIE9w
R2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xv
dFt0Ml0sIHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCisgICAgYmluZXEgdDMs
IHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9k
ZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxv
YWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9h
ZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAg
cmV0dXJuKHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0
ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUg
dDMsIHQwCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFk
YXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCi0gICAgYnRpeiB0
MCwgSXNBcnJheSwgLm9wR2V0QnlJZFNsb3cKLSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFz
aywgLm9wR2V0QnlJZFNsb3cKKyAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAs
IHQyLCB0NSkKKyAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKKyAgICBidGl6IHQwLCBJ
bmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVj
dDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKLSAg
ICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdworICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAog
ICAgIG9ycSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQw
KQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0
MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1f
bW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEgdDAs
IHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBWYWx1
ZVVuZGVmaW5lZCkKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0
MSwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkKQogICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAor
ZW5kCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2Us
IHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0
QnlJZFNsb3cpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRh
ZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikK
KwogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X2J5X2lkKQogICAgIGRpc3BhdGNoKCkKQEAgLTE0MDIsNyArMTQwOCw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJl
dHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTQ5Nyw3
ICsxNTAzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFs
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBtYWNybyBmaW5pc2hHZXRC
eVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAg
ICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApA
QCAtMTU1OCw3ICsxNTY0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogLm9wR2V0QnlW
YWxEb25lOgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxl
LCB0NSwgdDIpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdl
OgpAQCAtMTU3MSw3ICsxNTc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1
cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3Zh
bCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIHQ1LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
cjApCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xOTQ4LDYgKzE5NTQsMzAgQEAgbWFjcm8g
YXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAuZG9uZToKIGVuZAogCitt
YWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykKKyAgICBtZXRhZGF0YSh0NSwgdDApCisgICAgZ2V0Q2FsbGVlKHQw
KQorCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCisgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xv
dworCisgICAgZ2V0QXJndW1lbnRTdGFydCh0MykKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgbmVn
cCB0MworICAgIGFkZHAgY2ZyLCB0MworICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQorICAgIGdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKQorICAgIHN0b3JlUEMoKQorICAgIHN0b3Jl
aSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAg
IG1vdmUgdDMsIHNwCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRy
eVB0clRhZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNh
bGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKwog
bWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHBy
ZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTE5NTYsMjQgKzE5ODYsMTkgQEAgbWFj
cm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBh
cmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBm
aWVsZE5hbWUsIGRzdCkKICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAotICAgICAgICBnZXQobV9j
YWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2Fs
bExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKLSAg
ICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCi0gICAgICAgIGJxbmVx
IHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1f
YXJndiwgdDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMKLSAgICAgICAgbmVncCB0MwotICAgICAg
ICBhZGRwIGNmciwgdDMKLSAgICAgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCi0gICAgICAgIGdl
dHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQyKQotICAgICAgICBzdG9yZVBDKCkKLSAg
ICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZz
ZXRbdDNdCi0gICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0s
IHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5
UHRyVGFnKQotCi0gICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNh
bGwpCisgICAgICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgICAgICBnZXQobV9jYWxs
ZWUsIHQwKQorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBnZXRBcmd1bWVudFN0YXJ0KGRz
dCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIGRzdCkKKyAg
ICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRDb3VudChkc3QpCisgICAgICAg
ICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCBkc3QpCisgICAgICAgIGVuZAor
CisgICAgICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwg
bV9wcm9maWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
Z2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50KQogICAgIGVuZCkK
IGVuZAogCkBAIC0yMjc2LDcgKzIzMDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9m
cm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAg
IG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFk
YXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MCwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUs
IHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQyKQogICAgICAgICByZXR1cm4odDIpCiAgICAgZW5kCiAKQEAgLTIyODQsMTQgKzIzMDksMTQg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6
Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAg
ICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRG
cm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBt
X3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFj
cm8gZ2V0Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0
YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRf
dmFyaWFibGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21T
Y29wZSwgdDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJv
ZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAgLTI1NTEsNyAr
MjU3Niw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV9jb250cm9sX2Zsb3csIE9w
UHJvZmlsZUNvbnRyb2xGbG93LCBtYWNybyAoc2l6ZSwKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAK
LQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0
MApAQCAtMjU2Nyw2ICsyNTkxLDE0NyBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9s
ZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQog
CiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4s
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFk
YXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRo
KF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0
V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dp
ZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQ
YXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZh
c3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgp
IGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2Vt
Ymx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3BhdGNo
KCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVja3Bv
aW50KCkKKyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdl
dENhbGxlZShkc3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAgZW5k
CisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAg
IGdldHUoc2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQK
KworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAg
bW92ZSAxLCBkc3QKKyAgICBlbmQKKworCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9vcGVu
LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCwgT3BJdGVyYXRvck9wZW4sIG1f
aXRlcmF0b3JQcm9maWxlLCBtX2l0ZXJhdG9yLCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUs
IGdvdG9HZXRCeUlkQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJ
bmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0
QnlJZFN0YXJ0OgorICAgIG1hY3JvIHN0b3JlTmV4dEFuZERpc3BhdGNoKHZhbHVlKQorICAgICAg
ICBtb3ZlIHZhbHVlLCB0MgorICAgICAgICBnZXQobV9uZXh0LCB0MSkKKyAgICAgICAgc3RvcmVx
IHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgbG9h
ZFZhcmlhYmxlKGdldCwgbV9pdGVyYXRvciwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNr
LCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxw
ZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0
b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlz
cGF0Y2gpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKKyAgICBkaXNwYXRj
aCgpCisKK2VuZCkKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcEl0
ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX25leHQsIHQwKQorICAgIGJ0cW56IHQwLCB0MCwg
Lml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFz
dE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9u
YXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93
UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8g
ZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFz
dF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0
V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBz
aG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIg
Y2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0
ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck5leHRHZW5lcmlj
OgorICAgIG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0RG9u
ZVN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQo
bV9uZXh0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1Ro
aXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck5leHQsIG1fc3RhY2tP
ZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhp
c0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgICMgVXNlIG1f
dmFsdWUgc2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0
ZXIuCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9uZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0
ZXJhdG9yX25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQsIG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1f
dmFsdWUsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldERvbmVDaGVja3BvaW50
LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0
QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXREb25lU3RhcnQ6CisgICAgbWFjcm8g
c3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFsdWUpCisgICAgICAgICMgdXNlIHQwIGJl
Y2F1c2UgcGVyZm9ybUdldEJ5SURIZWxwZXIgdXN1YWxseSBwdXRzIHRoZSBkb25lVmFsdWUgdGhl
cmUgYW5kIG9mZmxpbmVhc20gd2lsbCBlbGlkZSB0aGUgc2VsZiBtb3ZlLgorICAgICAgICBtb3Zl
IGRvbmVWYWx1ZSwgdDAKKyAgICAgICAgZ2V0KG1fZG9uZSwgdDEpCisgICAgICAgIHN0b3JlcSB0
MCwgW2NmciwgdDEsIDhdCisgICAgICAgIGptcCAuZ2V0VmFsdWVTdGFydAorICAgIGVuZAorCisK
KyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2Vs
bE1hc2ssIC5nZXREb25lU2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JO
ZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xvdzoK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25l
KQorICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lKQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDApCisKKyAgICAjIHN0b3Jl
RG9uZUFuZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUgZG9uZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1
ZVN0YXJ0OgorICAgICMgQnJhbmNoIHRvIHNsb3cgaWYgbm90IG1pc2MgcHJpbWl0aXZlLgorICAg
IGJ0cW56IHQwLCB+MHhmLCAuZ2V0VmFsdWVTbG93CisgICAgYnRpeiB0MCwgMHgxLCAubm90RG9u
ZQorICAgIGRpc3BhdGNoKCkKKworLm5vdERvbmU6CisgICAgbWFjcm8gc3RvcmVWYWx1ZUFuZERp
c3BhdGNoKHYpCisgICAgICAgIG1vdmUgdiwgdDIKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQor
ICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgICAgICBjaGVja1N0YWNrUG9pbnRl
ckFsaWdubWVudCh0MCwgMHhiYWRkYjAxZSkKKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAor
CisgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFi
b3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4KKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVl
LCB0MykKKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3Vs
dCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9y
ZS4KKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVN
ZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBz
dG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0Y2go
KQorZW5kKQorCisKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9w
R2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAg
ICBsb2FkVmFyaWFibGUoZ2V0LCBtX2Jhc2UsIHQxKQogICAgIGdldHUoc2l6ZSwgT3BHZXRJbnRl
cm5hbEZpZWxkLCBtX2luZGV4LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3RyYW5zZm9ybS5yYgppbmRleCA4ZDc2NzExNmMwNTRlNWVhNjY0ZWY0MDYyYzU2ZjI2MDVl
MGQ4YjQ1Li41ODlhZTBlMGYzZWQzNGI2NjFlODU2MmJjYTI5ODAyZWMxMGU1YjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCkBAIC02MjksNyAr
NjI5LDcgQEAgZW5kCiAKIGNsYXNzIE5vZGUKICAgICBkZWYgdmFsaWRhdGUKLSAgICAgICAgcmFp
c2UgIlVucmVzb2x2ZWQgI3tkdW1wfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICBy
YWlzZSAiVW5yZXNvbHZlZCAnI3tkdW1wfScgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICBl
bmQKICAgICAKICAgICBkZWYgdmFsaWRhdGVDaGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjhkZTk2NTU4MmY3ZDkx
MjcxMzM3ZDU0MzE5MDNlODMxOGMyNmY0Ny4uOTNlN2U3MzYwMWJmNzNlN2RhZDc1NGVhYmMxNTYz
ZDhhMGU4NzEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAg
LTE1Myw4ICsxNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFJFVFVSTl9QUk9GSUxF
RCh2YWx1ZV9fKSBcCiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHZhbHVlX18sIFBST0ZJTEVf
VkFMVUUocmV0dXJuVmFsdWVfXykpCiAKLSNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8g
eyBcCi0gICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9wcm9maWxlLm1fYnVj
a2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyNkZWZpbmUgUFJPRklMRV9WQUxV
RSh2YWx1ZV9fKSBcCisgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUpCisK
KyNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAorICAg
ICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1sw
XSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3Rh
dGljIHZvaWQgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpAQCAtOTY1LDYgKzk2OSwxMjggQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKQogICAgIFJFVFVSTihqc0Jvb2xlYW4o
YXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKSk7CiB9CiAKK3RlbXBsYXRlPE9wY29k
ZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGFQdHIpCit7CisgICAgLy8gRG9uJ3Qgc2V0IFBDOyB3ZSBjYW4ndCB0aHJvdyBh
bmQgaXQncyByZWxhdGl2ZWx5IHNsb3cuCisgICAgQkVHSU5fTk9fU0VUX1BDKCk7CisKKyAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yT3Blbiwgd2lkdGg+KCk7
CisgICAgYXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yT3Blbjo6
TWV0YWRhdGEqPihtZXRhZGF0YVB0cik7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IEdFVF9DKGJ5
dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKTsKKyAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJh
YmxlLCBtX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdF
VF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBhdXRvJiBpdGVy
YXRvciA9IEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKworICAgIGF1dG8gcHJlcGFyZUZvckZh
c3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJh
eUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBUaGlzIGlz
IGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3RpbGwg
dmFsaWQuCisgICAgICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICBpZiAo
IXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9k
ZTo6R2VuZXJpYzsgCisKKyAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvckZ1bmN0aW9uKCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAg
ICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFdlIHNo
b3VsZCBiZSBnb29kIHRvIGdvLgorICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRh
LnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRl
cmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgICAgICBHRVQoYnl0ZWNvZGUubV9uZXh0KSA9IEpT
VmFsdWUoKTsKKyAgICAgICAgYXV0byogaXRlcmF0ZWRPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihpdGVyYWJsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGl0ZXJhdG9yID0gSlNBcnJheUl0
ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgp
LCBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgfQorICAg
ICAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2Zp
bGUpOworICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgIH07CisK
KyAgICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7CisgICAgICAgIGlmIChw
cmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5
KQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgfQorCisgICAgLy8gUmV0dXJu
IHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1f
aXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0
YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMp
KTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9m
YXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2
b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxO
YXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5U
eXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAg
ICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1l
dGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9v
cGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwordGVtcGxh
dGU8T3Bjb2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck5leHQsIHdpZHRoPigpOworICAgIGF1
dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck5leHQ6Ok1ldGFkYXRh
Kj4obWV0YWRhdGFQdHIpOworCisgICAgQVNTRVJUKCFHRVQoYnl0ZWNvZGUubV9uZXh0KS5qc1Zh
bHVlKCkpOworICAgIEpTT2JqZWN0KiBpdGVyYXRvciA9IGpzQ2FzdDxKU09iamVjdCo+KEdFVChi
eXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCkpOzsKKyAgICBKU0NlbGwqIGl0ZXJhYmxlID0g
R0VUKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKKyAgICBpZiAoYXV0
byBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRl
cmF0b3IpKSB7CisgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5
Kj4odm0sIGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2Zp
bGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKworICAgICAgICAg
ICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAg
ICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQo
SlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOworICAgICAgICAgICAgaW50NjRfdCBpbmRl
eCA9IGluZGV4U2xvdC5nZXQoKS5hc0FueUludCgpOworICAgICAgICAgICAgQVNTRVJUKDAgPD0g
aW5kZXggJiYgaW5kZXggPD0gbWF4U2FmZUludGVnZXIoKSk7CisKKyAgICAgICAgICAgIEpTVmFs
dWUgdmFsdWU7CisgICAgICAgICAgICBib29sIGRvbmUgPSBpbmRleCA9PSAtMSB8fCBpbmRleCA+
PSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV9kb25lKSA9IGpz
Qm9vbGVhbihkb25lKTsKKyAgICAgICAgICAgIGlmICghZG9uZSkgeworICAgICAgICAgICAgICAg
IC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEg
cHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IGFycmF5LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRl
eCkpOworICAgICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgICAgICAgICAgICAg
IFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIG1fdmFsdWVQcm9maWxlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUgYmVj
YXVzZSB3ZSBrbm93IHRoaXMgaXMgYSBwcmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5kZXhT
bG90LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoLTEpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFsdWU7CisgICAgICAgICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRp
b25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkg
aW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1v
ZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25N
b2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5U
eXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAg
ICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1l
dGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90
cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1Bh
dGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMihDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0
cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFt
ZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9i
eV92YWwpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4ZGI1ZjU1OGZhNzg1MDRj
YWIwOTY0M2M2MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRjZDhiMmVlMGEzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAg
LTI0Niw2ICsyNDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVj
dF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24p
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RF
Q0woaXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRl
cmF0b3JfbmV4dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpAQCAtMjgzLDYgKzI4
NSwxOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3Nw
cmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwogCit0ZW1wbGF0ZTxP
cGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVy
YXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSos
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCit0ZW1wbGF0ZTxPcGNv
ZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRv
cl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCog
bWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJh
dG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19Q
QVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1c2luZyBTbG93UGF0aEZ1
bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShDYWxsRnJhbWUqLCBjb25z
dCBJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDM1MzU5MDkwNDkxY2UwYWZkY2Q4YmJi
NGY4NzViYjM4MThjMjJkM2UuLjY4NzRlYzc5MDM3NThjZjlkZjQ0MzlhNjIzOTA2MWNmMjcwNTg5
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAt
MzMwLDYgKzMzMCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRy
aW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+
IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCit7CisgICAg
c3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgorICAg
IGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
bktpbmQ6OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICBjYXNlIFR5
cGVkQXJyYXlLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6S2V5
czsKKyAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlF
bnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6RW50cmllczsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KK30KKwor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJkN2Q4YWMyMDU0MmU4
YThkN2UxOGM0MmJhZTkuLjcxYmEzYWFkMzU5Njk1NmFmYzJkMGFiZmM2ZmQxZGUxN2FmMWVkNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xODcsNiAr
MTg3LDggQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBEYXRhVmlld1NldEZsb2F0
NjQsCiB9OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJp
bnNpYyhJbnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThh
OTY4N2VjNjA5Li40ZmQwYTExNjUyNWNkYzUzMmE1M2QwYjhiNWFjYjUzMzg3YThkYmI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAt
NjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJh
dGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5k
KTsKKyAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQp
CisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2Jq
ZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsKKyAgICB9CiAgICAg
c3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1
Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFl
ZC4uZDMwMmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1
YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBib29sIGlzQ2FsbGFibGUo
Vk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlwZSYsIENhbGxEYXRh
JikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7CiAgICAgYm9vbCBp
c0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CmluZGV4IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFkODBhZjcuLjYyZjlkMjRm
MTVkMDcyNDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODI3LDYgKzgyNywxMyBA
QCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29uc3QKICAgICByZXR1
cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0NhbGxhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1bnVzZWRUeXBlOworICAg
IENhbGxEYXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFibGUodm0sIHVudXNlZFR5
cGUsIHVudXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZN
JiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5k
ZXggZThiMjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzExYi4uYjI1MDM1NjljODQy
MjU2MDExNDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8ganNDYXN0KEpTVmFsdWUg
ZnJvbSkKIC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmluZSBGT1JfRUFDSF9KU19E
WU5BTUlDX0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAgIG1hY3JvKEpTSW1tdXRh
YmxlQnV0dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlwZSwgSlNUeXBlOjpK
U0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0FycmF5SXRlcmF0b3IsIEpT
VHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlKSBc
CiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlw
ZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0LCBG
aXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9iamVj
dCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBcCiAg
ICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1
bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJu
YWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUpIFwKICAgICBtYWNy
byhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBc
CisgICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUs
IEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXIs
IEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSkgXAogICAg
IG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlUeXBlLCBMYXN0VHlwZWRB
cnJheVR5cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSwg
SlNUeXBlOjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYzZTNjOGZmNjIwOGY2
MjVmNTcwMzY4NzNmMC4uMTE3M2FhMDg4ZGNiNzZjMDRmZTRiNWZjMGIxYTQ5MzkzMzkxZTc4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtNTU5LDEwICs1NTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkK
ICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CiAgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwg
MCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1
bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKICAgICAgICAgfSk7Ci0gICAgbV9hcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
cy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7
Ci0gICAgICAgIH0pOworICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnNldCh2bSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykp
OwogCiAgICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAgLTE3NDksNyArMTc0
Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24u
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24udmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlv
bi52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24u
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0
aW9uLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3NGIyMTc2NDcxYTlm
MDUxMy4uMGFjZGZhZWQ5ZTlhZGZjMjM4YWI3YzIzNDJlMzU0OTMwYWE2OTIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTksNyAr
Mjk5LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5j
dGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247Ci0gICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rp
b24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwpAQCAtNjA4LDcg
KzYwOCw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1Rv
U3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0
aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsg
fQorICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiog
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3Rv
Y29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFi
aWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9CkBAIC02MTksNiArNjE5LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIG51bWJlclBy
b3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uLmdldEluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9CiAgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAg
ICAgSlNGdW5jdGlvbiogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1
bmN0aW9uKiBhcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKTsgfQogICAgIEpTT2JqZWN0KiByZWdFeHBQ
cm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9T
eW1ib2xSZXBsYWNlLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2Jh
bEdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0
dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAppbmRleCA5OTY5NGQwMTI3YmFlMWNlYTVjZjYzZmE5Y2RkOTc3MDAwY2I3YWE0Li5mYjQwZmM5
NTA3NmFjNTBhMGEzOTRmNThjNTNlYjFjYmRiMDZmYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTExOSw2ICsxMTksOCBAQCBjb25zdGV4cHIg
Ym9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWdu
ZWQsIHNoYWRvd0NoaWNrZW5Mb2dTaXplLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTWF4VGFpbERlbGV0ZWRGcmFtZXNTaXplLCAxMjgsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIFwKKyAgICB2KEJvb2wsIHVzZUl0ZXJhdGlvbkludHJpbnNp
Y3MsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKICAgICB2KEJvb2wsIHVzZU9TTG9n
LCBmYWxzZSwgTm9ybWFsLCAiTG9nIGRhdGFMb2coKXMgdG8gb3NfbG9nIGluc3RlYWQgb2Ygc3Rk
ZXJyIikgXAogICAgIC8qIGR1bXBEaXNhc3NlbWJseSBpbXBsaWVzIGR1bXBERkdEaXNhc3NlbWJs
eS4gKi8gXAogICAgIHYoQm9vbCwgZHVtcERpc2Fzc2VtYmx5LCBmYWxzZSwgTm9ybWFsLCAiZHVt
cHMgZGlzYXNzZW1ibHkgb2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24gY29tcGlsYXRpb24i
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA3
NjRhZDA2NWFjMDExZTMzYzMyMzhjZDlkYTk1MzljMTU4MzkyM2U1Li45YzJjZTdhZmFlNmUzOGU3
YTYwODAyNmY1MTc3MTEwZTNjODU1NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNjgsNiArMTI2OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25z
dAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBCcmllZihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBDU3Ry
aW5nJiBzdHJpbmcpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIlIiwgc3RyaW5nLCAiOiIsIGNs
YXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIGlmIChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5n
U2hhcGVNYXNrKQorICAgICAgICBvdXQucHJpbnQoIiwiLCBJbmRleGluZ1R5cGVEdW1wKGluZGV4
aW5nVHlwZSgpKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wQ29udGV4dEhlYWRlcihQcmlu
dFN0cmVhbSYgb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0
b3JPdmVybG9hZHMuaCBiL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRz
LmgKaW5kZXggMzU3YmEyZmEyZjc5MjlhNmE5OThhOWE0ZWYxNGQyYmU1NzU0NjM3MS4uNTZhYmM0
YjUzZWM5ZmFiNjA3NWJmNmQyZWJiYmVkMWYzM2NkZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9F
bnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCkBAIC01OSwzICs1OSw5IEBACiAKICNkZWZpbmUg
T1ZFUkxPQURfUkVMQVRJT05BTF9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFR1JB
TFMoZW51bU5hbWUpIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNT
X1dIRU4oZW51bU5hbWUsIHN0ZDo6aXNfaW50ZWdyYWxfdjxUPikKIAorI2RlZmluZSBPVkVSTE9B
RF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBlbmFibGVF
eHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihl
bnVtTmFtZSwgfCwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZP
Ul9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsICYsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBP
VkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBeLCBlbmFibGVF
eHByZXNzaW9uKSBcCisKKyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VO
VU1fQ0xBU1NfV0lUSF9JTlRFUkdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9CSVRXSVNFX09QRVJB
VE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4p
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDlkYzk4OWM1NWI0MzRlZmY2ZmQzZWY0ZGEzYTUyM2M3ZmQ1NzNhYjIuLjlmN2RjMDdiNWUwYTI3
ZmEwYWZiYjVjYTcxY2Q5ZDk1MWYzYWIwMjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDQtMTUgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24g
aG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJl
c3MvY3VzdG9tLWl0ZXJhdG9ycy5qczoKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKGl0ZXIu
cmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KToKKyAgICAgICAg
KGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50
ZXJmYWNlQnJlYWtUZXN0UmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWFycmF5LW1p
eGVkLXZhbHVlcy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mv
Z2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qczogQWRkZWQuCisgICAgICAgIChm
aW5kKToKKyAgICAgICAgKGkubGV0LnYub2YuZmluZCk6CisgICAgICAgICogc3RyZXNzL2dlbmVy
YXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6
CisgICAgICAgIChzZXQgYWRkKToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRv
bmUtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJu
LmdldCBkb25lKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5s
ZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJl
dHVybik6CisgICAgICAgICogc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanM6
IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IHZhbHVlKToK
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
U3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAg
ICAgICogc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qczogQWRk
ZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgor
ICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0
ZXItaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCBkb25lKToKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1
cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tbmV4
dC1pbi1mb3Itb2YtaGVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5l
eHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAg
KGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBz
dHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQu
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
LmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorCiAy
MDIwLTA0LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNr
aXAgYWxsIGxvdyBleGVjdXRhYmxlIG1lbW9yeSB3YXNtIHRlc3RzIG9uIGFybTY0CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVz
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmll
cy5qcwppbmRleCA1NWVjYzBiZmNmOTE5Y2FjYWU3ZmQxNWRkYjQwYjE0ZmRjYTk0ZWRhLi4yMDEy
YjkxMjg1MGY1ODExNjdmYmQzMTA1MDU5Yjc2ZDc2NjNiNmQ4IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMKQEAg
LTMsMTAgKzMsMTIgQEAgZnVuY3Rpb24gZm9vKCkgewogICAgIHZhciBhcnJheSA9IFtdOwogICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMjUwMDA7IGkrKykKICAgICAgICAgYXJyYXkucHVzaChpKTsK
LSAgICAKKwogICAgIHZhciByZXN1bHQgPSAwOwotICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBv
ZiBhcnJheS5lbnRyaWVzKCkpCisgICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGFycmF5LmVu
dHJpZXMoKSkgeworICAgICAgICBwcmludChrZXkgKyAiICIgKyAkdm0uaW5kZXhpbmdNb2RlKGFy
cmF5KSk7CiAgICAgICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1ZSArIGFycmF5W2tleV07CisgICAg
fQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9jdXN0b20taXRlcmF0b3JzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5q
cwppbmRleCBmZDY0MTNmZTNiNWU5MDNhZmZlMzgwM2ZkMDA0YzBjYjFmMWM2NGYzLi5kM2QxYmQ3
ZTg1OGU4NzRmYmQxMTNkODJmOTIxMWVhNGJkNWVmN2I1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVy
YXRvcnMuanMKQEAgLTIyLDcgKzIyLDcgQEAgZm9yICh2YXIgdmFsdWUgb2YgaXRlcikgewogICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwogfQogaWYgKHJldHVybkNh
bGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC01Myw3ICs1Myw3IEBAIHRy
eSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjog
VGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0
aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAg
ICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMTA4LDEwICsxMDgs
MTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0g
IkVycm9yOiBsb29raW5nIHVwIG5leHQuIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJy
b3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQp
Ci0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgdGhyb3cgbmV3IEVy
cm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHRyeSB7
CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9v
a2luZyB1cCByZXR1cm4uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3du
OiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIAogCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB0
cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6
IG5leHQgaXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93
bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRo
cm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0
dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAgLTE4Myw3ICsxODMsNyBAQCB2YXIgaXRlciA9IHsK
ICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQg
PSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiAKQEAg
LTE5Myw3ICsxOTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3Ry
aW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlm
ICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQu
IjsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjog
ZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJv
dyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJy
ZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiB0cnkgewpAQCAtMjE4LDggKzIxOCw4IEBA
IHRyeSB7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0gY2F0Y2ggKGUpIHsKLSAgICBpZiAoU3Ry
aW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIikKLSAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJy
b3I6IHJldHVybiB3YXMgY2FsbGVkIikKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJu
Q2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTI1
NSwxMCArMjU1LDEwIEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KG5vdEl0
ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGlm
IChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhy
b3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmIChyZXR1cm5D
YWxsZWQpCi0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiB9CiAKIGZ1bmN0aW9uIGl0
ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CkBAIC0y
ODIsNyArMjgyLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4o
bm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAg
ICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0gICAg
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgICAgIHRocm93
ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTMxMyw3ICszMTMsNyBAQCBmdW5j
dGlvbiBpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybihub3RJdGVyYXRvclJlc3VsdCkg
ewogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9
PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3Qu
IikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7Cisg
ICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAoIXJldHVybkNhbGxlZCkKICAgICAg
ICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5OGE2MDQzM2RmMmRj
MTc1M2E5ZDdiODhiOTZiZDMyNDAwNmY4MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanMKQEAgLTAsMCArMSwyMyBAQAorZnVuY3Rp
b24gdGVzdChhcnJheSkgeworICAgIGxldCBzdW0gPSAwOworICAgIGZvciAobGV0IHYgb2YgYXJy
YXkpIHsKKyAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAibnVtYmVyIikKKyAgICAgICAgICAgIHN1
bSArPSB2OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gc3VtOworICAgIH0KK30K
K25vSW5saW5lKHRlc3QpOworCitsZXQgYXJyYXkgPSBbMSwyLDMsNCwic3RyaW5nIl07Citmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgaWYgKHRlc3QoYXJyYXkpICE9PSAxMCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CisKKworYXJyYXkgPSBbMSwyLDMsNCx7fV0K
K2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBpZiAodGVzdChhcnJheSkgIT09
IDEwKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanMgYi9KU1Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUz
OGI3ZWU4MTQyNGEyZDJmNTM4Y2U3YjIwNTlkOGQ2ZTQ1OGU0YmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzCkBA
IC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBwKQoreworICAgIGZvciAobGV0
IFthcnJheV0gb2Ygbm9kZXMpIHsKKyAgICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2ID09
PSBwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAgICB9
Cit9Citub0lubGluZShmaW5kKTsKKworbGV0IG1hcCA9IG5ldyBNYXAoKTsKK25vSW5saW5lKG1h
cFtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytp
KQorICAgIG1hcC5zZXQoWzEsMiw0LDUsNV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTU7ICsraSkgeworICAgIGZvciAobGV0IHYgb2YgZmluZChtYXAsIGkgJSAyKSkgeyB9Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24t
c2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLXNl
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMmYzMjczOTBkNzM3NWEyMjAyYWU1OWExMTI0NjU2OThjYjZlYWI2
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmct
Zm9yLW9mLW9uLXNldC5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiAqZmluZChub2Rlcywg
cCkKK3sKKyAgICBmb3IgKGxldCBhcnJheSBvZiBub2RlcykgeworICAgICAgICBpZiAoIWFycmF5
LmZpbmQoKHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHlp
ZWxkIGFycmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOworCitsZXQgc2V0ID0gbmV3IFNl
dCgpOworbm9JbmxpbmUoc2V0W1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KTsKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMWUyOyArK2kpCisgICAgc2V0LmFkZChbMSwyLDQsNSw1XSwge30pOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChsZXQgdiBvZiBmaW5kKHNldCwg
aSAlIDIpKSB7CisgICAgICAgIGlmIChpICUgMiAhPT0gMSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigibm8gcmVzdWx0IHNob3VsZCBoYXZlIGJlZW4gcHJvZHVjZWQgaGVyZSIpOworICAg
ICAgICBpZiAoISh2IGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJyZXN1bHQgd2FzIG5vdCBhbiBhcnJheSIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjRjNDljOTNi
MjlmY2IwZjcxMGM2YzgyZDFmZDg4MDAxYTIyZTI1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzCkBAIC0wLDAgKzEsMjMgQEAK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0g
ZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeworICAgICAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBnZXQgZG9uZSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzRmluYWxUaWVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZU9T
UigpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0o
KSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRy
dWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsg
fQorICAgIH0gY2F0Y2ggeworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29zci1mcm9t
LWZvci1vZi12YWx1ZS1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2Yt
dmFsdWUtZ2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MDk2ZWUwM2UxNTI1NzNhZWRjNjRkMDQzOWZi
MmJmMjJjNjQxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1m
b3Itb2YtdmFsdWUtZ2V0dGVyLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMWU1OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0
ZXJhYmxlID0geworICAgICAgICBkb25lOiAwLAorICAgICAgICBuZXh0KCkgeworICAgICAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBkb25lOiB0aGlzLmRvbmUrKywKKyAgICAgICAg
ICAgICAgICBnZXQgdmFsdWUoKSB7IGlmIChpc0ZpbmFsVGllcigpKSBGb3JjZU9TUigpOyAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkg
eyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVl
OyB9LAorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0K
KyAgICB9IGNhdGNoIHsKKyAgICB9CisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3It
b2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3It
b2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJiZDMyYWRkN2NjM2Jh
MzQzMjU0ZGE3MTA4ZTUxOWZmNzViMzI1MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcwpAQCAtMCwwICsxLDE2
IEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0IHJldHVybkNhbGxl
ZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0dXJu
IDE7IH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAg
ICAgICAgcmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAgdHJ5
IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGlmIChlICE9ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisgICAgaWYgKHJl
dHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMg
Yi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjhhMTQyYzhhNmM1NGY0NzZlYzAzOWExNGU5ZTJkM2U3Yjk2ZGYxYQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXIt
aW4tZm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI0IEBACitmb3IgKGxldCBpID0gMDsgaSA8
PSAxZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkOworICAg
IGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAg
ICAgIGdldCBkb25lKCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsK
KyAgICAgICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9
LAorICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFibGUp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQorCisgICAg
aWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNiMTk0ZmQ3Y2E1YWM1OWFkNjk2MTk0MmY4NjI3YjYwYTVhYTMwMTgKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRl
ci5qcwpAQCAtMCwwICsxLDI0IEBACitmb3IgKGxldCBpID0gMDsgaSA8PSAxZTU7ICsraSkgewor
ICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkOworICAgIGxldCBpdGVyYWJsZSA9
IHsKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9y
KCk7CisgICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhp
czsgfSwKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgbm9JbmxpbmUoaXRlcmFibGUubmV4dCk7CisgICAg
dHJ5IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVyb3JyKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisg
ICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhy
b3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTA4Nzg4MzU4ZTRlZDMwNjEyYWNjNmYyZWYzYTMwZDhkNTY2Njc5ZAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFk
ZXIuanMKQEAgLTAsMCArMSwyNyBAQAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsK
KyAgICBsZXQgZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBp
dGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIGRv
bmU6IGZhbHNlLAorICAgICAgICBnZXQgdmFsdWUoKSB7CisgICAgICAgICAgICB0aHJvdyBlcnJv
ciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgp
IHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgIHJldHVy
bkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZv
ciAoYSBvZiBpdGVyYWJsZSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYg
KGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0
dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396562</attachid>
            <date>2020-04-15 12:58:42 -0700</date>
            <delta_ts>2020-04-15 20:08:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415125841.patch</filename>
            <type>text/plain</type>
            <size>264516</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4zMDU4MTc0ZGU4NjljYzhi
Nzc4MGUxOGQ0OTNjN2VjNmM1MjE1MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTkgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzLCBGbHVzaGluZy9QaGFudG9taW5nCisg
ICAgICAgIHZhbHVlcyBhdCB0aGUgZW5kIG9mIGVhY2ggYmxvY2suCisKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9y
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpvcjgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5o
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6CisgICAg
ICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjphcnJheVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9m
aWxlRm9yKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6
dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6
CisgICAgICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0
aW9uRm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVn
aXN0ZXJzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2Zp
bGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3Ry
dWN0aW9uLmg6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgor
ICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJh
c2VJbnN0cnVjdGlvbjo6d2lkZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRp
b25Nb2RlTWV0YWRhdGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N1cGVyU2FtcGxlci5oLgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAg
ICAoSlNDOjppc1N1YnR5cGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
Q29udGFpbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAo
SlNDOjpTdXBlclNhbXBsZXJTY29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmljRW51bWVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJc0VtcHR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ck9wZW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVy
aWNOZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdl
bmVyaWNOZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvckdlbmVyaWNDbG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0QXN5bmNJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmZvckFsbFZhbHVlcyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3Rh
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAq
IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
RkdTaW1wbGlmaWNhdGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6
REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICog
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxl
dmVsKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5Q
bGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNp
emUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1i
ZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjphdEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3Bl
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToK
KyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpM
YXp5SlNWYWx1ZTo6c3BlY3VsYXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdW
YWxpZGF0ZS5jcHA6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5l
cmF0b3IvTWV0YWRhdGEucmI6CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmNsb29wU3RhY2spOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2hlY2tlZFJldHVy
bik6CisgICAgICAgIChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFB1dENhbGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAg
ICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9v
cGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9K
SVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNo
ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNo
ZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2tw
b2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhp
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgor
ICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChK
U0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0
b3JfbmV4dF90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rf
bmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgor
ICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5j
cHA6CisgICAgICAgIChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAg
KiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojph
cnJheVByb3RvVmFsdWVzRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBCcmllZiBjb25zdCk6CisKIDIwMjAt
MDQtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IERlYnVnZ2VyOiBhZGQgYSBTdGVwIG5leHQgdGhhdCBzdGVwcyBieSBleHByZXNz
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGUwMzk0YjdiZTViNWJiMDE4YjRlZmJjYzk4NWY1Yjc4ZGEyMjY4NmQuLjE5NmM0
MjJmNDBjMDhhMWVjMTcxMGJmMDE0Y2IxODk5YzBjODE4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9FbnVt
Q2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oOgorCiAyMDIwLTA0LTE0ICBQZW5nIExpdSAgPHBlbmcu
bGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgaW50ZXJmYWNlIEFWQXVkaW9Sb3V0aW5n
QXJiaXRlciBmb3IgTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggNTJiNDZlY2M5ZTI4
OWNhZDg1YWExN2UyZDA5N2FiYmU1MzY1YjM5Zi4uNWE5YTBiNDQ0MTEwNzIzZDczOWEzMjUwMjg1
ZWU5YTY4MjM1ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtNDAsOCArNDAsOCBA
QCBTRUNUT1JERVJfRkxBR1NfUHJvZHVjdGlvbltzZGs9bWFjb3N4Kl0gPSAtV2wsLW9yZGVyX2Zp
bGUsSmF2YVNjcmlwdENvcmUub3JkZXI7CiAKIEdDQ19QUkVGSVhfSEVBREVSID0gSmF2YVNjcmlw
dENvcmVQcmVmaXguaDsKIEdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotT1RIRVJf
Q0ZMQUdTID0gJChpbmhlcml0ZWQpIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9dW5pY29kZS87Ci1P
VEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4
PXVuaWNvZGUvOworT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6
ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOworT1RIRVJfQ1BMVVNQTFVTRkxBR1Mg
PSAkKGluaGVyaXRlZCkgLWZuby1zbHAtdmVjdG9yaXplIC0tc3lzdGVtLWhlYWRlci1wcmVmaXg9
dW5pY29kZS87CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIgJChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElO
Rk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RBTExfUEFUSCA9ICQoSkFWQVNDUklQVENP
UkVfRlJBTUVXT1JLU19ESVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUw
MTlmZDkwNTcxOGI1YTMyY2YyNmFlMzcyNGI4ZTE4MWNjMjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5
Nzc0ZGM3ZTEwMjY3NWI3MGQwODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTEwMyw2ICsxMTAzLDggQEAKIAkJNTNDNEY2NkIyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xv
YmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0M0RjY2QTIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsK
IAkJNTNDNkZFRUYxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkw
MEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggKi87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgw
MDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmgg
Ki87IH07CisJCTUzRDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3
MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLzsgfTsKKwkJNTNENDFF
QzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5
ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dh
c21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAq
LzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3
MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0
aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBC
MTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQ
bGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBC
eXRlY29kZVByb2ZpbGVGb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0
ZWNvZGVQcm9maWxlRm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4
MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVVzZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0
YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NERCMURBRjA4QUIw
MEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REQxREFGMDlBMDAwQjky
Nzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVz
c1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0
OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVmFsdWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MjIwLDggKzgyMjUsMTAgQEAKIAkJCQlDMkZDQUUwRTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKIAkJCQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUg
LyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi8sCiAJCQkJMEY2NjZFQkUxODM1NjZGOTAw
RDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKKwkJCQk1M0Qz
NTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggKi8sCiAJCQkJRTNE
MjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUz
RDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNE
MzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4
NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJD
MDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4
MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJ
CTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJ
CQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJ
CQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
UHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
Ki8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAw
QkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdB
OUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQg
LyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4REFFQjFEMzhE
MDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUx
NEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAq
LywKQEAgLTk3MTEsNiArOTcyMCw3IEBACiAJCQkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8q
IElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0
ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2
RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3Rh
dHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRl
cmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAw
NTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCBjODQ3ZmM3ZGY1ODZhYWQ2Zjg1MDcwODMzY2JmNWJhNWViZWYwZWM4Li4xNTM5N2U4YjdmNDhh
ODRmYjI3ZjExZDJmMTM3MWUwZTJhMzAxY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjg2LDYgKzY4Niwy
MCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7
CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBM
b2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChsb2dp
Y2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5t
X3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRy
LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAg
ICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBvcjY0KGRlc3Qs
IHNyYywgZGVzdCk7CkBAIC0xNjAzLDcgKzE2MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAg
fQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMs
IG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CkBAIC0xNjE4LDcgKzE2MzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdp
c3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCog
YWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50
OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBpZiAoIWltbTgubV92YWx1ZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCmluZGV4IDhjNjk3OWJiOWIyZmRlYjA0Y2EwMjZlNzY2ZDIwOGI3M2EwNjNmMmUuLjJhMWRk
ZWRlZTM2ZGJlM2NkZTU3MmY0ODYwNWE0NjRjODBiNmU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpi
cmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IxNjsKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3I4OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpzdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKQEAgLTk2LDYgKzk3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgb3IxNihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsK
ICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRy
KSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBvcjgoaW1tLCBBZGRyZXNzKHNjcmF0Y2hS
ZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IGZiMzQ4YjkyZGQyNjIzYzA2NTFl
ZmQyZTRhOGMwZThkZTIzN2IyMDEuLjk0MjY1N2M2MmYwNzQ5Y2EwNWM0ZWVlNGQ2N2I5NWZlNjQ1
NWQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKQEAgLTIwNywxMCArMjA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3V0T2ZCb3VuZHMo
KSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9vbCogYWRkcmVzc09mT3V0T2ZCb3Vu
ZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQogICAgIAotICAgIHZvaWQgb2JzZXJ2ZVN0
cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICB9CisgICAgdm9pZCBvYnNlcnZlU3Ry
dWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlE
ID0gc3RydWN0dXJlSUQ7IH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAK
ICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3Ry
dWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCmluZGV4IDFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIuLmUyODhh
OTk3MjAwOGJjOTUyOTdmNThhZjA5NTlkM2ZjZDk0MGRkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzQsNiArMzQsNyBAQCB0eXBl
cyBbCiAgICAgOkdldEJ5VmFsSGlzdG9yeSwKICAgICA6R2V0UHV0SW5mbywKICAgICA6SW5kZXhp
bmdUeXBlLAorICAgIDpJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgOkpTQ2VsbCwKICAgICA6
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsCiAgICAgOkpTR2xvYmFsT2JqZWN0LApAQCAtMTE2
Miw2ICsxMTYzLDU5IEBAIG9wIDpnZXRfcmVzdF9sZW5ndGgsCiAgICAgICAgIG51bVBhcmFtZXRl
cnNUb1NraXA6IHVuc2lnbmVkLAogICAgIH0KIAorIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgaXRl
cmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0Owor
IyBGb3IgYnVpbHRpbiBpdGVyYXRvcnMsIGhvd2V2ZXIsIHRoaXMgaGFzIHNwZWNpYWwgYmVoYXZp
b3Igd2hlcmUgbmV4dCBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZSwgd2hpY2gKKyMgaW5kaWNhdGVz
IHRoYXQgd2UgYXJlIGluIGEga25vd24gaXRlcmF0aW9uIG1vZGUgdG8gb3BfaXRlcmF0b3JfbmV4
dC4KK29wIDppdGVyYXRvcl9vcGVuLAorICAgIGFyZ3M6IHsKKyAgICAgICAgaXRlcmF0b3I6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBz
eW1ib2xJdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYWJsZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgfSwKKyAgICBt
ZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgY2Fs
bExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgaXRlcmF0b3JQcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCisgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
KyAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICB9LAorICAgIGNoZWNrcG9p
bnRzOiB7CisgICAgICAgIHN5bWJvbENhbGw6IG5pbCwKKyAgICAgICAgZ2V0TmV4dDogbmlsLAor
ICAgIH0KKworIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgbmV4dFJlc3VsdCA9IG5leHQuQGNhbGwo
aXRlcmF0b3IpOyBkb25lID0gbmV4dFJlc3VsdC5kb25lOyB2YWx1ZSA9IGRvbmUgPyB1bmRlZmlu
ZWQgOiBuZXh0UmVzdWx0LnZhbHVlOworb3AgOml0ZXJhdG9yX25leHQsCisgICAgYXJnczogewor
ICAgICAgICBkb25lOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIG5leHQ6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAg
ICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAg
aXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBH
ZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICB9LAorICAgIHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwKKyAgICB9
LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBuaWwsCisgICAgICAg
IGdldERvbmU6IG5pbCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9CisKIG9wIDp5aWVs
ZCwKICAgICBhcmdzOiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLApAQCAt
MTI5MCw2ICsxMzQ0LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9jYXRpb24KIG9wIDpv
cF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9pZF9yZXR1cm5fbG9j
YXRpb24KIG9wIDpvcF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9y
X29wZW5fcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRp
b24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZV9ub190bHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBkOGZmNmM3OTg5NmFm
ZDAwZTIwY2M0Mjc3OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhkNDQyMDQwOGNhYzUw
YTM4ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIzMSwxMyBAQCBCaXRt
YXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChjb25zdCBD
b2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChPcENhbGxWYXJhcmdz
OjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJlc3VsdC5zZXQoT3BJ
dGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ3
NWU0YTA0NGM5MjBmYTA5Y2Y5MzA2MDBiZjMxNjAzNDFjMTZmNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaApAQCAt
MCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9m
aWxlKiBhcnJheVByb2ZpbGVGb3JJbXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNp
Z25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRl
eCk7CisgICAgcmV0dXJuICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZTsK
KworICAgIC8vIEluc2VydCBwZXIgbWV0YWRhdGEgb3ZlcnJpZGVzIGhlcmUgd2hlbiB3ZSBuZWVk
IHRoZW0uCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVj
b2RlTWV0YWRhdGE+Citib29sIGhhc0FycmF5UHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIHJldHVybiBhcnJheVBy
b2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGVGb3Io
Qnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sK
KyAgICBBU1NFUlQoaGFzQXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgp
KTsKKyAgICByZXR1cm4gKmFycmF5UHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJ
bmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1ZVBy
b2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVu
c2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludElu
ZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9w
X2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAg
ICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRhZGF0YS5t
X2l0ZXJhdG9yUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDog
cmV0dXJuICZtZXRhZGF0YS5tX25leHRQcm9maWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICB9IGVsc2UgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7Cisg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRv
ck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGU7
CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiAmbWV0YWRhdGEu
bV9kb25lUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJl
dHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgCisgICAgICAgIHJl
dHVybiAmbWV0YWRhdGEubV9wcm9maWxlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29k
ZU1ldGFkYXRhPgorYm9vbCBoYXNWYWx1ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0
YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gdmFsdWVQcm9m
aWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yKEJ5
dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7Cisg
ICAgQVNTRVJUKGhhc1ZhbHVlUHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7
CisgICAgcmV0dXJuICp2YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5k
ZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK09wZXJhbmQgZGVzdGluYXRp
b25Gb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgs
IEpJVFR5cGUgdHlwZSA9IEpJVFR5cGU6Ok5vbmUpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNr
cG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3Bf
aXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAg
ICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gYnl0ZWNvZGUubV9p
dGVyYXRvcjsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuIGJ5
dGVjb2RlLm1fbmV4dDsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZSBpZiBjb25z
dGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAg
IHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmNvbXB1dGVOZXh0OiB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBKSVRUeXBlOjpERkdKSVQg
fHwgdHlwZSA9PSBKSVRUeXBlOjpERkdKSVQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJh
bmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV92YWx1ZTsgLy8gV2UgcmV1c2UgdmFsdWUgYXMgYSB0ZW1wIGJlY2F1c2UgaXRz
IGVpdGhlciBub3QgdXNlZCBpbiBzdWJzZXF1ZW50IGJ5dGVjb2RlcyBvciB3cml0dGVuIGFzIHRo
ZSB0ZW1wIG9iamVjdCBpcyBraWxsZWQuCisgICAgICAgIH0KKyAgICAgICAgY2FzZSBPcEl0ZXJh
dG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgY2FzZSBP
cEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBieXRlY29kZS5tX3ZhbHVlOworICAgICAg
ICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2Rz
dDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2NhdGlvbnMKKwordGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRm9yKGNvbnN0IEJ5dGVjb2RlJiBi
eXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShj
aGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09
IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBP
cEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX3N5
bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJ
RCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXgg
PT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2Rl
Lm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fY2FsbGVlOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3Vuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2tw
b2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlm
IGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAg
ICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2Fs
bCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2Rl
OjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3Bv
aW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJu
IDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2FyZ2M7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlmZl90IHN0YWNrT2Zmc2V0SW5SZWdpc3Rl
cnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludElu
ZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0
ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAg
QVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7Cisg
ICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIGJ5dGVjb2Rl
Lm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6
Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9p
bnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhdG9yLm9m
ZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9hcmd2OworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorTExJbnRDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hl
Y2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAg
IHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1NjI2YzEzLi5hNWE1MDdl
ZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTI1OSw2ICsyNTksOSBA
QCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNj
b3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAgVVNFUyhPcFlpZWxkLCBnZW5lcmF0b3Is
IGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9yT3Blbiwgc3ltYm9sSXRlcmF0b3IsIGl0
ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQsIGl0ZXJhdG9yLCBuZXh0LCBpdGVyYWJs
ZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkOgogICAgICAgICBoYW5kbGVO
ZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU3ByZWFkPigpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwgdGhyb3duVmFsdWUpCiAKKyAgICBERUZT
KE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkKKyAgICBERUZTKE9wSXRlcmF0b3JOZXh0
LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50ZXI6IHsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIyNTkxOTQ3NzY4NTU3ZWE4N2E2NTdmMjNh
NjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2OWU5NjM0MTc1MTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtNDAsMTgg
KzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxsTGlua0luZm86OkNhbGxUeXBlIENhbGxM
aW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgaWYgKG9wY29k
ZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKQorICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNhc2Ugb3Bf
dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAgICByZXR1cm4gVGFpbENhbGxWYXJh
cmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2FzZSBvcF9jYWxsX2V2YWw6
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoK
ICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJn
cykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ2FsbFZhcmFy
Z3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkKKworICAgIGNhc2Ugb3BfY29u
c3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0OwotICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CiAg
ICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF90
YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgcmV0dXJuIFRhaWxD
YWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwotICAgIHJldHVybiBUYWls
Q2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2FsbDsKIH0KIAogQ2Fs
bExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjEzZDE3MzRhMDJjNThhMzIxNzU5MjVk
Mjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEzNzhhZWJlZjkwMjU2ZjExNWVmMTdlM2Ix
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQgogICAgIGNh
c2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFz
PE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgY2FsbExp
bmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShwcm9m
aWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9p
dGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9w
SXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOwor
ICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdlNjE2MGI2NTNlN2E0ZTczMDRiMi4uYTRh
N2M1YWFiZjA1NmIzODMxNDQ4NDE4ZjkxZGE4ODU0ZjdiYTdjNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQ
cm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtOTcsNiArOTgs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CiAKKwogI2lmIEVOQUJMRShBU1NF
TUJMRVIpCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNlbmRpZgpAQCAtNTgz
LDYgKzU4NSwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wQ2F0
Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAKKyAgICAgICAgY2FzZSBv
cF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wSXRl
cmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
b3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcEl0
ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BS
ZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsNiArMTI0MCwzMyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDE4CiAgICAgICAgIC8vIFdlIG5lZWQgdG8g
YWRkIG9wdGltaXphdGlvbnMgZm9yIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNf
ZGVjbF9pbl9ldmFsIHRvIGRvIGxpbmsgdGltZSBzY29wZSByZXNvbHV0aW9uLgogCisgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5
SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFN0
cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVs
dE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZt
LmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVy
ZUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgaXRlcmF0
b3Igb3BlbiBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAgICAgICAgICAgIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRD
YWNoZShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIH0pOworCisKKyAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eworICAgICAgICAgICAgYXV0byBjbGVhcklmTmVlZGVkID0gWyZdIChHZXRCeUlkTW9kZU1ldGFk
YXRhJiBtb2RlTWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1v
ZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1vZGVNZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVj
dHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBpdGVy
YXRvciBuZXh0IExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOworICAgICAgICAgICAgICAgIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdl
dEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
Y2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAg
Y2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgfSk7
CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9
IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMzEs
NyArMTI3NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkK
ICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRC
eUlkQ2FjaGUobWV0YWRhdGEpOworICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM2
OSwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAg
ICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24g
PSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAgICBp
ZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUp
IHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkg
YWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8
T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRh
ZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBvcGVuIHByb3Bl
cnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNjZXNz
LiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0byBj
bGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3VyZSBv
dXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4uCisgICAgICAgICAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEo
dGhpcyk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVN
ZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVN
b2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMTAyLDEx
IEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29k
ZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0
aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJu
ICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFk
YXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4
MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5s
aW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVm
aW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0
byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5j
KG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENP
REVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisKKyAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZh
bHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNl
KTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0Pihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJl
c3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJv
ZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwg
ZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAgQEAg
dm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykK
IAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJU0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmlu
ZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4YzIuLjI4MmNmOGY0Mjdj
MWZiZWFiMjk2YTM1ODNiMDc5OTQxZGExMGVmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtODYsNiArODYsMzUgQEAgR2V0QnlTdGF0
dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9wX2dldF9ieV92YWw6CiAgICAgICAgIHJldHVybiBH
ZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9y
X29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9w
SXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVj
dGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisKKyAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9i
eV9pZF9wcm90b19sb2FkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5t
b2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3Rh
dHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRp
ZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7
CisgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4
dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0
YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBH
ZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRh
Lm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdl
dEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+dmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDogewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3Jt
YXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgKaW5kZXggMDg1YWU4ZDE5OTc2Yjg4NmYwMDE5Zjg1ZmE2N2IwMmJlMTRjZGE1ZS4uM2Q3
MGNkNTQzZWNmYWU5MDIyNTAyOTYwMWEwZDQwNWVjNjcxYjJkMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQg
PSA6OkpTQzo6T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJP
ZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJf
T0ZfQllURUNPREVfV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNv
ZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0PE9wY29kZUlE
PihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChu
dW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhN
ZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSBvcF93aWRl
MTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSBvcF93aWRlMzI7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3RocyA9IDo6SlND
OjpvcGNvZGVMZW5ndGhzOwpAQCAtNDEsNyArNDMsOSBAQCBzdHJ1Y3QgSlNPcGNvZGVUcmFpdHMg
ewogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2RlSUQgPSBXYXNt
T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfV0FTTV9X
SVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9m
Qnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9X
QVNNX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29kZXNX
aXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gd2FzbV93aWRlMTY7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3YXNtX3dpZGUzMjsKICAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gd2FzbU9wY29kZUxlbmd0aHM7
CkBAIC05OCwxMiArMTAyLDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5hcnJvdygpLT50
ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgT3Bjb2Rl
U2l6ZSB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNXaWRlMzI8VHJhaXRzPigp
KQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUzMjsKKyAgICAgICAgcmV0dXJu
IGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUxNiA6IE9wY29kZVNpemU6Ok5h
cnJvdzsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRy
YWl0cz4KICAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFk
YXRhOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJh
aXRzPgorICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hl
Y2twb2ludHM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3VudCgpIGNvbnN0CiAgICAgewpAQCAtMTM3
LDYgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUOjpkZWNvZGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPGNs
YXNzIFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRz
PgorICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCgoaXM8
VCwgVHJhaXRzPigpKSk7CisgICAgICAgIHJldHVybiBUKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2lnbmVkVHlwZSo+KHRoaXMgKyAod2lkdGgg
PT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8
Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgVCogY2FzdCgp
CiAgICAgewpAQCAtMTYxLDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNT
RVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8
T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KQEAgLTE2OSwxNCArMTk0LDE2IEBAIHB1
YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTMyPFRyYWl0cz4oKSk7Ci0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMy
Pio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KHRoaXMgKyAx
KTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJsaWMgQmFzZUluc3RydWN0
aW9uPE9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoSW5zdHJ1Y3Rpb24pID09
IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIHN0cnVj
dCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVJRD4gewog
fTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0gMSwgIlNvIHBvaW50ZXIg
bWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkNjkxOTMxYzZjNzk0OGU1NTdlNGY1NjkyM2FlMzQ5MGZl
YjllOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
dGVyYXRpb25Nb2RlTWV0YWRhdGEuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBK
U0MgeworCitlbnVtIGNsYXNzIEl0ZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKKyAgICBHZW5lcmlj
ID0gMSA8PCAwLAorICAgIEZhc3RBcnJheSA9IDEgPDwgMSwKK307CisKK2NvbnN0ZXhwciB1aW50
OF90IG51bWJlck9mSXRlcmF0aW9uTW9kZXMgPSAyOworCitPVkVSTE9BRF9CSVRXSVNFX09QRVJB
VE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVSR1JBTFMoSXRlcmF0aW9uTW9kZSk7CisKK3N0
cnVjdCBJdGVyYXRpb25Nb2RlTWV0YWRhdGEgeworICAgIHVpbnQ4X3Qgc2Vlbk1vZGVzIHsgMCB9
OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHNlZW5Nb2RlcykpID09IHNpemVv
ZihJdGVyYXRpb25Nb2RlKSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXgg
MmQxNDNiOWNmNjc0MzA1ZDQwYzkxZWIwYWUzNTEzMzEyNTY5NDQxZi4uYmJlMWY2N2ZmYmVmZThl
OGJiMTM2N2ViNmM3ZWQ2N2NiYWE4YWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTYwLDE0ICs2MCwzMSBAQCB2
b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUlu
dGVybmFsKFZNJiB2bSwgY29uc3QgRgogICAgIH0KIAogICAgIGF1dG8mIGluc3RydWN0aW9uID0g
bV9vd25lci0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZU9mZnNldC5nZXQoKSk7Ci0gICAg
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFk
YXRhKG1fb3duZXIuZ2V0KCkpKTsKKyAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgp
KSB7CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5t
X21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9v
cGVuOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRhZGF0YSk7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGF1
dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRh
KG1fb3duZXIuZ2V0KCkpOworICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0
YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KIH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0
YSYgbWV0YWRhdGEpCit2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRh
ZGF0YSkKIHsKLSAgICAvLyBLZWVwIGhpdENvdW50Rm9yTExJbnRDYWNoaW5nIHZhbHVlLgotICAg
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgp
OworICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwogfQogCi0K
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDIyMGZmZjNlM2JmNTQzNDFlOTYxYzgyZGY4YzRl
OGM5MDAwNzM0YmUuLjFkNTk1N2VmZjgxMDkyYTFkYWJkZWU1MDI1Y2FjNWU2ZjM4Njc4MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnN0YWxsKFZNJik7CiAK
LSAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6TWV0YWRh
dGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2Rl
TWV0YWRhdGEmKTsKIAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBj
b25zdCB7IHJldHVybiBtX2tleTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKaW5kZXggMTg1MWI2M2M3Y2E2YWVmMmZiMzZiZjJmODdlOTJhMTllMGQ0MGMxOC4uYWE4
ODU5YWRkNjI4NjBmZmRhZGI0ZDIyMjg3YzM0YjA3Y2U1YjMzNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTQ4LDYgKzE0OCw5IEBAIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6OmdldE1TQlNldENv
bnN0ZXhwcihtCiAgICAgbWFjcm8oT3BUYWlsQ2FsbCkgXAogICAgIG1hY3JvKE9wQ2FsbEV2YWwp
IFwKICAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorICAgIG1hY3JvKE9wSXRlcmF0b3JPcGVuKSBc
CisgICAgbWFjcm8oT3BJdGVyYXRvck5leHQpIFwKKwogCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InR5cGUtbGltaXRzIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZDc2ZDRmYTdiNDZlOThiOWY5NzAwZGMzODYz
MGY0Li45NDY1OGIwOTZiZjE5M2M4N2NmZDcxYTlmNWJkZTE1ZjYxMzMyYTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTIwLDYg
KzEyMCwxNiBAQCBpbmxpbmUgYm9vbCBpc0FueVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9vbCBpc1N1YnR5cGVTcGVjdWxhdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7CisgICAgcmV0
dXJuICEodmFsdWUgJiB+Y2F0ZWdvcnkpICYmIHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBzcGVj
dWxhdGlvbkNvbnRhaW5zKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRl
Z29yeSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBjYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisK
IGlubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewog
ICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNDZWxsKSAmJiAhKHZhbHVlICYgflNwZWNDZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAppbmRleCA5
NjEwZGNlNWNkYmMzZWMwOWNlMzNiMWQ2YmNjNGIzZmY4YTZjM2M4Li5lOWJmOTUzMWY3YmE1OTU3
MzExMGUzMWE3YTQ0Y2QyMjhiNzU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC00OCw2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CiAgICAgfQogCisgICAgdm9pZCByZWxlYXNlKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvU2FtcGxlKTsKKyAgICAgICAgZ19zdXBlclNhbXBs
ZXJDb3VudC0tOworICAgICAgICBtX2RvU2FtcGxlID0gZmFsc2U7CisgICAgfQorCiBwcml2YXRl
OgogICAgIGJvb2wgbV9kb1NhbXBsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYzZDM2MmNh
YzE5ZDQ5Mzk4OTQ3NzdiZWRhN2MwYWMyZDYzNjA2M2YuLjhmZWRlNjJiNTMwZWJkMTAxZmVkYTYx
YWJhYjk0OWEzZjNiMzU5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MDE2LDE0ICs0MDE2LDE1
IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVk
KGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5v
ZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCit2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZv
ck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKIHsK
ICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9kZSA/IGZvckxvb3BOb2RlLT5pc0ZvckF3
YWl0KCkgOiBmYWxzZTsKLSAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgKGlzRm9yQXdhaXQgJiYg
aXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkpOworICAgIGF1dG8gc2hvdWxk
RW1pdEF3YWl0ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObzsK
KyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNl
TW9kZSgpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFy
eSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0
b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwg
bm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gaXNGb3JBd2FpdCA/IGVt
aXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJ
dGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4
dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVs
KCk7CkBAIC00MTMwLDcgKzQxMzEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAg
ICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQo
KSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdhaXQgPyBF
bWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9y
R2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgp
LCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwogCiAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5k
b25lKSwgbG9vcERvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0
KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDE0Myw3ICs0MTQ0
LDE0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAgICBwb3BGaW5hbGx5Q29udHJv
bEZsb3dTY29wZSgpOwogICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpIHsKICAgICAgICAg
ICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4K
LSAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBpc0Zv
ckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgICAgIGVt
aXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hvdWxkRW1pdEF3
YWl0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwor
fQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxC
YWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFi
bGUpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwgaXMz
MkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpKSkgewor
ICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1YmplY3ROb2RlLCBjYWxsQmFj
aywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmFibGUgPSBuZXdUZW1wb3JhcnkoKTsK
KyAgICBlbWl0Tm9kZShpdGVyYWJsZS5nZXQoKSwgc3ViamVjdE5vZGUpOworCisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGl0ZXJhdG9yU3ltYm9sID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGl0ZXJhYmxlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBuZXh0T3JJbmRleCA9IG5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG5ld1RlbXBvcmFyeSgpOworICAgIENhbGxBcmd1bWVu
dHMgYXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgbW92ZShhcmdzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYWJsZS5nZXQoKSk7CisgICAgZW1pdEl0ZXJhdG9yT3BlbihpdGVyYXRvci5nZXQoKSwg
bmV4dE9ySW5kZXguZ2V0KCksIGl0ZXJhdG9yU3ltYm9sLmdldCgpLCBhcmdzLCBub2RlKTsKKwor
ICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gdHJ5
U3RhcnRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5VmlhVGhyb3dM
YWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5TGFiZWwgPSBuZXdMYWJl
bCgpOworICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExh
YmVsPiBlbmRDYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1Vu
ZGVmaW5lZCgpKTsKKworICAgIC8vIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvcidzIGxpZmV0
aW1lIG11c3QgYmUgbG9uZ2VyIHRoYW4gSXRlcmF0b3JDbG9zZUNvbnRleHQuCisgICAgRmluYWxs
eUNvbnRleHQgZmluYWxseUNvbnRleHQoKnRoaXMsIGZpbmFsbHlMYWJlbC5nZXQoKSk7CisgICAg
cHVzaEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKGZpbmFsbHlDb250ZXh0KTsKKworICAgIHsKKyAg
ICAgICAgUmVmPExhYmVsU2NvcGU+IHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpM
b29wKTsKKworICAgICAgICBSZWY8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICBlbWl0TGFiZWwoKnNjb3Bl
LT5jb250aW51ZVRhcmdldCgpKTsKKyAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAg
aWYgKGZvckxvb3BOb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmb3JMb29wTm9k
ZS0+aXNGb3JPZk5vZGUoKSk7CisgICAgICAgICAgICBwcmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4
dEZvckxvb3BJdGVyYXRpb24oZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAg
ICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkb25lID0gbmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmdzKCp0aGlzLCBudWxs
cHRyLCAwKTsKKyAgICAgICAgICAgIG1vdmUobmV4dEFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0ZXJh
dG9yLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dChkb25lLmdldCgpLCB2
YWx1ZS5nZXQoKSwgaXRlcmFibGUuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBuZXh0QXJncywg
bm9kZSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBsb29wRG9uZS5n
ZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQo
KSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBwdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0
KCksIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRG
aW5hbGx5KTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMsIHZhbHVlLmdldCgpKTsKKyAgICAgICAg
ZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNl
cXVlbmNlIGZvciBhYnJ1cHQgY29tcGxldGlvbnMuCisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IEZpbmFsbHkgYmxvY2sgZm9yIHRoZSBlbnVtZXJhdGlvbi4KKyAgICAgICAgICAgIGVtaXRMYWJl
bChmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBwb3BUcnkodHJ5RGF0
YSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+
IGZpbmFsbHlCb2R5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZpbmFsbHlFeGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworCisgICAg
ICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZmluYWxseUNvbnRleHQuY29tcGxl
dGlvblZhbHVlUmVnaXN0ZXIoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3Rl
cigpLCB0cnlEYXRhKTsKKyAgICAgICAgICAgIG1vdmUoZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVy
LmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpKTsKKyAgICAg
ICAgICAgIGVtaXRKdW1wKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBl
bWl0TGFiZWwoZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIG1vdmVFbXB0eVZhbHVl
KGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFs
bHkgZmFsbCB0aHJvdWdoIGNhc2UuCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseUJvZHlM
YWJlbC5nZXQoKSk7CisgICAgICAgICAgICByZXN0b3JlU2NvcGVSZWdpc3RlcigpOworCisgICAg
ICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlEb25lID0gbmV3TGFiZWwoKTsKKworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwor
ICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgp
LCByZXR1cm5NZXRob2QuZ2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAgICAgICAgICAg
IFJlZjxMYWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAg
IGVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgVHJ5RGF0
YSogcmV0dXJuQ2FsbFRyeURhdGEgPSBwdXNoVHJ5KHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSwg
Y2F0Y2hMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkQ2F0Y2gpOworCisgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgICAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iu
Z2V0KCkpOworICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCks
IG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5v
KTsKKworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFy
eSgpLCB2YWx1ZS5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiJfcyk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5RG9uZS5nZXQoKSk7CisgICAg
ICAgICAgICBlbWl0RmluYWxseUNvbXBsZXRpb24oZmluYWxseUNvbnRleHQsIGVuZENhdGNoTGFi
ZWwuZ2V0KCkpOworCisgICAgICAgICAgICBwb3BUcnkocmV0dXJuQ2FsbFRyeURhdGEsIGZpbmFs
bHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgLy8gQ2F0Y2ggYmxvY2sgZm9yIGV4Y2VwdGlv
bnMgdGhhdCBtYXkgYmUgdGhyb3duIHdoaWxlIGNhbGxpbmcgdGhlIHJldHVybgorICAgICAgICAg
ICAgLy8gaGFuZGxlciBpbiB0aGUgZW51bWVyYXRpb24gZmluYWxseSBibG9jay4gVGhlIG9ubHkg
cmVhc29uIHdlIG5lZWQgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2ggYmxvY2sgaXMgYmVjYXVz
ZSBpZiBlbnRlcmVkIHRoZSBhYm92ZSBmaW5hbGx5IGJsb2NrIGR1ZSB0byBhIHRocm93bgorICAg
ICAgICAgICAgLy8gZXhjZXB0aW9uLCB0aGVuIHdlIHdhbnQgdG8gcmUtdGhyb3cgdGhlIG9yaWdp
bmFsIGV4Y2VwdGlvbiBvbiBleGl0aW5nCisgICAgICAgICAgICAvLyB0aGUgZmluYWxseSBibG9j
ay4gT3RoZXJ3aXNlLCB3ZSdsbCBsZXQgYW55IG5ldyBleGNlcHRpb24gcGFzcyB0aHJvdWdoLgor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChjYXRjaExhYmVsLmdldCgp
KTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdpc3Rl
ciA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5
SGFuZGxlcihleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlv
blR5cGVSZWdpc3RlcigpLCByZXR1cm5DYWxsVHJ5RGF0YSk7CisgICAgICAgICAgICAgICAgLy8g
U2luY2UgdGhpcyBpcyBhIHN5bnRoZXNpemVkIGNhdGNoIGJsb2NrIGFuZCB3ZSdyZSBndWFyYW50
ZWVkIHRvIG5ldmVyIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byByZXNvbHZlIGFueSBzeW1i
b2xzIGZyb20gdGhlIHNjb3BlLCB3ZSBjYW4gc2tpcCByZXN0b3JpbmcgdGhlIHNjb3BlCisgICAg
ICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaGVyZS4KKworICAgICAgICAgICAgICAgIFJlZjxMYWJl
bD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRy
dWUoZW1pdElzRW1wdHkobmV3VGVtcG9yYXJ5KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5n
ZXQoKSksIHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1vdmUoZXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAg
ICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgICAgIGVt
aXRMYWJlbChlbmRDYXRjaExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgYnJlYWtMYWJlbElzQm91bmQgPSBzY29wZS0+YnJlYWtUYXJnZXRNYXlC
ZUJvdW5kKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkKKyAgICAgICAgICAgIGVt
aXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CisgICAgICAgIHBvcEZpbmFsbHlDb250cm9s
Rmxvd1Njb3BlKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgeworICAgICAgICAg
ICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93Lgor
ICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2Rl
LCBFbWl0QXdhaXQ6Ok5vKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbWl0TGFiZWwobG9vcERv
bmUuZ2V0KCkpOwpAQCAtNDI2NSw1NiArNDQwNCw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAg
ICBPcElzRW1wdHk6OmVtaXQodGhpcywgZHN0LCBzcmMpOwogICAgIHJldHVybiBkc3Q7CiB9Ci0g
ICAgCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3
YWl0KQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlz
LCBudWxscHRyKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvcik7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICAgICAgaWYgKGRv
RW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7
Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJl
bCgpOwotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCks
IGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Ci0gICAgICAg
IGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgIH0KLSAgICByZXR1cm4gZHN0Owot
fQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMo
KnRoaXMsIG51bGxwdHIsIDEpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVn
aXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90
U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gZHN0OwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICBSZWY8TGFiZWw+IGRvbmUg
PSBuZXdMYWJlbCgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5L
ZXl3b3JkKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5
KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOwotCi0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5B
cmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1l
dGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNh
bGw6Ok5vKTsKLQotICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKLSAgICAg
ICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKLQotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09i
amVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKLSAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpOwotICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKLX0KIAogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cHVzaEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIpCiB7CkBAIC00NTU1LDcgKzQ2NDQsMzUgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVySUQqIHZhbHVlKQogICAgIG1v
dmUodmFsdWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4dE9ySW5k
ZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVyYWJsZSwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8gUmVzZXJ2ZSBz
cGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxG
cmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVn
aXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOwor
CisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisgICAgZW1pdEV4
cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2
b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck9wZW46OmVtaXQodGhpcywgaXRlcmF0b3IsIG5leHRP
ckluZGV4LCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUudGhpc1JlZ2lzdGVyKCksIGl0ZXJhYmxl
LnN0YWNrT2Zmc2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBp
dGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNlcnZl
IHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENh
bGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2Fs
bEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7
CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBlbWl0
RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yTmV4dDo6ZW1pdCh0aGlzLCBkb25lLCB2YWx1ZSwg
aXRlcmFibGUsIG5leHRPckluZGV4LCBpdGVyYXRvci50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iu
c3RhY2tPZmZzZXQoKSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRv
clN5bWJvbCk7CiAgICAgZW1pdENhbGxJdGVyYXRvcihpdGVyYXRvci5nZXQoKSwgYXJndW1lbnQs
IG5vZGUpOwpAQCAtNDU2Myw2ICs0NjgwLDU3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4CiAg
ICAgcmV0dXJuIGl0ZXJhdG9yLmdldCgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICB7CisgICAgICAg
IENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgIG1v
dmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBlbWl0
Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6
OlllcykKKyAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOworICAgIH0KKyAgICB7CisgICAgICAg
IFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0
KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZh
Y2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0
LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lz
dGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAg
ICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwg
MSk7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Ip
OworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUp
OworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
bmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBkc3Q7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShS
ZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUs
IEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJl
bCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsK
KyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVy
bk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMo
KnRoaXMsIG51bGxwdHIpOworICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5v
ZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsK
KworICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAgICAgZW1pdEF3
YWl0KHZhbHVlLmdldCgpKTsKKworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdU
ZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKKyAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwor
ICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKK30KKworCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVy
YXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1l
cygpLmFzeW5jSXRlcmF0b3JTeW1ib2wpOwpAQCAtNDU3NSw3ICs0NzQzLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2EKICAgICBlbWl0SnVtcChhc3luY0l0ZXJhdG9yRm91bmQuZ2V0KCkpOwog
ICAgIGVtaXRMYWJlbChhc3luY0l0ZXJhdG9yTm90Rm91bmQuZ2V0KCkpOwogCi0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBu
b2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0R2Vu
ZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICBtb3ZlKGl0ZXJhdG9yLmdldCgpLCBj
b21tb25JdGVyYXRvci5nZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhv
ZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLm5leHQpOwpAQCAtNDYwNCw3ICs0NzcyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGUKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKICAg
ICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0
ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRBc3luY0l0ZXJh
dG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoYXJndW1lbnQsIG5v
ZGUpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwog
CiAgICAgICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAtNDY0Miw3ICs0
ODEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRob2Qu
Z2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBF
bWl0QXdhaXQgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlID0gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0
QXdhaXQ6Ok5vOwotICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRv
ci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0
QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5
cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRo
b2QuIl9zKTsKIApAQCAtNDcwMyw3ICs0ODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW1pdExhYmVsKG5leHRFbGVtZW50LmdldCgp
KTsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIG5l
eHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7CisgICAg
ICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4
dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKIAogICAg
ICAgICAgICAgZW1pdExhYmVsKGJyYW5jaE9uUmVzdWx0LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IGQ1MzRjZDgyOGFhYzNkMTQwYjRmNDZjODY4NzY4MDkxNGUwZGUzMjUuLjZiNzA4ZTk2YWIx
NDYwZGE2YTBhZTBjYjk1MzY4YTc5ZGNmOGVmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgyOCw2ICs4
MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERlZmluZVByb3Bl
cnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0ZXIs
CiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0
ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJpY0VudW1l
cmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Np
b25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIsIFJl
Z2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogICAgICAgICB2b2lkIGVt
aXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBF
eHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogPSBudWxs
cHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRyKTsKIAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0R2V0VGVtcGxhdGVPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBUYWdn
ZWRUZW1wbGF0ZU5vZGUqKTsKQEAgLTg5OCw5ICs4OTksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Rlcml2ZWRBcnJheShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBEZXJp
dmVkQXJyYXlUeXBlKTsgfQogICAgICAgICB2b2lkIGVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxl
KFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yKTsKIAotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4
dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCog
dmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKLSAgICAgICAgdm9p
ZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8pOworICAgICAg
ICB2b2lkIGVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQq
IG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRvciwgQ2FsbEFyZ3VtZW50cyYg
aXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZvaWQg
ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVn
aXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBDYWxsQXJndW1lbnRz
JiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXN5bmNJdGVyYXRv
cihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVtaXRBd2FpdDo6Tm8pOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUp
OworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShSZWdpc3RlcklEKiBpdGVy
YXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVt
aXRBd2FpdDo6Tm8pOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJl
Z2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CiAKQEAgLTk1
MCw5ICs5NTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHVzaENhdGNo
U2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICB2b2lkIGVtaXRQb3BDYXRjaFNj
b3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
SXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSopOwotCiAgICAgICAgIHZvaWQgZW1pdEF3YWl0KFJlZ2lzdGVySUQqKTsK
ICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQ0ZmRiNGRk
NTRkNDkyZjkwZDJkNzIxZmQ3ZGFjMTJmZjdkMmY4NTAuLjJiMTVjYWE0NzEzYTg4NTY1YzRjZDA5
NTI2ZjkwYzI0NWY2M2EwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ1NzIsNyArNDU3Miw3IEBAIHZvaWQgQXJy
YXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIHJocykKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgaWYgKG1fdGFyZ2V0UGF0
dGVybnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShp
dGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5l
cmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NTg4LDcgKzQ1ODgsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNraXBw
ZWQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9y
TmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdl
dCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
ZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ2MjQsNyArNDYyNCw3IEBAIHZvaWQgQXJyYXlQ
YXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIHJocykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobG9vcFN0YXJ0Lmdl
dCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvck5leHQo
dmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwg
bmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGRvbmUuZ2V0KCksIGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS52YWx1ZSk7CkBAIC00NjQyLDcgKzQ2NDIsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAKICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdG9yQ2xv
c2VkLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0
b3IuZ2V0KCksIHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0b3JDbG9zZWQu
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMGE0YTExZjliNDBlNmIxM2M1OTY0
MjI4ZTQxMTI4OWYxZDllZTg2Ni4uMThkYWUwMDRjNzIyY2Q2ZmRjZjg5MTJiYzVjNDIxM2E0MzFi
MjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDM5OCwxMCArNDM5OCw4IEBAIHZvaWQgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcygKICAgICAg
ICAgICAgICAgICBmdW5jdG9yKGZvck5vZGUobm9kZSkpOwogICAgICAgICB9CiAgICAgfQotICAg
IGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0gICAg
ICAgIGZ1bmN0b3IobV9zdGF0ZS5hcmd1bWVudChpKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IG1f
c3RhdGUubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3RvcihtX3N0YXRlLmxv
Y2FsKGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5zaXplKCk7IGktLTspCisgICAg
ICAgIGZ1bmN0b3IobV9zdGF0ZS5hdEluZGV4KGkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXRUYWlsQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDg5N2M3MGRmZmJhMDY2YjY0OWNhZmRjYzFlZjA5
MzM3NjgxMDRkMTMuLjQzOGUxNmRlODU5NTkyNTRkOTU1NzIxYjZmMDhkYjk1ODE0ZmQ4ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0
ZS5oCkBAIC0xMzcsMTEgKzEzNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1ha2VIZWFwVG9wRm9y
Tm9kZShlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwu
bnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKCkgY29u
c3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IH0KKyAg
ICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNB
dFRhaWwubnVtYmVyT2ZUbXBzKCk7IH0KKyAgICBBYnN0cmFjdFZhbHVlJiBhdEluZGV4KHNpemVf
dCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KTsgfQogICAg
IEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKSB7IHJldHVybiBtX2Jsb2Nr
LT52YWx1ZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGxv
Y2FsKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGlu
ZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkgeyByZXR1
cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGluZGV4KTsgfQorICAgIEFic3RyYWN0
VmFsdWUmIHRtcChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC50
bXAoaW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3RydWN0dXJlcygpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAwOTk3YmFiMDUyNTI2NGU2ZjE2NDg1NDI0MmQ5NGNlM2I1N2UzNmRjLi5jZDI2NDJlOTU0ZWVm
OGZmNmIxZDYyODY3MWYzZjNmMWU4ZDM1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC0xNTcsNyArMTU4LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEhlbHBlciBmb3IgbWluIGFuZCBtYXguCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7Cisg
ICAgYm9vbCBoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAKICAgICB2b2lkIHJlZmluZVN0YXRpY2FsbHko
Q2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0KTsKICAgICAvLyBCbG9ja3MgY2FuIGVp
dGhlciBiZSB0YXJnZXRhYmxlIChpLmUuIGluIHRoZSBtX2Jsb2NrTGlua2luZ1RhcmdldHMgb2Yg
b25lIElubGluZVN0YWNrRW50cnkpIHdpdGggYSB3ZWxsLWRlZmluZWQgYnl0ZWNvZGVCZWdpbiwK
QEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEhhbmRsZSBjYWxscy4gVGhpcyBy
ZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5saW5pbmcgYW5kIGludHJpbnNpY3MuCiAgICAg
ZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5hbCB9OwogICAgIFRlcm1pbmFs
aXR5IGhhbmRsZUNhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBl
IG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAg
ICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5r
U3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xODgsMjcgKzE4OSwyNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJp
YW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCk7CiAgICAgdW5z
aWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdz
IG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2
ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0
IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBo
YW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0
dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1l
bnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3Rl
ciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAgICAgdW5zaWduZWQgZ2V0SW5saW5pbmdC
YWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAg
ICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0aW1pemVkVG9KdW1wLCBJ
bmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVD
YWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
Q2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1
bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJ
bmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1
bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywg
Ym9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwotICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFu
ZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2Rl
SW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBo
YW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENh
bGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1l
bnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5k
ZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5z
aWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJv
b2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRs
ZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJn
dW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0
SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
ICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIHZv
aWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxW
YXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAvLyBIYW5kbGUgaW50cmlu
c2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBu
ZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwor
ICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGlu
dHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmlu
c2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhh
bmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5h
bEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OworICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9wZXJhbmQgcmVzdWx0LCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBo
YW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwg
U3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAg
Ym9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUs
IE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFNw
ZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIE5v
ZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQo
U3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAgICBib29sIGhhbmRsZURP
TUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYs
IE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3Vs
dCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9vbCBoYW5kbGVN
b2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBl
LCBOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRl
Y29kZT4KQEAgLTMxOCwxNSArMzE5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBnZXRM
b2NhbE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAgIE5vZGUqIGdldChWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAg
ICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjb25z
dGFudEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLnRvQ29uc3RhbnRJ
bmRleCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUo
KTsKICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUgfHwgIW1fY29uc3Rh
bnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ29kZUJsb2NrJiBj
b2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5kKTsKLSAgICAg
ICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJlcHJlc2VudGF0
aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQp
OworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQo
b3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFu
dFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpKTsKICAg
ICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXplKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3RhbnRJbmRleCArIDEpOwogICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwgbV9jb25zdGFudHMuc2l6
ZSgpOyArK2kpCkBAIC0zNDcsMTAgKzM0OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKCktPmlz
Q2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBpbmxp
bmVDYWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAob3Bl
cmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpCisgICAgICAgICAgICAgICAg
aWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlNDb25zdGFudChjYWxsZWUpOwogICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZCA9PSBWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0
byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRoaXMgZW5hYmxlcyBDcmVh
dGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQgd2UgZG9uJ3QgaGF2ZSBz
dWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1c2VzIG9mIENhbGxlZSwg
c2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUgZnVuY3Rpb24gaXMgYSBz
aW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00MTAsNyArNDExLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNocmluaygwKTsKICAgICB9CiAKLSAgICBO
b2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNl
dE1vZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0KE9wZXJhbmQgb3BlcmFuZCwgTm9kZSog
dmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1
ZSwgc2V0TW9kZSk7CiAgICAgfQpAQCAtNjkxLDE1ICs2OTIsMjAgQEAgcHJpdmF0ZToKICAgICAg
ICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAorICAgIE5vZGUqIGpzQ29uc3RhbnQoRnJv
emVuVmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRkVG9HcmFw
aChKU0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1ZSkpOworICAgIH0KKwogICAgIC8vIEFz
c3VtZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4KICAgICBO
b2RlKiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZVN0cm9uZyhj
b25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6
ZVN0cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgTm9kZSogd2Vha0pTQ29uc3Rh
bnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZFRvR3Jh
cGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKSk7Cisg
ICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKTsK
ICAgICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldC9zZXQgdGhlIHRoaXMgdmFs
dWUuCkBAIC04NTAsNyArODU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSog
YWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9w
SW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywg
Tm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcCA9PSBUYWls
Q2FsbCkgewpAQCAtOTU5LDcgKzk2NSwzNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAgIH0KLSAgICAKKworICAgIC8v
IEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGEgdHJ1ZSBib3R0b20gdmFsdWUgZm9yIGV4YW1wbGUg
YW55IG9iamVjdCBzcGVjdWxhdGlvbiB3aWxsIG5vdyBiZSBPYmplY3R8T3RoZXIgYXMgdGhpcyBy
ZXR1cm5zIG51bGwuCisgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzIHdoZW4gd2UgY2FuIGFsbG9j
YXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAgRnJvemVuVmFsdWUqIGJvdHRvbVZhbHVl
TWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSBzcGVjKQorICAgIHsKKyAgICAgICAg
Ly8gSXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgd2hhdCB3ZSByZXR1cm4gaGVyZS4KKyAgICAg
ICAgaWYgKHNwZWMgPT0gU3BlY05vbmUpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVl
emUoSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBT
cGVjT3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVsbCgpKTsK
KworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjQm9vbGVhbikpCisg
ICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNCb29sZWFuKHRydWUpKTsKKworICAg
ICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjRnVsbE51bWJlcikpCisgICAg
ICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdW1iZXIoMCkpOworCisgICAgICAgIGlm
IChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNCaWdJbnQpKQorICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKworICAg
ICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJv
bCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUobV92bS0+c21hbGxTdHJpbmdz
LmVtcHR5U3RyaW5nKCkpOworCisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMs
IFNwZWNDZWxsT3RoZXIgfCBTcGVjT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBo
LmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgQVNTRVJUKHNwZWN1bGF0aW9uQ29udGFpbnMo
c3BlYywgU3BlY0VtcHR5KSk7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShKU1ZhbHVl
KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSBnZXRBcnJheU1vZGUoQXJyYXk6OkFjdGlvbiBh
Y3Rpb24pCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jazsKQEAgLTExNzQsNyArMTIxMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIE9wdGlvbmFsOiBhIGNvbnRpbnVhdGlvbiBibG9jayBmb3IgcmV0dXJucyB0byBq
dW1wIHRvLiBJdCBpcyBzZXQgYnkgZWFybHkgcmV0dXJucyBpZiBpdCBkb2VzIG5vdCBleGlzdC4K
ICAgICAgICAgQmFzaWNCbG9jayogbV9jb250aW51YXRpb25CbG9jazsKIAotICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1ZTsKKyAgICAgICAgT3BlcmFuZCBtX3JldHVyblZhbHVl
OwogICAgICAgICAKICAgICAgICAgLy8gU3BlY3VsYXRpb25zIGFib3V0IHZhcmlhYmxlIHR5cGVz
IGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrLAogICAgICAgICAvLyB3aGlj
aCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhhdCBwYXN0IERGRyBjb21waWxhdGlv
bnMgb2YgdGhpcwpAQCAtMTE5NCw3ICsxMjMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIENv
ZGVCbG9jayosCiAgICAgICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssCiAgICAgICAg
ICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2Fs
bC4KLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1ZVZSLAorICAgICAgICAg
ICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBpbmxp
bmVDYWxsRnJhbWVTdGFydCwKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCwKQEAgLTEyNjksNiArMTMw
NSw3IEBAIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJs
b2NrKCkKICAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxv
Y2soQnl0ZWNvZGVJbmRleCgpLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIG1fbnVtVG1w
cywgMSkpOwogICAgIEJhc2ljQmxvY2sqIGJsb2NrUHRyID0gYmxvY2sucHRyKCk7CiAgICAgbV9n
cmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CisgICAgVkVSQk9TRV9MT0coIkFkZGlu
ZyBuZXcgdW50YXJnZXRhYmxlIGJsb2NrOiAiLCBibG9ja1B0ci0+aW5kZXgsICJcbiIpOwogICAg
IHJldHVybiBibG9ja1B0cjsKIH0KIApAQCAtMTMwMSw4ICsxMzM4LDggQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2FsbE9wPgogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2Rl
IGNhbGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8Q2FsbE9wPigpOwotICAg
IE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpOwotICAgIGludCByZWdp
c3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7CisgICAgTm9k
ZSogY2FsbFRhcmdldCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNo
ZWNrcG9pbnQoKSkpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+
KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5j
aGVja3BvaW50KCkpKTsKIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKQEAgLTEzMTAsOCArMTM0Nyw4IEBAIEJ5
dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25z
dCBJbnN0cnVjdGlvbiogcGMsIE5vCiAKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCA9
IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7CiAKLSAgICByZXR1cm4gaGFuZGxl
Q2FsbChieXRlY29kZS5tX2RzdCwgb3AsIGtpbmQsIHBjLT5zaXplKCksIGNhbGxUYXJnZXQsCi0g
ICAgICAgIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBn
ZXRQcmVkaWN0aW9uKCkpOworICAgIHJldHVybiBoYW5kbGVDYWxsKGRlc3RpbmF0aW9uRm9yKGJ5
dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCksIEpJVFR5cGU6OkRGR0pJVCksIG9w
LCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAorICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSwgcmVn
aXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOwogfQogCiB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlu
a1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCkKQEAgLTEzMjEsNyArMTM1OCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3Rh
dHVzLCBOb2RlKiBjYWxsCiB9CiAKIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlw
ZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6
ZSwKKyAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgTm9kZSogY2FsbFRhcmdldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAg
Q2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
CiB7CkBAIC0xNjM3LDcgKzE2NzQsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2Fs
bFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCit2b2lkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJl
c3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxv
Y2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
CiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9j
dXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXph
dGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsK
QEAgLTE2NzEsNyArMTcwOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgc2l6ZV90
IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXpl
KCk7CiAKICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKLSAgICAgICAgcmVzdWx0ID0gbV9pbmxp
bmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCkudmlydHVhbFJlZ2lzdGVyKCk7CisgICAg
ICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHQpOwogCiAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAgaWYg
KGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4MjMsNyArMTg2MCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIENhCiAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBzYXZlZEN1cnJlbnRJ
bnN0cnVjdGlvbjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9m
ZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFu
Y2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxl
ZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQs
IENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5k
ZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQogewogICAgIFZFUkJPU0VfTE9H
KCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxuIik7CiAKQEAgLTE5MDAsNyAr
MTkzNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgcmV0dXJuIENhbGxPcHRpbWl6
YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZh
cmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNh
bGxMaW5rU3RhdHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
ZW50LAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJn
dW1lbnRzT2Zmc2V0LAogICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQpCkBAIC0yMDQ0LDcgKzIwODEsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6Z2V0
SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cwogfQog
CiBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKKyAgICBOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0
aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgIEJ5
dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQpAQCAtMjIyMCw3ICsyMjU3LDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBBU1NFUlQob3AgPT0gQXJpdGhNaW4gfHwg
b3AgPT0gQXJpdGhNYXgpOwogCkBAIC0yMjUwLDcgKzIyODcsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGlu
dCByZWdpcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNp
YyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICAgICBUaGUgaW50cmluc2ljIGlz
ICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTIzODksMjcgKzI0MjYsMTEgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzogewogICAg
ICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2lu
ZDsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7Ci0gICAgICAgICAgICBjYXNlIEFy
cmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5VmFsdWVzSW50
cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNp
YzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAg
ICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNh
c2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0
ZXJhdGlvbktpbmQ6OkVudHJpZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBPcHRp
b25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoaW50
cmluc2ljKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEha2luZCk7CiAKICAgICAgICAg
ICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1
c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1
cC4KLSAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKyAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0g
anNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oKmtpbmQpKSk7CiAKICAg
ICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gZXhpc3RpbmcgZXJyb3Igc3RyaW5nLgogICAg
ICAgICAgICAgdW5zaWduZWQgZXJyb3JTdHJpbmdJbmRleCA9IFVJTlQzMl9NQVg7CkBAIC0zNjQ3
LDcgKzM2NjgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklU
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
IT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2Niw3ICszNjg3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LAogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5v
ZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2Rl
KiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIHN3
aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5n
dGhJbnRyaW5zaWM6IHsKQEAgLTM3ODAsNyArMzgwMSw3IEBAIHN0YXRpYyB2b2lkIGJsZXNzQ2Fs
bERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0
R2VuZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIo
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5v
ZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUs
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7
CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zODU5LDcgKzM4ODAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVO
YW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlw
ZWRBcnJheUNvbnN0cnVjdG9yKAotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFs
RnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgT3BlcmFuZCByZXN1
bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSB0eXBlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKCFpc1R5cGVkVmlldyh0
eXBlKSkKQEAgLTM5MTYsNyArMzkzNyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5
cGVkQXJyYXlDb25zdHJ1Y3RvcigKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKLSAg
ICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBWRVJCT1NFX0xPRygiICAgIEhh
bmRsaW5nIGNvbnN0YW50IGludGVybmFsIGZ1bmN0aW9uICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAi
XG4iKTsKQEAgLTY2MDQsMjAgKzY2MjUsNDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
TEFTVF9PUENPREUob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKTsKICAgICAgICAgfQot
ICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczogewogICAg
ICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGw8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5z
dHJ1Y3Rpb24sIENvbnN0cnVjdFZhcmFyZ3MsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOwogICAgICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50
SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0
aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAgICAgICAgICAg
aW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKICAgICAgICAgICAgIGFkZENh
bGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSks
IGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQs
IGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxsX2V2YWwp
OwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29w
ZW46IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSXRlcmF0b3JPcGVuPigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAgdWludDMyX3Qgc2Vlbk1vZGVzID0g
bWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXM7CisKKyAgICAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9kZXMgPSBXVEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7
CisgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0
ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ2FzZSA9IGZhbHNlOwor
CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsK
KyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51bGxwdHI7CisgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2Nr
KCk7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudElu
ZGV4OworCisgICAgICAgICAgICBOb2RlKiBzeW1ib2xJdGVyYXRvciA9IGdldERpcmVjdChieXRl
Y29kZS5tX3N5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQoKTsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlv
bk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0Lmlz
U3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3Qgc2V0IHVwIHRoZSB3YXRj
aHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5lc3MuCisgICAgICAgICAgICAg
ICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJheUl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5TeW1i
b2xJdGVyYXRvckZ1bmN0aW9uID0gbV9ncmFwaC5mcmVlemUoZ2xvYmFsT2JqZWN0LT5hcnJheVBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKG51
bWJlck9mUmVtYWluaW5nTW9kZXMgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uKSwgc3ltYm9s
SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVC
bG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGtub3duSXRlckZ1bmN0aW9uID0g
YWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0
aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0FycmF5
ID0gYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEFycmF5VHlwZSksIGdldChieXRl
Y29kZS5tX2l0ZXJhYmxlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJh
bmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAg
ICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0QXJyYXlCbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KGdlbmVy
aWNCbG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYW5kUmVzdWx0ID0gYWRkVG9H
cmFwaChBcml0aEJpdEFuZCwgaXNBcnJheSwga25vd25JdGVyRnVuY3Rpb24pOworCisgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGJpdCBhbmQgY2Fubm90IGhhdmUgZWZmZWN0cyBz
byBpdCdzIG9rIHRvIGV4aXQgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgYW5kUmVz
dWx0KTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworCisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gVGhlIGJyYW5jaCBhYm92ZSBtYXkgaGF2ZSBtYWRlIGV4aXQgaW52YWxpZCBidXQg
aXQncyBhY3R1YWxseSBvay4KKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIE5vZGUqIGtp
bmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0
aW9uS2luZDo6VmFsdWVzKSkpOworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRk
VG9HcmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSwgaXRlcmF0b3Is
IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVy
YXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsKKyAgICAgICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgaXRlcmF0b3IpOworCisgICAgICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fbmV4dCwganNDb25zdGFudChKU1ZhbHVlKCkpKTsKKworICAgICAgICAg
ICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0
QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0
KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAg
ICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJh
dGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0
eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck9wZW4+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAg
ICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIE5v
ZGUqIGl0ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygp
OworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVu
dGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0
YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgIGJyYW5jaERh
dGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAg
IGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdE9iamVjdEJsb2NrKTsKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhZGRU
b0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvcikpOworCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOworICAgICAgICAg
ICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1
ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAgICAgICAg
ICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJv
clN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRU
b0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJv
ck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGlzT2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
Q2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBnZXRQcmVkaWN0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogbmV4dElt
cGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1
cmUobmV4dEltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFj
Y2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAg
IEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmln
aW4oKSk7CisKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1f
bmV4dCwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihuZXh0SW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVz
LCB0eXBlLCBvcGNvZGVMZW5ndGgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBz
ZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdl
IG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAg
ICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Z2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgh
Z2VuZXJhdGVkQ2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3Rh
bnQoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7
CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwgcmVzdWx0KTsKKworICAgICAgICAgICAg
ICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5
IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgp
ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAg
ICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9y
VGVybWluYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBzdGFydEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247
CisgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9pdGVyYXRvcl9vcGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jf
bmV4dDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMg
PSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVz
KTsKKyAgICAgICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9m
SXRlcmF0aW9uTW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7
CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4
OworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7
CisgICAgICAgICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0g
Z2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAg
QmFzaWNCbG9jayogY29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOwor
CisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5ICYm
IGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9ucyB3
ZSBuZWVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9p
bnRzKCkuYWRkTGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworCisg
ICAgICAgICAgICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgIT0gMSkgeworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBoYXNOZXh0ID0gYWRkVG9HcmFwaChJc0VtcHR5LCBnZXQoYnl0
ZWNvZGUubV9uZXh0KSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9j
YXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
ZmFzdEFycmF5QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRh
LmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRh
cmdldChmYXN0QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5v
dFRha2VuID0gQnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGhhc05leHQpOworCisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRk
U3RydWN0dXJlU2V0KGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSksIGl0
ZXJhdG9yKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzRG9uZUJsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5v
dERvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsK
KworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4
ID0ganNDb25zdGFudChqc051bWJlcigtMSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBp
bmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVp
bnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMy
T25seSksIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNEb25lID0gYWRk
VG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIGluZGV4LCBkb25lSW5kZXgpOworCisgICAgICAgICAg
ICAgICAgICAgIEJyYW5jaERhdGEqIGlzRG9uZUJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNo
RGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNEb25lQnJhbmNoRGF0YS0+dGFrZW4g
PSBCcmFuY2hUYXJnZXQoaXNEb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBpc0RvbmVC
cmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGlzRG9uZUJyYW5jaERhdGEp
LCBpc0RvbmUpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAg
ICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhp
dChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6
Z2V0VmFsdWUpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBub3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2Fj
aGVzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdl
dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJh
dG9yOjpGaWVsZDo6SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUu
bV9pdGVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYWJsZSA9IGdldChi
eXRlY29kZS5tX2l0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYnV0dGVyZmx5
ID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGl0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogbGVuZ3RoID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKGFycmF5
TW9kZS5hc1dvcmQoKSksIGl0ZXJhYmxlLCBidXR0ZXJmbHkpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIGluZGV4LCBsZW5n
dGgpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IC8vIFRoZSBhYm92ZSBj
b21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBlZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5kZXggYW5kIGxl
bmd0aCBhcmUgaW50MzJzLgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7
CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgu
bV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtl
biA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5j
aERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KGRvTG9hZEJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaXNEb25lKTsK
KyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBkb0xvYWRCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmll
bGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6
SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikp
OworICAgICAgICAgICAgICAgICAgICBOb2RlKiBvbmUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEp
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtYWtlU2FmZShhZGRUb0dy
YXBoKEFyaXRoQWRkLCBpbmRleCwgb25lKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGZh
bHNlTm9kZSA9IGpzQ29uc3RhbnQoanNCb29sZWFuKGZhbHNlKSk7CisKKworICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFy
Zywgc2luY2UgaXQgb25seSB1c2VzIHRocmVlIGNoaWxkCisgICAgICAgICAgICAgICAgICAgIC8v
IHNsb3RzLgorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFy
Z0NoaWxkKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8v
IExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGdldEJ5VmFsID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIEdldEJ5VmFsLCBPcEluZm8o
YXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGdldEJ5VmFsKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgZmFsc2VOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9y
KSwgbmV3SW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxz
LiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0
aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBC
eXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9u
LT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJv
Y2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1
bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JU
ZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJvbGwg
YmFjayB0aGUgY2hlY2twb2ludC4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0
YXJ0SW5kZXg7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEJsb2NrID0gaXNEb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVz
KCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHRydWVOb2RlID0ganNDb25zdGFudChqc0Jv
b2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0Nv
bnN0YW50KGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJvdHRvbU5v
ZGUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbU5v
ZGUpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCB0cnVlTm9kZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZv
KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBn
ZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0
cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZs
dXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBt
X2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2Fz
ZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9j
aykgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVy
bWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0PihjdXJyZW50
SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7Cisg
ICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxv
Y2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERv
bmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAg
IE9wZXJhbmQgbmV4dFJlc3VsdCA9IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJl
c3VsdCk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVy
YXRvclJlc3VsdCA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNo
RGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAg
ICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJn
ZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5j
aCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvclJlc3Vs
dCkpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hl
cygpOworICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlK
U1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9w
SW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50
LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9y
LCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgYXV0byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRP
U1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JO
ZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0g
aXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24o
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0NvbnN0YW50KGJv
dHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbih2YWx1ZVByZWRpY2l0aW9uKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byogZG9uZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKS5lbnN1cmUoZG9uZUltcGwpOworCisgICAgICAgICAgICAgICAgICAg
IEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOwor
CisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0
dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxl
R2V0QnlJZChieXRlY29kZS5tX2RvbmUsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoZG9uZUltcGwpLCBpZGVudGlmaWVy
TnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gU2V0IGEgdmFsdWUgZm9yIG1fdmFsdWUgc28gd2UgZG9uJ3QgdGhpbmsKKyAgICAg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbVZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFk
ZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdl
dChjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtl
biA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBnZXQoYnl0ZWNvZGUubV9kb25lKSk7
CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrID0gbm90RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOwor
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPnZh
bHVlLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodmFsdWVJbXBsKTsKKworICAgICAgICAg
ICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9
IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVQcmVkaWNpdGlvbiwgYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2YWx1
ZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7
CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92
YWx1ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCByZXN1
bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdh
bnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRl
Y29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9j
dXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
RXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAg
ICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX25leHQpOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgICAgICAgICAgRnJvemVuVmFsdWUq
IGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5t
X2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcikpOwpAQCAt
NzEwNyw3ICs3NTM1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxh
dGVyLCBhcyB0aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAg
ICAgICAgICAgLy8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVy
LgogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRTY29wZT4oKTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxsRnJhbWVTbG90
OjpjYWxsZWUpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAg
ICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RD
b25zdGFudDxKU0Z1bmN0aW9uKj4oKm1fdm0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdl
YWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc0ODYsNyArNzkxNCw3IEBAIEJ5
dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJldHVyblZhbHVl
LAogICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
CkBAIC03NDk1LDcgKzc5MjMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSgKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1f
cHJvZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQogICAgICwgbV9jb250aW51YXRpb25CbG9jayhj
b250aW51YXRpb25CbG9jaykKLSAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAg
ICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBh
cnNlci0+bV9pbmxpbmVTdGFja1RvcCkKIHsKICAgICB7CkBAIC03NTYxLDcgKzc5ODksNyBAQCBC
eXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAg
ICAgLy8gTWFjaGluZSBjb2RlIGJsb2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sg
PT0gYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKCFjYWxsZWUp
OwotICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAgICAgICAgQVNT
RVJUKCFyZXR1cm5WYWx1ZS5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxG
cmFtZVN0YXJ0LmlzVmFsaWQoKSk7CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOwpA
QCAtNzk3Niw3ICs4NDA0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAg
ICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKIAogICAgICAgICAgICAgICAg
IGF1dG8gbm9kZUFuZEluZGV4ID0gYmxvY2stPmZpbmRUZXJtaW5hbCgpOwotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxl
KTsKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJbmRleC5ub2Rl
LCBub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICAg
ICAgYmxvY2stPnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IGU3ZjZlNzYyNDY2OWIz
MDFmNWEwMjA0OGMyNWQ0ODE1YzNhMTMzOWQuLjYxMGQ3ZDIwZWY2NTM1ZjdhOGU5NWJjZWExMjFl
ZjNiOGFiNDAyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2lj
QmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9k
ZU9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFs
aXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVP
cmlnaW4gbm9kZU9yaWdpbiwgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgTm9kZSog
bGl2ZW5lc3NOb2RlID0gamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChv
cGVyYW5kKTsKICAgICAgICAgaWYgKCFsaXZlbmVzc05vZGUpCkBAIC0zMDIsMTEgKzMwMiw5IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBqZXR0aXNvbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2Nr
LCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3Jp
Z2luKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAg
ICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9y
aWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJs
b2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaSkpOwotICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBq
ZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3Jp
Z2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkp
OworCiAgICAgICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpldHRpc29uZWRC
bG9jayk7CiAgICAgfQogICAgIApAQCAtMzUyLDExICszNTAsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgLy8gVGltZSB0byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8g
YmUga2VwdCBhbGl2ZSBpbiBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0
byBoaXR0aW5nIHRoZSBmaXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93
biBhCiAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJsb2NrLgotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAg
ICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91
bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
aSkpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICAgICAg
a2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9k
ZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRp
c29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlY29uZEJsb2NrLT5waGlzLnNpemUoKTsgKytpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1
OWI3NzgwYTZjYzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjYwMDMzMmYxOTBmZjhiNDA0
MmNkNTQyYWI5NWI1MDUzNmFkN2E3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI3NCw2ICsyNzQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSQogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAg
ICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46Cisg
ICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CiAgICAgY2Fz
ZSBvcF9wdXRfdG9fc2NvcGU6CkBAIC0zMTEsNiArMzEzLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEkKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJh
bXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBj
YXNlIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9y
ZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlv
bjoKICAgICBjYXNlIG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY29uc3Ry
dWN0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnc19zbG93X3JldHVy
bl9sb2NhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDFhNGRlY2RhMGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYuLmRiYzgzMWMy
ZWJlMDg2Zjg3MzY2YTdlNTRhMzVlNTkzYTliMDc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjQxMSw3ICsyNDExLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTogewotICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggYmY0MzUw
YzRjZDE3ZTNkNTAwNjYzOGY1NWFhYzM1YTU2NTI5OTRhMS4uZDljOTc0MjhmZDZhZTVlYTUwNmQw
NTcyNjczMDIwZGQxYWZmMTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGb3JBbGxLaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9y
QWxsS2lsbHMuaApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGJl
Zm9yZUlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIGlmIChhZnRlci5ieXRlY29kZUluZGV4KCku
Y2hlY2twb2ludCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVjb2RlSW5kZXgo
KS5jaGVja3BvaW50KCkgIT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSk7Ci0g
ICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zm
c2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpLCAiV2hlbiB0aGUgREZHIGRv
ZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0
Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29k
ZUluZGV4KCkub2Zmc2V0KCkgfHwgbm9kZUFmdGVyLT5vcCgpID09IEV4aXRPSyB8fCBub2RlQWZ0
ZXItPm9wKCkgPT0gSW52YWxpZGF0aW9uUG9pbnQsICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1v
dGlvbiBpdCBzaG91bGQgY2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vy
cm91bmRpbmcgYnl0ZWNvZGVzLiIpOwogCiAgICAgICAgICAgICBhdXRvIGxpdmVCZWZvcmUgPSB0
bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYmVmb3JlLmJ5dGVjb2RlSW5kZXgo
KSk7CiAgICAgICAgICAgICBhdXRvIGxpdmVBZnRlciA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2lu
dCgqY29kZUJsb2NrLCBhZnRlci5ieXRlY29kZUluZGV4KCkpOwpAQCAtMTAyLDggKzEwMiw2IEBA
IHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3Jl
LCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpLCAi
VHJhbnNpdGlvbmluZyBhY3Jvc3MgYSBjaGVja3BvaW50IGJ1dCBiZWZvcmUgYW5kIGFmdGVyIGRv
bid0IHNoYXJlIGFuIGlubGluZUNhbGxGcmFtZS4iKTsKLQogICAgIC8vIERldGVjdCBraWxscyB0
aGUgc3VwZXIgY29uc2VydmF0aXZlIHdheTogaXQgaXMga2lsbGVkIGlmIGl0IHdhcyBsaXZlIGJl
Zm9yZSBhbmQgZGVhZCBhZnRlci4KICAgICBCaXRWZWN0b3IgbGl2ZUFmdGVyID0gZ3JhcGgubG9j
YWxzQW5kVG1wc0xpdmVJbkJ5dGVjb2RlKGFmdGVyKTsKICAgICB1bnNpZ25lZCBudW1Mb2NhbHMg
PSBncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
Y3BwCmluZGV4IDIwMmQyMjUwNTNmYTlkZmJlNWMyM2M2NGJjZjhiZTM4NGUzZTc2NTQuLjdjYzM0
YWUyZDBkNGU1Zjg0OGU2OTU3MzAyNDkyYzEyMWQ3MWZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCkBAIC01OSw2
ICs1OSw5IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNp
Y0Jsb2NrKiBiYXNpY0Jsb2NrKQogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhl
YWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZM
b2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJP
ZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsK
ICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkg
PT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOworICAgIEFT
U0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNC
bG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0
VGFpbC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZUbXBzKCkpOwogCiAgICAgbV9hYnN0cmFjdFZhbHVlcy5yZXNpemUoKTsKIApAQCAtMTYxLDYg
KzE2NCwxMCBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAg
ICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwogICAgICAg
ICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAg
IH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLnRtcChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRU
YWlsLnRtcChpKS5jbGVhcigpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpAQCAtMTc1LDEz
ICsxODIsOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAg
ICAgYmxvY2stPmNmYVRoaW5rc1Nob3VsZFRyeUNvbnN0YW50Rm9sZGluZyA9IGZhbHNlOwogICAg
ICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0Fy
ZVdhdGNoZWQ7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwg
PSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICAg
ICAgYmxvY2stPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICAgICAg
YmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAgICB9Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxv
Y2FscygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQubG9jYWwoaSku
Y2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIo
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkW2ldLmNsZWFyKCk7
CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldLmNsZWFyKCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTIzOSw3ICsyNDIsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpl
bmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICAg
ICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMg
dGhlIHZhbHVlIGZyb20gaGVhZCB0byB0YWlsLgotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gdmFyaWFibGVBdChpbmRleCk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBhdElu
ZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKQEAgLTMwNCw3ICszMDcsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRl
OjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IHZh
cmlhYmxlQXQoaSk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gYXRJbmRl
eChpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiB2
YWx1ZUF0VGFpbCA6IGJsb2NrLT5zc2EtPnZhbHVlc0F0VGFpbCkKQEAgLTM0Myw2ICszNDYsNyBA
QCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykKICAgICAgICAgZGF0YUxvZygiICAgTWVyZ2luZyBmcm9tICIsIHBvaW50ZXJE
dW1wKGZyb20pLCAiIHRvICIsIHBvaW50ZXJEdW1wKHRvKSwgIlxuIik7CiAgICAgQVNTRVJUKGZy
b20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpID09IHRvLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZkxvY2FscygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKSk7CisgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9
PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKICAgICAKICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAKQEAgLTM1MiwxNCArMzU2LDkgQEAgYm9vbCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAg
CiAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkgewogICAgIGNhc2UgVGhyZWFkZWRDUFM6IHsK
LSAgICAgICAgZm9yIChzaXplX3QgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGZyb20tPnZhcmlh
Ymxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2FyZ3VtZW50KSB7Ci0gICAgICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
YXJndW1lbnQpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJs
b2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwg
dG8tPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCksIGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBm
b3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJl
ck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3Rp
bmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5sb2NhbChsb2NhbCk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1
ZXNBdFRhaWwubG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKSwg
ZnJvbS0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNB
dEhlYWQuYXQoaW5kZXgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0
d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmF0KGluZGV4KSwgdG8t
PnZhcmlhYmxlc0F0SGVhZC5hdChpbmRleCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5hdChpbmRl
eCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRleCAxODY1ZTZh
MWVmZmMzZGFhZWZlNTg0Y2E4NjJjNDliYzM2ODU4NTAwLi5jNWQwMjY4NzNlMDEwZDA3ZjM4MTFj
NmM0ZmVmNTY2ZTFjYTcwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0xNTgsMTAgKzE1OCwxMiBAQCBwdWJsaWM6
CiAgICAgCiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4mIHZhcmlhYmxlc0ZvckRlYnVnZ2lu
ZygpOwogCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLnNp
emUoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV92YXJpYWJsZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9m
TG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgfQor
ICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51
bWJlck9mVG1wcygpOyB9CiAgICAgCi0gICAgQWJzdHJhY3RWYWx1ZSYgdmFyaWFibGVBdChzaXpl
X3QgaW5kZXgpCisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAg
ewogICAgICAgICBhY3RpdmF0ZVZhcmlhYmxlSWZOZWNlc3NhcnkoaW5kZXgpOwogICAgICAgICBy
ZXR1cm4gZmFzdEZvcndhcmQobV92YXJpYWJsZXNbaW5kZXhdKTsKQEAgLTE2OSwxNyArMTcxLDE3
IEBAIHB1YmxpYzoKIAogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5k
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMub3BlcmFuZElu
ZGV4KG9wZXJhbmQpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMub3BlcmFu
ZEluZGV4KG9wZXJhbmQpKTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwo
c2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJs
ZXMubG9jYWxJbmRleChpbmRleCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxl
cy5sb2NhbEluZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGFy
Z3VtZW50KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1f
dmFyaWFibGVzLmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgo
bV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRleCkpOwogICAgIH0KICAgICAKICAgICAvLyBD
YWxsIHRoaXMgYmVmb3JlIGJlZ2lubmluZyBDRkEgdG8gaW5pdGlhbGl6ZSB0aGUgYWJzdHJhY3Qg
dmFsdWVzIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlK
U1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKaW5k
ZXggZjVlZWYyZjNkZjcyMTI5YTgzOGM3Njg2ZTI2Yjk2MGI1MGY1ODFlZS4uN2EzMzY2NmFhNzFh
MWY2NjZjOTRiMjhiNjQ0NzQ4NGQ2N2JiYjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGF6eUpTVmFsdWUuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IExhenlKU1ZhbHVlIG5ld1N0cmluZyhHcmFwaCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgTGF6
aW5lc3NLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLbm93blZhbHVl
ID8gU3BlY0J5dGVjb2RlVG9wIDogU3BlY1N0cmluZzsgfQogICAgIAogICAgIEZyb3plblZhbHVl
KiB0cnlHZXRWYWx1ZShHcmFwaCYpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggYTg1MmRiZGQ5YjkzNzBkNmRlNjUzYzVhNDg4NzExNzAw
ZThiODc5Yi4uNTIyMzRiNGE1ZDNmNjk3NmMyZmE5OTgxNmRjZTExMDY4MTA1NGVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC00OCwxMSArNDgsMTIgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0KEV4
aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVk
IHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6T1NSRXhpdChF
eGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25l
ZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCwgdW5zaWduZWQgZGZnSVJJbmRl
eCkKICAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5t
X29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQogICAgICwgbV9qc1Zh
bHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2Zp
bGUpCiAgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAgICAsIG1fZGZnSVJJ
bmRleChkZmdJUkluZGV4KQogICAgICwgbV9zdHJlYW1JbmRleChzdHJlYW1JbmRleCkKIHsKICAg
ICBib29sIGNhbkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMxZDY4Nzc5NzJmMjU5ZDYyYzFhMjMw
MGIyYjE2MS4uOGNlOGI5MjA3OWFmNzUyOTk3MDNmMTdmZGRhZTJmZWMzYjljMjhjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxs
RnJhbWUqLCB2b2lkKiwgdm9pZAogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBl
eGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2luZyBpbnRvIGJhc2VsaW5lIGNvZGUu
CiBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7Ci0gICAgT1NSRXhpdChFeGl0
S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3Vs
YXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9
IFVJTlRfTUFYKTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgsIHVuc2lnbmVkIGRmZ0lSSW5k
ZXggPSBVSU5UX01BWCk7CiAKICAgICBmcmllbmQgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopOwogCkBAIC0xNTksNiArMTU5LDcgQEAgc3RydWN0
IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUlu
ZGV4OworICAgIHVuc2lnbmVkIG1fZGZnSVJJbmRleDsKIAogICAgIENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4gY29kZUxvY2F0aW9uRm9yUmVwYXRjaCgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAKaW5kZXggMWRmMzk0MzI0MWQ1YWY3OTMxOThlZjljNzEyNzNlNzU4YTBhMjI2YS4uMDg1
ZGM1MzBiM2JjMzc5ZmI0ZjNlNjA5MWNiNWM2NTIwMjc1ODdhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAt
MTU5LDkgKzE1OSwxNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2Fs
bGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogI2RlZmluZSBMTElOVF9S
RVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6
OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikg
OiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRy
PEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSkKIAogICAgICAgICBzd2l0
Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6
Q2FsbDoKLSAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Y2FsbCk7CisgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CisgICAgICAgICAg
ICBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfY2FsbCkKKyAgICAgICAgICAg
ICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAg
ICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3Jf
b3BlbikKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9u
Lm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAgICAgICAgICAgICAgICBqdW1wVGFy
Z2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX25leHQpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0
cnVjdDoKICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Y29uc3RydWN0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDYgKzI0NSw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NFUlQoanVtcFRh
cmdldCk7CiAgICAgcmV0dXJuIGp1bXBUYXJnZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggMjEwMDNlZDVmZDNmYmMzODE2MmM4OTJiMzRjODQ3YjkyNzY4M2ZhZS4uNmUwOTBhMzhi
ZmMwOTQ3NWE3ZDdiZDU5MWUyNTFhM2U5MzQ2ODU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTExMDEsNiArMTEwMSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jdXJyZW50Tm9k
ZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5
dGVjb2RlVXNlc0FzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBMYXp5SlNDb25zdGFudDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1
cnJlbnROb2RlLT5sYXp5SlNWYWx1ZSgpLnNwZWN1bGF0ZWRUeXBlKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAg
Y2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CkBAIC0x
MzA1LDcgKzEzMTEsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAg
IGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgotICAgICAgICBjYXNlIExhenlKU0NvbnN0
YW50OgogICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBz
aG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLgogICAg
ICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsICJVbmV4cGVjdGVkIG5v
ZGUgZHVyaW5nIHByZWRpY3Rpb24gcHJvcGFnYXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4
YTFiZmYzOThjYi4uOWFlOTgwNGM3NWI5NWVjNTYxZWQyZjFhNTJiOWRlYzk4Yzg0NWVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTcxLDYgKzcxLDgg
QEAgcHVibGljOgogICAgICAgICAgICAgZGF0YUxvZ0YoIikgPT0gKCVzID0gIiwgI3JpZ2h0KTsg
XAogICAgICAgICAgICAgZGF0YUxvZyhyaWdodCk7IFwKICAgICAgICAgICAgIGRhdGFMb2dGKCIp
ICglczolZCkuXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgICAgICAgICBkYXRhTG9n
KCJcblxuXG4iKTsgXAorICAgICAgICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihu
dWxscHRyKS0+ZHVtcEJ5dGVjb2RlKCk7IFwKICAgICAgICAgICAgIGR1bXBHcmFwaElmQXBwcm9w
cmlhdGUoKTsgXAogICAgICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVf
XywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNsZWZ0ICIgPT0gIiAjcmlnaHQpOyBc
CiAgICAgICAgICAgICBDUkFTSCgpOyBcCkBAIC01NjgsNiArNTcwLDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IGdldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlr
ZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+
IHNldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSktPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRl
ZENQUykKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxv
Y2spLCAhYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0
VGFpbC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworCisgICAgICAgICAgICAgICAg
Z2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0OworICAgICAgICAgICAgICAgIHNldExv
Y2FsUG9zaXRpb25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVz
QXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkt
PmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
Zm9ybSA9PSBUaHJlYWRlZENQUykKQEAgLTcxNiw2ICs3MjYsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgY2hlY2tPcGVyYW5kKAorICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9j
YWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kOjp0bXAoaSkpOworICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
Y2hlY2tPcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9jYWxQb3NpdGlv
bnMsIHNldExvY2FsUG9zaXRpb25zLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoaSkpOwpAQCAtOTQ0LDcgKzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNr
T3BlcmFuZCgKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2ssIE9wZXJhbmRzPHNpemVfdD4mIGdl
dExvY2FsUG9zaXRpb25zLAotICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0
aW9ucywgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgICAgIE9wZXJhbmRzPHNpemVfdD4m
IHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAo
Z2V0TG9jYWxQb3NpdGlvbnMub3BlcmFuZChvcGVyYW5kKSA9PSBub3RTZXQpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IDRhOGIx
ZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQuLjk0ZGUzOGNiNzE2NzhhZDg2YWJh
YzZiN2M2Mjg3OWMxNmIxMGM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNM
LnJiCkBAIC0xMzcsNiArMTM3LDcgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkdldEJ5SWRNZXRh
ZGF0YS5oIgogI2luY2x1ZGUgIkdldEJ5VmFsSGlzdG9yeS5oIgogI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bj
b2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFn
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0
YS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXgg
N2NkMTVkMzE1ZDYzOTBhYmEyNjM1ZTk2MzU5Zjg5MGUyZWI3MWE5NS4uYzA3NzVkOGUxYjEwNTAy
ZGYwMWE3NGFmMGM2ZGViNGE4NzVjYzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL01ldGFkYXRhLnJiCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIE1ldGFkYXRhCiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhKTsKIAogICAgIHB1YmxpYzoKKyAgICAg
ICAgI3tvcC5vcGNvZGVJRH0KICAgICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5jYXBpdGFsaXpl
ZF9uYW1lfSYjeyIgX19vcCIgaWYgaW5pdHN9KSN7aW5pdHN9IHsgfQogCiAje2ZpZWxkc30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgppbmRleCA5YjVlZTkwOTZl
ZTcxYjFiMGQzZWQ3ZjdjZDE4ZGIwNmZjYjM1ZmNmLi43ZjQzMDJkODgyZWY2ZjM1OTU3Njc3ZWRj
ZjA0OWQzMjZmOTY0NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0
aW9uLnJiCkBAIC01Myw3ICs1MywxNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGVuZAogCiAgIGRlZiBz
b3J0IQotICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8IGEubWV0YWRhdGEu
ZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIH0KKyAgICAgIEBvcGNvZGVz
ID0gQG9wY29kZXMuc29ydCB7IHxhLCBifAorICAgICAgICAgIHJlc3VsdCA9IG5pbAorICAgICAg
ICAgIGlmIGEuY2hlY2twb2ludHMgb3IgYi5jaGVja3BvaW50cworICAgICAgICAgICAgICByYWlz
ZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7YS5u
YW1lfSIgaWYgYS5jaGVja3BvaW50cyBhbmQgYS5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAg
ICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRh
OiAje2IubmFtZX0iIGlmIGIuY2hlY2twb2ludHMgYW5kIGIubWV0YWRhdGEuZW1wdHk/CisgICAg
ICAgICAgICAgIHJlc3VsdCA9IGEuY2hlY2twb2ludHMgPyBiLmNoZWNrcG9pbnRzID8gMCA6IC0x
IDogMQorICAgICAgICAgIGVsc2lmCisgICAgICAgICAgICAgIHJlc3VsdCA9IGEubWV0YWRhdGEu
ZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIAorICAgICAgICAgIGVuZAor
ICAgICAgICAgIHJlc3VsdAorICAgICAgfQogICAgICAgQG9wY29kZXMuZWFjaCgmOmNyZWF0ZV9p
ZCEpCiAgIGVuZAogCkBAIC03Myw2ICs4MywxOSBAQCBjbGFzcyBTZWN0aW9uCiAgICAgICBlbmQK
IAogICAgICAgaWYgY29uZmlnWzplbWl0X2luX3N0cnVjdHNfZmlsZV0KKyAgICAgICAgICBpID0g
MAorICAgICAgICAgIHdoaWxlIHRydWUKKyAgICAgICAgICAgICAgaWYgIW9wY29kZXNbaV0uY2hl
Y2twb2ludHMKKyAgICAgICAgICAgICAgICAgIHByaW50KCJGT1VORCBUSEUgTlVNQkVSIE9GIENI
RUNLUE9JTlRTIEFORCBJJ00gUFJJTlRJTkcgSVQgSU5UTyBUSEUgRklMRSBXSU5ET1dTISIpCisg
ICAgICAgICAgICAgICAgICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgb3V0IDw8ICIj
ZGVmaW5lIE5VTUJFUl9PRl8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9XSVRIX0NI
RUNLUE9JTlRTICN7aX1cbiIKKyAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAg
IGVuZAorCisgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgIGVuZAorICAgICAgICAgIG91
dCA8PCAiXG4iCisKICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VBQ0hfI3tjb25m
aWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFfU0laRShtYWNybykgXFxcbiIpCiAg
ICAgICAgICAgaSA9IDAKICAgICAgICAgICB3aGlsZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDY0NTM5MTI3YjhjNzRjODIw
MjliMmJiNjE4MGU2OTY5NzFhNjRiYzguLjNmZjkyYjQ1M2E3MjkyNmRjNzRlY2JkY2Y2ZTMxNGJj
ZmIzNjhlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC00MywxMzkgKzQzLDEzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAg
IGNsYXNzIENvZGVCbG9jazsKLSAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgVk07Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsK
LSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50
OwotICAgIGNsYXNzIEpTTW9kdWxlUmVjb3JkOwotICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKLSAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBSZWdpc3RlcjsKLSAgICBjbGFzcyBKU1Njb3BlOwot
ICAgIGNsYXNzIFNvdXJjZUNvZGU7Ci0gICAgY2xhc3MgU3RhY2tGcmFtZTsKLSAgICBzdHJ1Y3Qg
Q2FsbEZyYW1lQ2xvc3VyZTsKLSAgICBzdHJ1Y3QgSGFuZGxlckluZm87Ci0gICAgc3RydWN0IElu
c3RydWN0aW9uOwotICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKLQotICAgIGVudW0gRGVidWdI
b29rVHlwZSB7Ci0gICAgICAgIFdpbGxFeGVjdXRlUHJvZ3JhbSwKLSAgICAgICAgRGlkRXhlY3V0
ZVByb2dyYW0sCi0gICAgICAgIERpZEVudGVyQ2FsbEZyYW1lLAotICAgICAgICBEaWRSZWFjaERl
YnVnZ2VyU3RhdGVtZW50LAotICAgICAgICBXaWxsTGVhdmVDYWxsRnJhbWUsCi0gICAgICAgIFdp
bGxFeGVjdXRlU3RhdGVtZW50LAotICAgICAgICBXaWxsRXhlY3V0ZUV4cHJlc3Npb24sCi0gICAg
fTsKLQotICAgIGVudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKLSAgICAgICAgU3RhY2tGcmFtZUds
b2JhbENvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVFdmFsQ29kZSwKLSAgICAgICAgU3RhY2tGcmFt
ZU1vZHVsZUNvZGUsCi0gICAgICAgIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGUsCi0gICAgICAgIFN0
YWNrRnJhbWVOYXRpdmVDb2RlCi0gICAgfTsKLQotICAgIGNsYXNzIEludGVycHJldGVyIHsKLSAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDYWNo
ZWRDYWxsOwotICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOwotICAgICAgICBmcmllbmQgY2xhc3MgVk07Ci0KLSAgICBw
dWJsaWM6Ci0gICAgICAgIEludGVycHJldGVyKFZNICYpOwotICAgICAgICB+SW50ZXJwcmV0ZXIo
KTsKLSAgICAgICAgCitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBFdmFsRXhlY3V0YWJsZTsKK2Ns
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworY2xhc3MgSlNGdW5jdGlvbjsKK2Ns
YXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKK2NsYXNzIEpT
TW9kdWxlUmVjb3JkOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNzIFJlZ2lz
dGVyOworY2xhc3MgSlNTY29wZTsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBTdGFja0ZyYW1l
Oworc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7CitzdHJ1Y3QgSGFuZGxlckluZm87CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CitzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisKK2VudW0gRGVidWdIb29rVHlw
ZSB7CisgICAgV2lsbEV4ZWN1dGVQcm9ncmFtLAorICAgIERpZEV4ZWN1dGVQcm9ncmFtLAorICAg
IERpZEVudGVyQ2FsbEZyYW1lLAorICAgIERpZFJlYWNoRGVidWdnZXJTdGF0ZW1lbnQsCisgICAg
V2lsbExlYXZlQ2FsbEZyYW1lLAorICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50LAorICAgIFdpbGxF
eGVjdXRlRXhwcmVzc2lvbiwKK307CisKK2VudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKKyAgICBT
dGFja0ZyYW1lR2xvYmFsQ29kZSwKKyAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgU3RhY2tG
cmFtZU1vZHVsZUNvZGUsCisgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwKKyAgICBTdGFja0Zy
YW1lTmF0aXZlQ29kZQorfTsKKworY2xhc3MgSW50ZXJwcmV0ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBm
cmllbmQgY2xhc3MgVk07CisKK3B1YmxpYzoKKyAgICBJbnRlcnByZXRlcihWTSAmKTsKKyAgICB+
SW50ZXJwcmV0ZXIoKTsKKyAgICAKICNpZiBFTkFCTEUoQ19MT09QKQotICAgICAgICBDTG9vcFN0
YWNrJiBjbG9vcFN0YWNrKCkgeyByZXR1cm4gbV9jbG9vcFN0YWNrOyB9CisgICAgQ0xvb3BTdGFj
ayYgY2xvb3BTdGFjaygpIHsgcmV0dXJuIG1fY2xvb3BTdGFjazsgfQogI2VuZGlmCi0gICAgICAg
IAotICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOworICAg
IAorICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCk7CiAKLSAgICAg
ICAgc3RhdGljIGlubGluZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOworICAgIHN0YXRp
YyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlKTsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CisgICAgc3RhdGljIGJv
b2wgaXNPcGNvZGUoT3Bjb2RlKTsKICNlbmRpZgogCi0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZVBy
b2dyYW0oY29uc3QgU291cmNlQ29kZSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNP
YmopOwotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Ci0gICAg
ICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rp
b24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBB
cmdMaXN0Jik7Ci0gICAgICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3RE
YXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKLSAgICAgICAgSlNWYWx1
ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNTY29wZSopOwotCi0gICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJh
bWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0
ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwotCi0gICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5m
byogdW53aW5kKFZNJiwgQ2FsbEZyYW1lKiYsIEV4Y2VwdGlvbiopOwotICAgICAgICB2b2lkIG5v
dGlmeURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKLSAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWco
Q2FsbEZyYW1lKiwgRGVidWdIb29rVHlwZSk7Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgc3RhY2tU
cmFjZUFzU3RyaW5nKFZNJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7Ci0KLSAgICAgICAg
dm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVz
dWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNpemVfdCBtYXhTdGFja1NpemUgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IGVudW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwotICAg
ICAgICAKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgY2hlY2tlZFJldHVybihKU1ZhbHVlIHJldHVy
blZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBzdGF0aWMgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlNPYmplY3QqIHJldHVyblZhbHVlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOwotICAgICAgICAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbEZyYW1lQ2xvc3Vy
ZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQ
cm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7Ci0KLSAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KENhbGxGcmFtZUNsb3N1cmUmKTsKLQotICAgICAgICBWTSYgbV92bTsKKyAgICBKU1ZhbHVlIGV4
ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KiB0aGlzT2JqKTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Cisg
ICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlv
biwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCos
IEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYs
IGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CisgICAgSlNWYWx1ZSBleGVjdXRl
KEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNT
Y29wZSopOworCisgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rp
b24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGlu
dCYgYXJnYyk7CisKKyAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENh
bGxGcmFtZSomLCBFeGNlcHRpb24qKTsKKyAgICB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZFeGNlcHRp
b25Ub0JlVGhyb3duKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFeGNlcHRpb24q
KTsKKyAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tUeXBl
KTsKKyAgICBzdGF0aWMgU3RyaW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3Rv
cjxTdGFja0ZyYW1lPiYpOworCisgICAgdm9pZCBnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIs
IFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDAsIHNp
emVfdCBtYXhTdGFja1NpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
KworcHJpdmF0ZToKKyAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRpYWxpemVB
bmRSZXR1cm4gfTsKKyAgICAKKyAgICBzdGF0aWMgSlNWYWx1ZSBjaGVja2VkUmV0dXJuKEpTVmFs
dWUgcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQocmV0dXJuVmFsdWUpOworICAg
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU09iamVj
dCogY2hlY2tlZFJldHVybihKU09iamVjdCogcmV0dXJuVmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlQocmV0dXJuVmFsdWUpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQor
CisgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1
dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7CisKKyAg
ICBKU1ZhbHVlIGV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3VyZSYpOworCisgICAgVk0mIG1fdm07CiAj
aWYgRU5BQkxFKENfTE9PUCkKLSAgICAgICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CisgICAg
Q0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CiAjZW5kaWYKLSAgICAgICAgCisgICAgCiAjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiAhRU5BQkxFKExMSU5UX0VNQkVEREVEX09Q
Q09ERV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2Rl
LCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQu
CisgICAgc3RhdGljIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsg
Ly8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQuCiAjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9FTUJF
RERFRF9PUENPREVfSUQpIHx8IEFTU0VSVF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBV
VEVEX0dPVE9fT1BDT0RFUykKLSAgICB9OwotCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwotCi0gICAgaW5saW5lIENhbGxGcmFtZSogY2Fs
bGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBudW1Vc2Vk
U3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCi0gICAgewot
ICAgICAgICAvLyBXZSB3YW50IHRoZSBuZXcgZnJhbWUgdG8gYmUgYWxsb2NhdGVkIG9uIGEgc3Rh
Y2sgYWxpZ25lZCBvZmZzZXQgd2l0aCBhIHN0YWNrCi0gICAgICAgIC8vIGFsaWduZWQgc2l6ZS4g
QWxpZ24gdGhlIHNpemUgaGVyZS4KLSAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCi0gICAgICAgICAgICBzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLAotICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVyczsKLQotICAgICAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCi0gICAg
ICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKAotICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAg
ICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWU6
OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQp
OwotICAgIH0KLQotICAgIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbWF4QXJndW1lbnRzID0gMHgxMDAwMDsKLSAgICB1bnNpZ25l
ZCBzaXplRnJhbWVGb3JWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1l
bnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25lZCBudW1Vc2VkU3Rh
Y2tTbG90cyk7Ci0gICAgdm9pZCBsb2FkVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUq
IGZpcnN0RWxlbWVudERlc3QsIEpTVmFsdWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQz
Ml90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFy
Z3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Ci0g
ICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMy
X3QgbGVuZ3RoKTsKLSAgICB2b2lkIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVp
bnQzMl90IGxlbmd0aCk7Ci0gICAgdm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNl
dFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSog
ZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7Cit9OworCitK
U1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CisKK2lu
bGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKQoreworICAgIC8vIFdlIHdhbnQgdGhlIG5ldyBmcmFtZSB0byBiZSBhbGxvY2F0
ZWQgb24gYSBzdGFjayBhbGlnbmVkIG9mZnNldCB3aXRoIGEgc3RhY2sKKyAgICAvLyBhbGlnbmVk
IHNpemUuIEFsaWduIHRoZSBzaXplIGhlcmUuCisgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCksCisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpIC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnM7CisKKyAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCisgICAgdW5zaWduZWQg
cGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAg
ICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCisgICAgICAgIG51bVVzZWRTdGFja1Nsb3Rz
ICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVycyk7CisgICAgcmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7Cit9CisKK3Vuc2lnbmVkIHNpemVPZlZh
cmFyZ3MoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhBcmd1bWVudHMgPSAw
eDEwMDAwOwordW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSosIFZNJiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Ns
b3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7Cit1bnNpZ25lZCBzaXplRnJhbWVGb3JG
b3J3YXJkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgVk0mLCB1bnNpZ25l
ZCBudW1Vc2VkU3RhY2tTbG90cyk7Cit2b2lkIGxvYWRWYXJhcmdzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSogZmlyc3RFbGVtZW50RGVzdCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNl
dCwgdWludDMyX3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1
ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgp
Owordm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgdWludDMy
X3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMy
X3QgbGVuZ3RoKTsKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1aW50MzJfdCBsZW5ndGgpOwogICAgIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOWEx
YTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmLi44YjNhMjM4YTRkYWYxZmM2NzkxNDBkOGJiZWM3
NzA5Yjg1NjhiYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNjEsNyArMjYx
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBtX2xhYmVs
c1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCldID0gbGFiZWwoKTsKIAogICAgICAgICBpZiAoSklU
SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRp
bmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1
Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5n
IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdP
ZmZzZXQoKSk7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPm9wY29kZUlEKCk7CiAKQEAgLTQzOCw2ICs0MzgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfaW50ZXJuYWxfZmllbGQp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfaW50ZXJuYWxfZmllbGQpCiAKKyAgICAgICAgREVG
SU5FX09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9u
ZXh0KQorCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9y
c2hpZnQpCiAgICAgICAgIERFRklORV9PUChvcF91bnNpZ25lZCkKQEAgLTUyNSw3ICs1MjgsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgcmFyZUNh
c2VQcm9maWxlID0gJnJhcmVDYXNlUHJvZmlsZXMuYXQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dD
YXNlKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBk
YXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5k
ZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0
YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2Rl
SW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIGlm
IChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRl
Y29kZVNsb3dQYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7CkBAIC01ODks
NiArNTkyLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfcHV0X3RvX3Njb3BlKQogCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9pdGVyYXRvcl9vcGVuKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3Jf
bmV4dCkKKwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh1bnNpZ25lZCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
U0xPV19PUChkZWMpCkBAIC02MjYsOCArNjMyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiQXQgIiwgZmlyc3RUbywgIiBzbG93OiAiLCBpdGVyIC0gbV9zbG93Q2FzZXMu
YmVnaW4oKSwgIlxuIik7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0
ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUbyAhPSBpdGVyLT50bywgIk5vdCBlbm91
Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUbyA9PSAoaXRlciAtIDEpLT50bywgIlRvbyBtYW55
IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5v
ZmZzZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGlu
IHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoZmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBtYW55
IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1t
MzIoMSksIEFic29sdXRlQWRkcmVzcygmcmFyZUNhc2VQcm9maWxlLT5tX2NvdW50ZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxMTgyYWEwNzI5YTI3NDkxMDA0ZjQ1
ZTFlYTZhYzEuLjgzYWUxYTdiNjk4ZDY5MzNkYmI4YTAzNzE5MDQ5ZWMyMjU4MThmNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk3LDYgKzI5Nyw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogCisgICAg
ICAgIHZvaWQgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dU
b0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CisKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShKdW1w
KTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYpOwogICAgICAgICB2
b2lkIGFkZFNsb3dDYXNlKCk7CkBAIC02NzYsNiArNjc5LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAorICAgICAg
ICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVy
YXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dD
YXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYs
IGJvb2wgaXNVbnNpZ25lZCk7CiAKQEAgLTkxMSw2ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExh
YmVsPiBtX2xhYmVsczsKKyAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9j
aGVja3BvaW50TGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9n
ZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFs
czsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlk
c1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZTFlNTY1
ZGM1MjQ5ZjZhY2ZkYWEyNGJmZmI0NDcxZmZjYjIwYjg2Ni4uMDI2MTQ3NmU5NmExOGE5OTA1MThk
MDg3ZTQ5ZDEzNDQ1NzI2ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKEpTVkFMVUU2NCkKICNpbmNsdWRlICJKSVQuaCIK
IAorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCkBAIC00Miw4ICs0NCw4
IEBACiAjaW5jbHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdu
bWVudC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9w
Pgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7
Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCk7CisgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCksIHJlZ1QwKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CkBAIC02MSwyMCArNjMsMjEgQEAgc3RkOjplbmFibGVfaWZfdDwKICwgdm9p
ZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0lu
Zm8qKQogeworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnQgPSBtX2J5dGVjb2RlSW5kZXguY2hlY2tw
b2ludCgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgIGludCBhcmdDb3VudCA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBpbnQgcmVnaXN0
ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOworICAgIGludCBh
cmdDb3VudEluY2x1ZGluZ1RoaXMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRl
Y29kZSwgY2hlY2twb2ludCk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0
PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQp
KTsKIAogICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIo
cmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygw
KSksIHJlZ1QwKTsKICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsK
ICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHJlZ1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlua0lu
Zm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAg
ICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50KS5h
ZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7
CiAgICAgfQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVv
ZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rl
ciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0Nv
dW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyksIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIH0KIAogCkBAIC0yMDcsNyArMjEwLDcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25l
ZCBjYWxsTGlua0luZm9JbmQKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJ
RDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1
YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5tX2NhbGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2lu
dCgpKTsKIAogICAgIC8qIENhbGxlciBhbHdheXM6CiAgICAgICAgIC0gVXBkYXRlcyBjYWxsRnJh
bWVSZWdpc3RlciB0byBjYWxsZWUgY2FsbEZyYW1lLgpAQCAtMjM0LDkgKzIzNyw4IEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWdu
ZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJl
Z1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAot
ICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKSB7CisgICAgaWYgKGNvbXBpbGVDYWxs
RXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBEYXRhTGFiZWxQ
dHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBKdW1wIHNsb3dDYXNlID0gYnJh
bmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25D
aGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CkBAIC0zODAsNiArMzgyLDE4NCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVj
dD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBz
d2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1
cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3c7CisgICAgICAgIGNhc2UgV2lkZTE2OiBy
ZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTY7CisgICAgICAgIGNhc2UgV2lkZTMy
OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzI7CisgICAgICAgIGRlZmF1bHQ6
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOworICAg
IHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAm
bWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0
aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRp
b25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4o
aW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNo
ZWQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoaXRlcmF0b3IpIGlzIGluIHJlZ1QwCisKKyAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZ2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAg
CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKKworICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdl
bik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQpOwor
CisgICAgZmFzdENhc2UubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwg
aXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNo
ZWNrcG9pbnQoanVtcCgpKTsKKworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIFZp
cnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKKyAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworCisgICAg
SklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsK
KyAgICAKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRz
KCkpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAg
ICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzog
cmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93OworICAgICAgICBjYXNlIFdpZGUx
NjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2OworICAgICAgICBjYXNlIFdp
ZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyOworICAgICAgICBkZWZh
dWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsK
KworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCByZWdUMCk7Cisg
ICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHkocmVnVDApOworICAgIHNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRh
dGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsK
KyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljKSkpOworCisgICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKKyAgICBvcjgoVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSwg
QWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2Rlcykp
OworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCBy
ZXN1bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09iamVjdCkgaW4gcmVnVDAKKworICAgIEdQUlJlZyB2
YWx1ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAg
R1BSUmVnIGRvbmVHUFIgPSByZWdUMTsKKyAgICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRy
YXNoZWQgYnkgdGhlIGZpcnN0IGdldCBieSBpZCBiZWxvdy4KKyAgICBtb3ZlKHZhbHVlR1BSLCBp
dGVyUmVzdWx0R1BSKTsKKworICAgIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGl0ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3Mg
PSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAgICAgIHByZXNl
cnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHBy
ZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCkpLCBKU1Zh
bHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBw
ZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7Cisg
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kb25lLCBkb25lR1BSKTsK
KyAgICAgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAg
R1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1Qz
OworICAgICAgICBjb25zdCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IGZhbHNlOworICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHko
dm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwg
ZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1l
cy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV92YWx1ZSwgdmFsdWVHUFIpOworCisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsK
KyAgICB9CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3Ry
dWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1Rv
SG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0
aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRH
UFIgPSByZWdUMjsKKworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBK
dW1wTGlzdCBub3RPYmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RD
ZWxsKGl0ZXJSZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5v
dE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlk
ZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAg
CisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywg
cmVnVDEpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUs
IHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7
CisKKyAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0KKworICAgIHsgICAKKyAgICAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJl
ZyA9IGJ5dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVn
VDA7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9m
aWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9CisKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IDkwNjk2Y2JlYzEwZTM5
M2I5OTcwZjBlYjIwMTE4ZDIxOTc0YzM1MjUuLmQxNDBhYWM5YmUyZDU0MDNkMWJjMGQ5OTEyYWU5
ZTEwNWY4MGQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAKQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0
UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9y
X29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKKyAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApp
bmRleCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUxYmEyNzU2NTUzM2Y0Li4yN2E1N2Y0ZWUz
NjE2NGFjZThlMzlmMzY4Y2U3NjViZjE1ZGRmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFC
TEUoSklUKQorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkNvbW1v
blNsb3dQYXRoc0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTA1LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJ
TkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFy
Z2V0KQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewot
ICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KS5iaXRzKCk7CisgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihs
b2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlz
IG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwgZnJhbWUg
b24KQEAgLTE4Myw2ICsxODUsMjUgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aGFzQW55U2xv
d0Nhc2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5PiYgc2xvd0Nhc2VzLCBWZWN0b3IKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6Y2hlY2twb2ludFJlYWNoZWQoKQorewor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRo
YXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVj
b2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2tw
b2ludCgpICsgMSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fY2hlY2twb2ludExhYmVscy5hZGQo
bV9ieXRlY29kZUluZGV4LCBsYWJlbCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90
Rm9yQ2hlY2twb2ludChKdW1wIGp1bXApCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5
dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhv
dC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7
CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKworICAgIGF1dG8gaXRl
ciA9IG1fY2hlY2twb2ludExhYmVscy5maW5kKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgQVNTRVJU
KGl0ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxzLmVuZCgpKTsKKyAgICBqdW1wLmxpbmtUbyhpdGVy
LT52YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFkZFNsb3dDYXNl
KEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4KTsgLy8gVGhpcyBtZXRo
b2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24s
IHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldC4KQEAgLTMxOSw3ICszNDAsNyBAQCBpbmxp
bmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoTWV0YWRhdGEmIG1ldGFkYXRhKQog
ewogICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YS5tX3Byb2ZpbGUpOworICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUodmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBtX2J5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKaW5kZXggN2FlMTUwY2M2NjEwNzYyYmFjYzhiZTQyMjA3M2FhZDY0YWIz
MTE5MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMzZGZiYmYwZTMzNjBkMzZmNTVmYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMzQsNiArMTM0LDE2
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZy
b21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgQVNTRVJUKHZtLnRhcmdldE1hY2hpbmVQ
Q0ZvclRocm93KTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRlcmF0
b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKK30K
KwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZWZiNWI1
YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1Li45ZmNjNDFkZWM0NTgyYzk2NTI5MjM2
NTVkYThmMzAyNjk1ZGY3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25M
b29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRp
b24oVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dT
dGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IoQ29kZUJsb2NrKikgV1RGX0lOVEVSTkFM
OwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFs
T2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKaW5kZXggOGRlYTdmMjc4ZTc2NjJlNTAzMTRjZWI5YjA4MzM5Zjg3
YmZkYTQ5Ny4uNjg2ODllODMzODMzYjE1NmRmYzgwOWQwMTJhMDc5NjcxYzRmNzc5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
IgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKQEAgLTgyLDYgKzgzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBj
b2RlQmxvY2stPnZtKCk7IFwKICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsgXAorICAgIGRhdGFMb2dMbklmKExMSU5UX1RSQUNJTkcgJiYgT3B0aW9uczo6dHJh
Y2VMTEludFNsb3dQYXRoKCksICJDYWxsaW5nIHNsb3cgcGF0aCAiLCBXVEZfUFJFVFRZX0ZVTkNU
SU9OKTsgXAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAK
ICNpZm5kZWYgTkRFQlVHCkBAIC02OTMsNyArNjk1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiB9CiAKIAotc3RhdGljIHZvaWQgc2V0dXBHZXRC
eUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBPcEdldEJ5SWQ6Ok1l
dGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlw
ZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0
YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3NDMsMzkgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRC
eUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
b2QKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCi0gICAgICAgICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNl
KCkpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9m
ZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICB2bS5oZWFwLndy
aXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0
IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
R2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNl
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQp
OwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7Ci0gICAgCisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUND
RVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3Qu
aXNDYWNoZWFibGUoKQogICAgICAgICAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgewog
ICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBzd2l0
Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
bWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpVbnNldDoKLSAgICAgICAgICAgICAg
ICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1
Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnVuc2V0
TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgR2V0QnlJZE1vZGU6OlByb3RvTG9hZDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7Cisg
ICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0
cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IDA7CkBAIC03OTksMzUgKzc5NiwxMDMg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgaWYg
KHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAg
ICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAg
ICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91
dENhY2hlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0
Q2FjaGUoKTsKIAogICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZy
b20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5o
aXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5oaXRDb3Vu
dEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVy
ZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9m
ZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVm
YXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAg
bWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
ICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgeworICAgICAg
ICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYm
IHNsb3QuaXNWYWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSAh
PSBiYXNlVmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICghKC0tbWV0YWRh
dGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAgICAgICAgICAgICAgIHNldHVwR2V0QnlJ
ZFByb3RvdHlwZUNhY2hlKGdsb2JhbE9iamVjdCwgdm0sIGNvZGVCbG9jaywgcGMsIG1ldGFkYXRh
LCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJ
TlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYmIGlkZW50ID09
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7CiAgICAgICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNl
cnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAg
ICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRh
LmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAgICAgICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQogCi0gICAgTExJTlRfUFJPRklMRV9WQUxVRShy
ZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKworICAgIEpT
VmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBM
TElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQoreworICAgIExMSU5UX0JF
R0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpOwor
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBK
U1ZhbHVlIGl0ZXJhdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1faXRlcmF0
b3IpOworICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
Ynl0ZWNvZGUubV9uZXh0KTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0
QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpOwor
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAv
LyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgc2luY2Ug
aXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29pbmcgdG8g
YmUgZmlsbGVkIGxhdGVyLgorICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSBnZXRPcGVyYW5k
KGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgUmVnaXN0ZXImIGRvbmVSZWdpc3Rl
ciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworCisgICAgaWYgKCFp
dGVyYXRvclJldHVybi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4g
b2JqZWN0LiJfcykpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlE
KHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5
TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgZG9uZVJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSk7CitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5l
eHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
OworICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1
ZSB0bXAgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0
J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVy
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIEpTVmFsdWUg
aXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKKworICAgIEpTVmFsdWUg
cmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1
ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgdmFsdWVS
ZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fdmFs
dWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExM
SU5UX0VORCgpOworfQorCisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE1NjMsNyArMTYyOCw3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIENvZGVT
cGVjaWFsaXphdGlvbktpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IDApCiB7CiAgICAgLy8gVGhp
cyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCkBAIC0xNTcxLDE2ICsx
NjM2LDE2IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgLy8gLSBJZiBwb3NzaWJsZSwg
bGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KICAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9m
IG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KICAg
ICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV9jYWxsZWUpOworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBjYWxsZWVGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIAot
ICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBieXRlY29kZS5tX2FyZ3Y7
CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAtIHN0YWNrT2Zmc2V0SW5S
ZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpOwogICAgIAotICAgIGNh
bGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhieXRlY29kZS5tX2FyZ2Mp
OworICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAgICAg
Y2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJhbWUo
Y2FsbEZyYW1lKTsKICAgICAKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwgY2Fs
bGVlQXNWYWx1ZSwgJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBD
YWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmY2FsbExpbmtJbmZvRm9yKG1l
dGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NhbGwpCkBAIC0xNjA0LDYgKzE2NjksMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NvbnN0cnVjdCkKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
Z2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcENvbnN0cnVjdD4oKSwg
Q29kZUZvckNvbnN0cnVjdCkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaXRlcmF0b3Jfb3Blbl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG9w
ZW5fY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWND
YWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCksIENvZGVG
b3JDYWxsLCBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCkpOworfQorCitMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCk7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dM
bigiQ2FsbGluZyBzbG93IG5leHRfY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVy
YXRvck5leHQ+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpKTsK
K30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFy
Z3MpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE5OTAsNiArMjA3Nyw0NCBAQCBzdGF0aWMg
dm9pZCBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0dsb2JhbE9iamVjdAogICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2Rz
dCkgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9p
bnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgT3BJdGVyYXRvck9wZW4mIGJ5dGVjb2RlKQoreworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBpZiAo
IWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBKU1ZhbHVlIG5leHQgPSBpdGVy
YXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihieXRlY29kZS5tX25leHQpID0gbmV4dDsKK30KKworc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0
b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJhdG9yTmV4dCYgYnl0ZWNvZGUsIENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlJiBzaWRlU3RhdGUpCit7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IHNp
ZGVTdGF0ZS5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKKworICAgIGF1dG8mIHZhbHVlUmVn
aXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgYXV0
byBpdGVyYXRvclJlc3VsdE9iamVjdCA9IHNpZGVTdGF0ZS50bXBzW09wSXRlcmF0b3JOZXh0Ojpu
ZXh0UmVzdWx0XTsKKyAgICBhdXRvIG5leHQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNv
ZGUubV9uZXh0KS5qc1ZhbHVlKCk7ICAgIAorCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKG5leHQsICJXZSBzaG91bGQgbm90IE9TUiBleGl0IHRvIGEgY2hlY2twb2ludCBmb3IgZmFz
dCBjYXNlcy4iKTsKKworICAgIGF1dG8mIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX2RvbmUpOworICAgIGlmIChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVy
YXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAgZG9uZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1
bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorCisgICAgc2Nv
cGUucmVsZWFzZSgpOworICAgIGlmIChkb25lUmVnaXN0ZXIuanNWYWx1ZSgpLnRvQm9vbGVhbihn
bG9iYWxPYmplY3QpKQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0ganNVbmRlZmluZWQoKTsKKyAg
ICBlbHNlCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVjdC5nZXQo
Z2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSk7Cit9CisKIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKIHsKICAgICBSRUxFQVNFX0FTU0VSVCgh
Y29kZUJsb2NrLT52bSgpLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7CkBAIC0yMDY2LDYgKzIx
OTEsMTUgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX2NoZWNrcG9p
bnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAgICAgaGFuZGxlVmFyYXJnc0No
ZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BUYWlsQ2FsbFZh
cmFyZ3M+KCksICpzaWRlU3RhdGUuZ2V0KCkpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50
KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAg
ICAgICBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCAqc2lkZVN0YXRlLmdldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTAzLDYgKzIyMzcsMTIgQEAgZXh0
ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNDZWxsKiBjZWxsKQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCitl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7Citl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBkYXRhTG9nTG4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7Cit9CisKIGV4dGVybiAiQyIg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50X2NyYXNoKCkKIHsKICAgICBDUkFTSCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjZGFmYTRmOTNjM2E5ZjA5ODA1NzFjODE3NjdjMWEuLmY5
YTM0ZGFiMzZkOWZhNTI3NTZhMTk4YjJkNzRmNzUyYzUzOGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEwMzIs
NyArMTAzMiw3IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBz
aXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdpZGUzMiwg
bWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAotbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykK
K21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwg
Y2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENh
bGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVsc2UKQEAgLTEwNDUsMTEgKzEwNDUsMTEgQEAgbWFj
cm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIGNhbGxlZSwgY2FsbFAKICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4
ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKICAgICAgICAgIyBjcmFzaGVzLgogICAg
ICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICAgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVn
aXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAogICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChv
cGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3JvIHByZXBhcmVGb3JSZWd1bGFy
Q2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCkBAIC0xMTE3LDcg
KzExMTcsMTEgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAy
LCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCiBlbmQKIAot
bWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK21hY3JvIHNsb3dQYXRoRm9yQ29tbW9uQ2Fs
bChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJl
cGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkK
K2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbENhbGxTbG93UGF0aCgKICAgICAgICAgc2xvd1Bh
dGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIwIGFuZCByMQpAQCAtMTEyNiw3ICsxMTMwLDcgQEAg
bWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXIKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIs
IHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRo
UHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1
bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBj
YWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVv
cGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCiAgICAg
ICAgIGVuZCkKIGVuZAogCkBAIC0yMDE2LDcgKzIwMjAsNyBAQCBtYWNybyBkb0NhbGxWYXJhcmdz
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGZyYW1lU2xvd1BhdGgs
IHNsbwogICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiAgICAg
ICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1Bh
dGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gs
IHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVuZAogCiAKQEAgLTIwNzksNyArMjA4Myw3IEBAIGVu
ZCkKICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KIAogX2xs
aW50X29wX2NhbGxfZXZhbDoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JD
b21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAogICAgICAgICBuYXJyb3cs
CiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDg4LDcgKzIwOTIsNyBAQCBfbGxpbnRfb3BfY2Fs
bF9ldmFsOgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9jYWxs
X2V2YWxfd2lkZTE2OgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1v
bkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCiAgICAgICAgIHdpZGUxNiwKICAg
ICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwOTcsNyArMjEwMSw3IEBAIF9sbGludF9vcF9jYWxsX2V2
YWxfd2lkZTE2OgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9j
YWxsX2V2YWxfd2lkZTMyOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNv
bW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCiAgICAgICAgIHdpZGUzMiwK
ICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIxMDcsNyArMjExMSw3IEBAIF9sbGludF9vcF9jYWxs
X2V2YWxfd2lkZTMyOgogCiAKIGNvbW1vbk9wKGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50LCBt
YWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9w
Q2FsbEV2YWwsIG1hY3JvICgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BDYWxsRXZh
bCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8gKCkKICAgICAgICAgZGlzcGF0Y2hPcChzaXplLCBv
cF9jYWxsX2V2YWwpCiAgICAgZW5kKQogZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA4MTg5MWMy
MmU2MTgzYzgwNDJhYmRmY2U4ZDQzOTExYWY0MWY2NTRhLi43NGM0ODBkZjIxMjE3MTY1NTBjNWZk
NGYwODQ0YWIxMTA4ZmRjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjcsNyArNjcsNyBAQCBt
YWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNw
YXRjaCwgZm4pCiAgICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAogICAgICAgICBtZXRhZGF0YSh0
NSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQ1LCB0MSwgdDApCisg
ICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MCkK
ICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCkBA
IC03NywxNiArNzcsMTcgQEAgZW5kCiAKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVj
b2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1tYWNybyBkaXNw
YXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFjcm8gZGlzcGF0
Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgotICAg
IGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MykKKyAgICBnZXQoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQzKQogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAg
ICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQogICAgIGRpc3BhdGNoKCkKKwogZW5kCiAK
IG1hY3JvIGNDYWxsMihmdW5jdGlvbikKQEAgLTYzMiw5ICs2MzMsOSBAQCBtYWNybyB3cml0ZUJh
cnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVlRmllbGROYW1l
KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
bWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQogICAgIHN0b3JlaSB0YWcsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFtt
ZXRhZGF0YV0KLSAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X3Byb2ZpbGUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KKyAgICBzdG9yZWkg
cGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0
cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCiBlbmQKIAogCkBAIC0xMzc4LDcgKzEzNzksNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0
YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDNdLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3Qs
IHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxl
LCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93
OgpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQs
IE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBiaW5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2Fk
cCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hl
ZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0
MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQw
LCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgpAQCAtMTQxMyw3ICsxNDE0LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNd
LCB0MAogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6
dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJ
ZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgSW50MzJUYWcsIHQwKQorICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKICAg
ICByZXR1cm4oSW50MzJUYWcsIHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CkBAIC0xNDIxLDcgKzE0
MjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0
YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BH
ZXRCeUlkU2xvdykKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9w
R2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgVW5kZWZpbmVkVGFn
LCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5l
ZFRhZywgMCkKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVs
dDoKQEAgLTE0MzAsNyArMTQzMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lk
LCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9h
ZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hl
ZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEs
IC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMs
IHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQorICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4o
dDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE0NDAsNyArMTQ0MSw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhp
dFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAog
ZW5kKQpAQCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAg
ICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNl
dFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1bHRQYXlsb2FkLCBQYXlsb2Fk
T2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQogICAgICAgICBk
aXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1MjcsNyArMTUyOCw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAgICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gzCiAgICAg
ICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCiAgICAgICAg
IHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQotICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKKyAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3Jh
dGNoMikKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTcyLDcgKzE1NzMsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9wR2V0QnlWYWxOb3RFbXB0eToKICAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIsIHQxKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCiAgICAg
ZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU4NSw3ICsx
NTg2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBn
ZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBt
ZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQyLCByMSwgcjAp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKICAg
ICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xOTU3LDEwICsxOTU4LDEwIEBAIG1hY3JvIGNv
bW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2Fs
bCwgcHJvbG9ndWUpCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRb
dDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCiAgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRy
VGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRh
ZykKIAogICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQor
ICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBt
X3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGVu
ZCkKIGVuZAogCkBAIC0yMjg4LDcgKzIyODksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Ywog
ICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1l
dGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2Nv
cGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBA
IC0yMjk3LDcgKzIyOTgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3Bl
LCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2Fk
cCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwgdDIK
ICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9t
U2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAg
ICBlbmQKIApAQCAtMjMwNSw3ICsyMzA2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
ZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAg
ICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0Mwog
ICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRb
dDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFi
bGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQog
ICAgIGVuZAogCkBAIC0yNTk0LDYgKzI1OTUsMTUgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0
X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMK
ICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogZW5kKQogCitsbGludE9wKG9wX2l0ZXJhdG9yX29w
ZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZp
bmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKKyAgICBicmVhawor
ZW5kKQorCitsbGludE9wKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRl
cmF0b3JfbmV4dCwgc2l6ZSkKKyAgICBicmVhaworZW5kKQogCiBsbGludE9wV2l0aFByb2ZpbGUo
b3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwgdDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IGFlMmUzNzczZmZkY2M0MDY3NGM3YWFjMGMxZDRmZTZjZDBmYjc4NTkuLjg2MTM2ZTg1N2M5Zjc4
MjJiMjQ0NmM2MjZiZmRjN2EzZGZiYjJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02OCwyNiArNjgsMjYg
QEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwg
ZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwg
dDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCB0MSwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJv
ZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMs
IFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3Jv
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEg
dmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0c1ttZXRh
ZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRh
ZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFkYXRhXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGlu
ZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1
c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2FkUEMoKQogICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Rz
dCwgdDEpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0
MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29k
ZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMCkK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjAp
CiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTEzNDAsNyArMTM0MCw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAg
IGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlJZERpcmVjdCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJl
Y3QsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZERpcmVj
dFNsb3c6CkBAIC0xMzQ4LDUzICsxMzQ4LDU5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwg
T3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
KyMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCittYWNybyBwZXJmb3JtR2V0QnlJ
REhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUs
IHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0YSh0MiwgdDEp
Ci0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9kZVt0Ml0s
IHQxCi0gICAgZ2V0KG1fYmFzZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
c2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKIAogLm9wR2V0QnlJZERl
ZmF1bHQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9w
R2V0QnlJZFByb3RvTG9hZAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQx
Ci0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cK
LSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisg
ICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwg
dDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5
SWRQcm90b0xvYWQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9M
b2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MwotICAgIGJpbmVxIHQzLCB0MSwgLm9w
R2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRh
dGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQotICAgIGxvYWRwIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0s
IHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFt
ZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCisgICAgYmluZXEgdDMsIHQxLCBz
bG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRwICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUu
Y2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJu
KHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBH
ZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQw
Ci0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCi0gICAgYnRpeiB0MCwgSXNB
cnJheSwgLm9wR2V0QnlJZFNsb3cKLSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgLm9w
R2V0QnlJZFNsb3cKKyAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
bW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0
NSkKKyAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKKyAgICBidGl6IHQwLCBJbmRleGlu
Z1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKLSAgICBiaWx0
IHQwLCAwLCAub3BHZXRCeUlkU2xvdworICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAogICAgIG9y
cSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAg
ICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1l
dGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAu
b3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBWYWx1ZVVuZGVm
aW5lZCkKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFO
YW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xv
d0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
dDIsIFZhbHVlVW5kZWZpbmVkKQogICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAorZW5kCisK
K2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQwKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNs
b3cpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwg
bV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKwogLm9w
R2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lk
KQogICAgIGRpc3BhdGNoKCkKQEAgLTE0MDIsNyArMTQwOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBv
aW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1f
cHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTQ5Nyw3ICsxNTAz
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChy
ZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3Rv
cmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIHQ1LCByZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCByZXN1bHQpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU1
OCw3ICsxNTY0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogLm9wR2V0QnlWYWxEb25l
OgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
dDIpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAt
MTU3MSw3ICsxNTc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2lu
dDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6
ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1
LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCiAg
ICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xOTQ4LDYgKzE5NTQsMzAgQEAgbWFjcm8gYXJyYXlQ
cm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAuZG9uZToKIGVuZAogCittYWNybyBj
YWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykKKyAgICBtZXRhZGF0YSh0NSwgdDApCisgICAgZ2V0Q2FsbGVlKHQwKQorCisg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxl
ZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCB0MCwgdDMpCisgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdworCisg
ICAgZ2V0QXJndW1lbnRTdGFydCh0MykKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgbmVncCB0Mwor
ICAgIGFkZHAgY2ZyLCB0MworICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQorICAgIGdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKQorICAgIHN0b3JlUEMoKQorICAgIHN0b3JlaSB0Miwg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIG1vdmUg
dDMsIHNwCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRh
ZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVd
LCBKU0VudHJ5UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFs
UmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKwogbWFjcm8g
Y29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVD
YWxsLCBwcm9sb2d1ZSkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTE5NTYsMjQgKzE5ODYsMTkgQEAgbWFjcm8gY29t
bW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxs
LCBwcm9sb2d1ZSkKICAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAotICAgICAgICBnZXQobV9jYWxsZWUs
IHQwKQotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKLSAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCi0gICAgICAgIGJxbmVxIHQzLCB0
MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwg
dDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMKLSAgICAgICAgbmVncCB0MwotICAgICAgICBhZGRw
IGNmciwgdDMKLSAgICAgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCi0gICAgICAgIGdldHUoc2l6
ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQyKQotICAgICAgICBzdG9yZVBDKCkKLSAgICAgICAg
c3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNd
Ci0gICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0
MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFn
KQotCi0gICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisg
ICAgICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgICAgICBnZXQobV9jYWxsZWUsIHQw
KQorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBnZXRBcmd1bWVudFN0YXJ0KGRzdCkKKyAg
ICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIGRzdCkKKyAgICAgICAg
ZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRDb3VudChkc3QpCisgICAgICAgICAgICBn
ZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCBkc3QpCisgICAgICAgIGVuZAorCisgICAg
ICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgbV9wcm9m
aWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2Fs
bGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50KQogICAgIGVuZCkKIGVuZAog
CkBAIC0yMjc2LDcgKzIzMDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Nj
b3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3Jv
IGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQx
LCB0MCwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQyKQog
ICAgICAgICByZXR1cm4odDIpCiAgICAgZW5kCiAKQEAgLTIyODQsMTQgKzIzMDksMTQgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFk
YXRhOjptX29wZXJhbmRbdDVdLCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0
ZHpDaGVja0lmTmVjZXNzYXJ5KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2Nv
cGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2Zp
bGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0
Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9v
cGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFi
bGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
dDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwg
dDUsIHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAgLTI1NTEsNyArMjU3Niw2
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV9jb250cm9sX2Zsb3csIE9wUHJvZmls
ZUNvbnRyb2xGbG93LCBtYWNybyAoc2l6ZSwKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLQogbGxp
bnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAr
IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MApAQCAt
MjU2Nyw2ICsyNTkxLDE0NyBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgs
IE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQogCiAKK2xs
aW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKGEy
LCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2
KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNikK
KyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9p
dGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJy
b3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkK
KworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNp
bmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRp
b25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3BhdGNoKCkKKwor
Lml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVja3BvaW50KCkK
KyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxl
ZShkc3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAgZW5kCisKKyAg
ICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUo
c2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAg
IG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAx
LCBkc3QKKyAgICBlbmQKKworCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9vcGVuLCBfbGxp
bnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCwgT3BJdGVyYXRvck9wZW4sIG1faXRlcmF0
b3JQcm9maWxlLCBtX2l0ZXJhdG9yLCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9H
ZXRCeUlkQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRp
bmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisuZ2V0QnlJZFN0
YXJ0OgorICAgIG1hY3JvIHN0b3JlTmV4dEFuZERpc3BhdGNoKHZhbHVlKQorICAgICAgICBtb3Zl
IHZhbHVlLCB0MgorICAgICAgICBnZXQobV9uZXh0LCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBb
Y2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgbG9hZFZhcmlh
YmxlKGdldCwgbV9pdGVyYXRvciwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRl
cmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJ
dGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVu
R2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gp
CisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKKyAgICBkaXNwYXRjaCgpCisK
K2VuZCkKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9y
TmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAg
ICBsb2FkVmFyaWFibGUoZ2V0LCBtX25leHQsIHQwKQorICAgIGJ0cW56IHQwLCB0MCwgLml0ZXJh
dG9yTmV4dEdlbmVyaWMKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJv
dygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cp
CisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChf
aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdp
ZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRl
MzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMy
LCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQg
ZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4K
KyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9y
TmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck5leHRHZW5lcmljOgorICAg
IG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0
CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9uZXh0
LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFy
dChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck5leHQsIG1fc3RhY2tPZmZzZXQs
IGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50
KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgICMgVXNlIG1fdmFsdWUg
c2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisg
ICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9uZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9y
X25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQsIG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUs
IHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldERvbmVDaGVja3BvaW50LCBtZXRh
ZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1l
bnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXREb25lU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVE
b25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFsdWUpCisgICAgICAgICMgdXNlIHQwIGJlY2F1c2Ug
cGVyZm9ybUdldEJ5SURIZWxwZXIgdXN1YWxseSBwdXRzIHRoZSBkb25lVmFsdWUgdGhlcmUgYW5k
IG9mZmxpbmVhc20gd2lsbCBlbGlkZSB0aGUgc2VsZiBtb3ZlLgorICAgICAgICBtb3ZlIGRvbmVW
YWx1ZSwgdDAKKyAgICAgICAgZ2V0KG1fZG9uZSwgdDEpCisgICAgICAgIHN0b3JlcSB0MCwgW2Nm
ciwgdDEsIDhdCisgICAgICAgIGptcCAuZ2V0VmFsdWVTdGFydAorICAgIGVuZAorCisKKyAgICBs
b2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ss
IC5nZXREb25lU2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBt
X2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0
YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQorICAg
IGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
KQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDApCisKKyAgICAjIHN0b3JlRG9uZUFu
ZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUgZG9uZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0
OgorICAgICMgQnJhbmNoIHRvIHNsb3cgaWYgbm90IG1pc2MgcHJpbWl0aXZlLgorICAgIGJ0cW56
IHQwLCB+MHhmLCAuZ2V0VmFsdWVTbG93CisgICAgYnRpeiB0MCwgMHgxLCAubm90RG9uZQorICAg
IGRpc3BhdGNoKCkKKworLm5vdERvbmU6CisgICAgbWFjcm8gc3RvcmVWYWx1ZUFuZERpc3BhdGNo
KHYpCisgICAgICAgIG1vdmUgdiwgdDIKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgICAg
ICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudCh0MCwgMHhiYWRkYjAxZSkKKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAg
IyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1h
eSBoYXZlIGNsb2JiZXJlZCB0My4KKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykK
KyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBh
IGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KKyAg
ICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0
YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZh
bHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0Y2goKQorZW5k
KQorCisKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50
ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX2Jhc2UsIHQxKQogICAgIGdldHUoc2l6ZSwgT3BHZXRJbnRlcm5hbEZp
ZWxkLCBtX2luZGV4LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Ry
YW5zZm9ybS5yYgppbmRleCA4ZDc2NzExNmMwNTRlNWVhNjY0ZWY0MDYyYzU2ZjI2MDVlMGQ4YjQ1
Li41ODlhZTBlMGYzZWQzNGI2NjFlODU2MmJjYTI5ODAyZWMxMGU1YjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCkBAIC02MjksNyArNjI5LDcg
QEAgZW5kCiAKIGNsYXNzIE5vZGUKICAgICBkZWYgdmFsaWRhdGUKLSAgICAgICAgcmFpc2UgIlVu
cmVzb2x2ZWQgI3tkdW1wfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICByYWlzZSAi
VW5yZXNvbHZlZCAnI3tkdW1wfScgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICBlbmQKICAg
ICAKICAgICBkZWYgdmFsaWRhdGVDaGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjhkZTk2NTU4MmY3ZDkxMjcxMzM3
ZDU0MzE5MDNlODMxOGMyNmY0Ny4uOTNlN2U3MzYwMWJmNzNlN2RhZDc1NGVhYmMxNTYzZDhhMGU4
NzEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNs
dWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE1Myw4
ICsxNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFJFVFVSTl9QUk9GSUxFRCh2YWx1
ZV9fKSBcCiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHZhbHVlX18sIFBST0ZJTEVfVkFMVUUo
cmV0dXJuVmFsdWVfXykpCiAKLSNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8geyBcCi0g
ICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9wcm9maWxlLm1fYnVja2V0c1sw
XSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1
ZV9fKSBcCisgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUpCisKKyNkZWZp
bmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAorICAgICAgICBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZv
aWQgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpAQCAtOTY1LDYgKzk2OSwxMjggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmpl
Y3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKSk7CiB9CiAKK3RlbXBsYXRlPE9wY29kZVNpemUg
d2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0
YWRhdGFQdHIpCit7CisgICAgLy8gRG9uJ3Qgc2V0IFBDOyB3ZSBjYW4ndCB0aHJvdyBhbmQgaXQn
cyByZWxhdGl2ZWx5IHNsb3cuCisgICAgQkVHSU5fTk9fU0VUX1BDKCk7CisKKyAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yT3Blbiwgd2lkdGg+KCk7CisgICAg
YXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yT3Blbjo6TWV0YWRh
dGEqPihtZXRhZGF0YVB0cik7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IEdFVF9DKGJ5dGVjb2Rl
Lm1faXRlcmFibGUpLmpzVmFsdWUoKTsKKyAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhYmxlLCBt
X2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdFVF9DKGJ5
dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBhdXRvJiBpdGVyYXRvciA9
IEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKworICAgIGF1dG8gcHJlcGFyZUZvckZhc3RBcnJh
eUl0ZXJhdGlvbiA9IFsmXSB7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBUaGlzIGlzIGNvcnJl
Y3QgYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgdmFsaWQu
CisgICAgICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICBpZiAoIXN5bWJv
bEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2Vu
ZXJpYzsgCisKKyAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uKCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFdlIHNob3VsZCBi
ZSBnb29kIHRvIGdvLgorICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5N
b2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9u
TW9kZTo6RmFzdEFycmF5OworICAgICAgICBHRVQoYnl0ZWNvZGUubV9uZXh0KSA9IEpTVmFsdWUo
KTsKKyAgICAgICAgYXV0byogaXRlcmF0ZWRPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihpdGVy
YWJsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9y
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBpdGVy
YXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgfQorICAgICAgICBQ
Uk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2ZpbGUpOwor
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgIH07CisKKyAgICBp
ZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7CisgICAgICAgIGlmIChwcmVwYXJl
Rm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KQorICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
SXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRvIHRo
ZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0
aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVu
TW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
cGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30K
KworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25h
cnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBt
ZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxOYXJyb3c+
KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1
cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRh
UHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwordGVtcGxhdGU8T3Bj
b2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4
dF90cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2
b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck5leHQsIHdpZHRoPigpOworICAgIGF1dG8mIG1l
dGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck5leHQ6Ok1ldGFkYXRhKj4obWV0
YWRhdGFQdHIpOworCisgICAgQVNTRVJUKCFHRVQoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCkp
OworICAgIEpTT2JqZWN0KiBpdGVyYXRvciA9IGpzQ2FzdDxKU09iamVjdCo+KEdFVChieXRlY29k
ZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCkpOzsKKyAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5
dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKKyAgICBpZiAoYXV0byBhcnJh
eUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3Ip
KSB7CisgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0s
IGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2Jz
ZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKworICAgICAgICAgICAgbWV0
YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlv
bk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAgICAg
ICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQoSlNBcnJh
eUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOworICAgICAgICAgICAgaW50NjRfdCBpbmRleCA9IGlu
ZGV4U2xvdC5nZXQoKS5hc0FueUludCgpOworICAgICAgICAgICAgQVNTRVJUKDAgPD0gaW5kZXgg
JiYgaW5kZXggPD0gbWF4U2FmZUludGVnZXIoKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWU7CisgICAgICAgICAgICBib29sIGRvbmUgPSBpbmRleCA9PSAtMSB8fCBpbmRleCA+PSBhcnJh
eS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV9kb25lKSA9IGpzQm9vbGVh
bihkb25lKTsKKyAgICAgICAgICAgIGlmICghZG9uZSkgeworICAgICAgICAgICAgICAgIC8vIE5v
IG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0
aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpz
TnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFycmF5
LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgICAgICAgICAgICAgIFBST0ZJ
TEVfVkFMVUVfSU4odmFsdWUsIG1fdmFsdWVQcm9maWxlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUgYmVjYXVzZSB3
ZSBrbm93IHRoaXMgaXMgYSBwcmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5kZXhTbG90LnNl
dFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoLTEpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFsdWU7CisgICAgICAgICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2Rl
OjpGYXN0QXJyYXkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2Vu
ZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0g
bWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpH
ZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1
cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRh
UHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFz
dDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1
cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sK
KyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMs
IG1ldGFkYXRhUHRyKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwp
CiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4ZGI1ZjU1OGZhNzg1MDRjYWIwOTY0
M2M2MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRjZDhiMmVlMGEzOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0Niw2
ICsyNDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdF9vcl9u
dWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRl
cmF0b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0woaXRlcmF0b3Jf
bmV4dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92
YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpAQCAtMjgzLDYgKzI4NSwxOCBA
QCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwogCit0ZW1wbGF0ZTxPcGNvZGVT
aXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9v
cGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0
YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9y
X29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywg
dm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRI
IGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
U0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCit0ZW1wbGF0ZTxPcGNvZGVTaXpl
IHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0
X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRh
dGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0
ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1c2luZyBTbG93UGF0aEZ1bmN0aW9u
ID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShDYWxsRnJhbWUqLCBjb25zdCBJbnN0
cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDM1MzU5MDkwNDkxY2UwYWZkY2Q4YmJiNGY4NzVi
YjM4MThjMjJkM2UuLjY4NzRlYzc5MDM3NThjZjlkZjQ0MzlhNjIzOTA2MWNmMjcwNTg5M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMzMwLDYg
KzMzMCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVy
YXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCit7CisgICAgc3dpdGNo
IChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgorICAgIGNhc2Ug
VHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6
OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJy
YXlLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6S2V5czsKKyAg
ICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVz
SW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6RW50cmllczsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KK30KKworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJkN2Q4YWMyMDU0MmU4YThkN2Ux
OGM0MmJhZTkuLjcxYmEzYWFkMzU5Njk1NmFmYzJkMGFiZmM2ZmQxZGUxN2FmMWVkNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xODcsNiArMTg3LDgg
QEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBEYXRhVmlld1NldEZsb2F0NjQsCiB9
OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJ
bnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThhOTY4N2Vj
NjA5Li40ZmQwYTExNjUyNWNkYzUzMmE1M2QwYjhiNWFjYjUzMzg3YThkYmI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjgsNiAr
NjgsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2Jq
ZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKTsKKyAg
ICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCisgICAg
eworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBq
c051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsKKyAgICB9CiAgICAgc3RhdGlj
IEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUq
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFlZC4uZDMw
MmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAg
ICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBib29sIGlzQ2FsbGFibGUoVk0mKSBj
b25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlwZSYsIENhbGxEYXRhJikgY29u
c3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0
cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4
IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFkODBhZjcuLjYyZjlkMjRmMTVkMDcy
NDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODI3LDYgKzgyNywxMyBAQCBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29uc3QKICAgICByZXR1cm4gYXND
ZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxh
YmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1bnVzZWRUeXBlOworICAgIENhbGxE
YXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFibGUodm0sIHVudXNlZFR5cGUsIHVu
dXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSwg
Q2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpIGNvbnN0CiB7CiAgICAgaWYg
KCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggZThi
MjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzExYi4uYjI1MDM1NjljODQyMjU2MDEx
NDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8ganNDYXN0KEpTVmFsdWUgZnJvbSkK
IC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmluZSBGT1JfRUFDSF9KU19EWU5BTUlD
X0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAgIG1hY3JvKEpTSW1tdXRhYmxlQnV0
dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlwZSwgSlNUeXBlOjpKU0ltbXV0
YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0FycmF5SXRlcmF0b3IsIEpTVHlwZTo6
SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlKSBcCiAgICAg
bWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwgSlNU
eXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJzdE9i
amVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwgSlNU
eXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBcCiAgICAgbWFj
cm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0aW9u
VHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJuYWxGdW5j
dGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhKU0Fy
cmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBcCisgICAg
bWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpTVHlw
ZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXIsIEpTVHlw
ZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSkgXAogICAgIG1hY3Jv
KEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlUeXBlLCBMYXN0VHlwZWRBcnJheVR5
cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSwgSlNUeXBl
OjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYzZTNjOGZmNjIwOGY2MjVmNTcw
MzY4NzNmMC4uMTE3M2FhMDg4ZGNiNzZjMDRmZTRiNWZjMGIxYTQ5MzkzMzkxZTc4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
NTU5LDEwICs1NTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAg
ICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CiAgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5p
dC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNUb1N0
cmluZywgTm9JbnRyaW5zaWMpKTsKICAgICAgICAgfSk7Ci0gICAgbV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb24uaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5j
dGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJp
bmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7Ci0gICAg
ICAgIH0pOworICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnNldCh2bSwgdGhpcywgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3Ry
aW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwogCiAg
ICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAgLTE3NDksNyArMTc0Niw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24udmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24udmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNp
dCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52
aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24udmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZp
c2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3NGIyMTc2NDcxYTlmMDUxMy4u
MGFjZGZhZWQ5ZTlhZGZjMjM4YWI3YzIzNDJlMzU0OTMwYWE2OTIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTksNyArMjk5LDcg
QEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4g
bV9wYXJzZUZsb2F0RnVuY3Rpb247CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247Ci0gICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rp
b247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2V2YWxG
dW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwpAQCAtNjA4LDcgKzYwOCw3
IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1RvU3RyaW5n
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdl
dCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQorICAg
IEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0
b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVu
Y3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CkBA
IC02MTksNiArNjE5LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIG51bWJlclByb3RvVG9T
dHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0
aW9uLmdldEluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNG
dW5jdGlvbiogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9u
KiBhcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBh
cnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKTsgfQogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1N5
bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1ib2xS
ZXBsYWNlLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2JhbEdldHRl
cigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRl
eCA5OTY5NGQwMTI3YmFlMWNlYTVjZjYzZmE5Y2RkOTc3MDAwY2I3YWE0Li5mYjQwZmM5NTA3NmFj
NTBhMGEzOTRmNThjNTNlYjFjYmRiMDZmYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTExOSw2ICsxMTksOCBAQCBjb25zdGV4cHIgYm9vbCBl
bmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNo
YWRvd0NoaWNrZW5Mb2dTaXplLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2ln
bmVkLCBzaGFkb3dDaGlja2VuTWF4VGFpbERlbGV0ZWRGcmFtZXNTaXplLCAxMjgsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIFwKKyAgICB2KEJvb2wsIHVzZUl0ZXJhdGlvbkludHJpbnNpY3MsIHRy
dWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKICAgICB2KEJvb2wsIHVzZU9TTG9nLCBmYWxz
ZSwgTm9ybWFsLCAiTG9nIGRhdGFMb2coKXMgdG8gb3NfbG9nIGluc3RlYWQgb2Ygc3RkZXJyIikg
XAogICAgIC8qIGR1bXBEaXNhc3NlbWJseSBpbXBsaWVzIGR1bXBERkdEaXNhc3NlbWJseS4gKi8g
XAogICAgIHYoQm9vbCwgZHVtcERpc2Fzc2VtYmx5LCBmYWxzZSwgTm9ybWFsLCAiZHVtcHMgZGlz
YXNzZW1ibHkgb2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24gY29tcGlsYXRpb24iKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA3NjRhZDA2
NWFjMDExZTMzYzMyMzhjZDlkYTk1MzljMTU4MzkyM2U1Li45YzJjZTdhZmFlNmUzOGU3YTYwODAy
NmY1MTc3MTEwZTNjODU1NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKQEAgLTEyNjgsNiArMTI2OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogdm9p
ZCBTdHJ1Y3R1cmU6OmR1bXBCcmllZihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBDU3RyaW5nJiBz
dHJpbmcpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIlIiwgc3RyaW5nLCAiOiIsIGNsYXNzSW5m
bygpLT5jbGFzc05hbWUpOworICAgIGlmIChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVN
YXNrKQorICAgICAgICBvdXQucHJpbnQoIiwiLCBJbmRleGluZ1R5cGVEdW1wKGluZGV4aW5nVHlw
ZSgpKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wQ29udGV4dEhlYWRlcihQcmludFN0cmVh
bSYgb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVy
bG9hZHMuaCBiL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKaW5k
ZXggMzU3YmEyZmEyZjc5MjlhNmE5OThhOWE0ZWYxNGQyYmU1NzU0NjM3MS4uNTZhYmM0YjUzZWM5
ZmFiNjA3NWJmNmQyZWJiYmVkMWYzM2NkZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xh
c3NPcGVyYXRvck92ZXJsb2Fkcy5oCkBAIC01OSwzICs1OSw5IEBACiAKICNkZWZpbmUgT1ZFUkxP
QURfUkVMQVRJT05BTF9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFR1JBTFMoZW51
bU5hbWUpIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dIRU4o
ZW51bU5hbWUsIHN0ZDo6aXNfaW50ZWdyYWxfdjxUPikKIAorI2RlZmluZSBPVkVSTE9BRF9CSVRX
SVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBlbmFibGVFeHByZXNz
aW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFt
ZSwgfCwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9FTlVN
X0NMQVNTX1dIRU4oZW51bU5hbWUsICYsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVSTE9B
RF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBeLCBlbmFibGVFeHByZXNz
aW9uKSBcCisKKyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xB
U1NfV0lUSF9JTlRFUkdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19G
T1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkYzk4
OWM1NWI0MzRlZmY2ZmQzZWY0ZGEzYTUyM2M3ZmQ1NzNhYjIuLjlmN2RjMDdiNWUwYTI3ZmEwYWZi
YjVjYTcxY2Q5ZDk1MWYzYWIwMjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdl
IGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0
ZS1hcnJheS1lbnRyaWVzLmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3MvY3Vz
dG9tLWl0ZXJhdG9ycy5qczoKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKGl0ZXIucmV0dXJu
KToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KToKKyAgICAgICAgKGl0ZXJh
dG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNl
QnJlYWtUZXN0UmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZh
bHVlcy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJh
dG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qczogQWRkZWQuCisgICAgICAgIChmaW5kKToK
KyAgICAgICAgKGkubGV0LnYub2YuZmluZCk6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1j
b250YWluaW5nLWZvci1vZi1vbi1zZXQuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6CisgICAg
ICAgIChzZXQgYWRkKToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0
dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCBk
b25lKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRl
cmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6
CisgICAgICAgICogc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanM6IEFkZGVk
LgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IHZhbHVlKToKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9s
Lml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgICog
c3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qczogQWRkZWQuCisg
ICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5
bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAg
ICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4t
Zm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToK
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCBkb25lKToKKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgor
ICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1m
b3Itb2YtaGVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3Mv
dGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCB2
YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorCiAyMDIwLTA0
LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgYWxs
IGxvdyBleGVjdXRhYmxlIG1lbW9yeSB3YXNtIHRlc3RzIG9uIGFybTY0CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcwpp
bmRleCA1NWVjYzBiZmNmOTE5Y2FjYWU3ZmQxNWRkYjQwYjE0ZmRjYTk0ZWRhLi4yMDEyYjkxMjg1
MGY1ODExNjdmYmQzMTA1MDU5Yjc2ZDc2NjNiNmQ4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCisrKyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMKQEAgLTMsMTAg
KzMsMTIgQEAgZnVuY3Rpb24gZm9vKCkgewogICAgIHZhciBhcnJheSA9IFtdOwogICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjUwMDA7IGkrKykKICAgICAgICAgYXJyYXkucHVzaChpKTsKLSAgICAK
KwogICAgIHZhciByZXN1bHQgPSAwOwotICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBhcnJh
eS5lbnRyaWVzKCkpCisgICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGFycmF5LmVudHJpZXMo
KSkgeworICAgICAgICBwcmludChrZXkgKyAiICIgKyAkdm0uaW5kZXhpbmdNb2RlKGFycmF5KSk7
CiAgICAgICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1ZSArIGFycmF5W2tleV07CisgICAgfQogICAg
IAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jdXN0
b20taXRlcmF0b3JzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcwppbmRl
eCBmZDY0MTNmZTNiNWU5MDNhZmZlMzgwM2ZkMDA0YzBjYjFmMWM2NGYzLi5kM2QxYmQ3ZTg1OGU4
NzRmYmQxMTNkODJmOTIxMWVhNGJkNWVmN2I1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9j
dXN0b20taXRlcmF0b3JzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMu
anMKQEAgLTIyLDcgKzIyLDcgQEAgZm9yICh2YXIgdmFsdWUgb2YgaXRlcikgewogICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwogfQogaWYgKHJldHVybkNhbGxlZCkK
LSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJy
b3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC01Myw3ICs1Myw3IEBAIHRyeSB7CiAg
ICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWlu
YXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246
ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhy
b3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAg
dHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9y
OiBsb29raW5nIHVwIG5leHQuIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhy
b3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAg
dGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJy
ZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHRyeSB7CiAgICAg
fQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1
cCByZXR1cm4uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsg
ZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIAogCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB0cnkgewog
ICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IG5leHQg
aXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiAr
IGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJF
cnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdh
cyBjYWxsZWQiKTsKIAogCiAKQEAgLTE4Myw3ICsxODMsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9
LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVl
OwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiAKQEAgLTE5Myw3
ICsxOTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUp
ICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0
dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAg
LTIxMCw3ICsyMTAsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rp
b24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJy
b3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4g
d2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiB0cnkgewpAQCAtMjE4LDggKzIxOCw4IEBAIHRyeSB7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0gY2F0Y2ggKGUpIHsKLSAgICBpZiAoU3RyaW5nKGUp
ICE9PSAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJl
dHVybiB3YXMgY2FsbGVkIikKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVk
KQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTI1NSwxMCAr
MjU1LDEwIEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KG5vdEl0ZXJhdG9y
UmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJp
bmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAi
ICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmIChyZXR1cm5DYWxsZWQp
Ci0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiB9CiAKIGZ1bmN0aW9uIGl0ZXJhdG9y
SW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CkBAIC0yODIsNyAr
MjgyLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4obm90SXRl
cmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYg
KFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0gICAgICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhy
b3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJv
cjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTMxMyw3ICszMTMsNyBAQCBmdW5jdGlvbiBp
dGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybihub3RJdGVyYXRvclJlc3VsdCkgewogICAg
ICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlw
ZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAg
ICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAg
ICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAoIXJldHVybkNhbGxlZCkKICAgICAgICAgdGhy
b3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1v
Zi1hcnJheS1taXhlZC12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5OGE2MDQzM2RmMmRjMTc1M2E5
ZDdiODhiOTZiZDMyNDAwNmY4MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zv
ci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanMKQEAgLTAsMCArMSwyMyBAQAorZnVuY3Rpb24gdGVz
dChhcnJheSkgeworICAgIGxldCBzdW0gPSAwOworICAgIGZvciAobGV0IHYgb2YgYXJyYXkpIHsK
KyAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAibnVtYmVyIikKKyAgICAgICAgICAgIHN1bSArPSB2
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gc3VtOworICAgIH0KK30KK25vSW5s
aW5lKHRlc3QpOworCitsZXQgYXJyYXkgPSBbMSwyLDMsNCwic3RyaW5nIl07Citmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgaWYgKHRlc3QoYXJyYXkpICE9PSAxMCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CisKKworYXJyYXkgPSBbMSwyLDMsNCx7fV0KK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBpZiAodGVzdChhcnJheSkgIT09IDEwKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanMgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzOGI3ZWU4
MTQyNGEyZDJmNTM4Y2U3YjIwNTlkOGQ2ZTQ1OGU0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzCkBAIC0wLDAg
KzEsMTggQEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBwKQoreworICAgIGZvciAobGV0IFthcnJh
eV0gb2Ygbm9kZXMpIHsKKyAgICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2ID09PSBwKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAgICB9Cit9Citu
b0lubGluZShmaW5kKTsKKworbGV0IG1hcCA9IG5ldyBNYXAoKTsKK25vSW5saW5lKG1hcFtTeW1i
b2wuaXRlcmF0b3JdKCkubmV4dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKQorICAg
IG1hcC5zZXQoWzEsMiw0LDUsNV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsr
aSkgeworICAgIGZvciAobGV0IHYgb2YgZmluZChtYXAsIGkgJSAyKSkgeyB9Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLXNldC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMmYzMjczOTBkNzM3NWEyMjAyYWU1OWExMTI0NjU2OThjYjZlYWI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9m
LW9uLXNldC5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiAqZmluZChub2RlcywgcCkKK3sK
KyAgICBmb3IgKGxldCBhcnJheSBvZiBub2RlcykgeworICAgICAgICBpZiAoIWFycmF5LmZpbmQo
KHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHlpZWxkIGFy
cmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOworCitsZXQgc2V0ID0gbmV3IFNldCgpOwor
bm9JbmxpbmUoc2V0W1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KTsKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMWUyOyArK2kpCisgICAgc2V0LmFkZChbMSwyLDQsNSw1XSwge30pOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChsZXQgdiBvZiBmaW5kKHNldCwgaSAlIDIp
KSB7CisgICAgICAgIGlmIChpICUgMiAhPT0gMSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigibm8gcmVzdWx0IHNob3VsZCBoYXZlIGJlZW4gcHJvZHVjZWQgaGVyZSIpOworICAgICAgICBp
ZiAoISh2IGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJy
ZXN1bHQgd2FzIG5vdCBhbiBhcnJheSIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL29z
ci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjRjNDljOTNiMjlmY2Iw
ZjcxMGM2YzgyZDFmZDg4MDAxYTIyZTI1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7
CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICBnZXQgZG9uZSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzRmluYWxUaWVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZU9TUigpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJl
dHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7IH0s
CisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQorICAg
IH0gY2F0Y2ggeworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1v
Zi12YWx1ZS1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUt
Z2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MDk2ZWUwM2UxNTI1NzNhZWRjNjRkMDQzOWZiMmJmMjJj
NjQxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2Yt
dmFsdWUtZ2V0dGVyLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1
OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxl
ID0geworICAgICAgICBkb25lOiAwLAorICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICBkb25lOiB0aGlzLmRvbmUrKywKKyAgICAgICAgICAgICAg
ICBnZXQgdmFsdWUoKSB7IGlmIChpc0ZpbmFsVGllcigpKSBGb3JjZU9TUigpOyAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1
cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAor
ICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9
IGNhdGNoIHsKKyAgICB9CisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4
dC1yZXR1cm5zLW5vbi1vYmplY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4
dC1yZXR1cm5zLW5vbi1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJiZDMyYWRkN2NjM2JhMzQzMjU0
ZGE3MTA4ZTUxOWZmNzViMzI1MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Ro
cm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qcwpAQCAtMCwwICsxLDE2IEBACitm
b3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZh
bHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0dXJuIDE7IH0s
CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAg
cmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAgdHJ5IHsKKyAg
ICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGlmIChlICE9ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisgICAgaWYgKHJldHVybkNh
bGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rl
c3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjhhMTQyYzhhNmM1NGY0NzZlYzAzOWExNGU5ZTJkM2U3Yjk2ZGYxYQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9y
LW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI0IEBACitmb3IgKGxldCBpID0gMDsgaSA8PSAxZTU7
ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkOworICAgIGxldCBp
dGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIGdl
dCBkb25lKCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAg
ICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAg
ICB9CisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFibGUpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlm
IChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQorCisgICAgaWYgKHJl
dHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qcyBiL0pTVGVz
dHMvc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNiMTk0ZmQ3Y2E1YWM1OWFkNjk2MTk0MmY4NjI3YjYwYTVhYTMwMTgKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qcwpA
QCAtMCwwICsxLDI0IEBACitmb3IgKGxldCBpID0gMDsgaSA8PSAxZTU7ICsraSkgeworICAgIGxl
dCBlcnJvcjsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAg
ICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7Cisg
ICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwK
KyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH07CisgICAgbm9JbmxpbmUoaXRlcmFibGUubmV4dCk7CisgICAgdHJ5IHsK
KyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVyb3Jy
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAg
ICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJv
bS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93
LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA4Nzg4
MzU4ZTRlZDMwNjEyYWNjNmYyZWYzYTMwZDhkNTY2Njc5ZAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMK
QEAgLTAsMCArMSwyNyBAQAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBs
ZXQgZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJs
ZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIGRvbmU6IGZh
bHNlLAorICAgICAgICBnZXQgdmFsdWUoKSB7CisgICAgICAgICAgICB0aHJvdyBlcnJvciA9IG5l
dyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0
dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgIHJldHVybkNhbGxl
ZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoYSBv
ZiBpdGVyYWJsZSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT09
IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuQ2Fs
bGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396608</attachid>
            <date>2020-04-15 20:08:16 -0700</date>
            <delta_ts>2020-04-15 20:13:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415200815.patch</filename>
            <type>text/plain</type>
            <size>247064</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi4yNmYxZWRhZTg3MGE1NDZi
ZGRiNGRiZWY4MWE5NGIzNmQ1ZWU0ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NjggQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5n
L1BoYW50b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikg
Um9sbGluZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dp
dGNoaW5nIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwgZWFjaCB2
YXJpYWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpvcjgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTgpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAg
ICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwOgorICAgICAgICAoSlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZv
cik6CisgICAgICAgIChKU0M6OmFycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVl
UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAg
ICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZv
cik6CisgICAgICAgIChKU0M6OmNhbGxlZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVy
c0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRy
eUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToK
KyAgICAgICAgKiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QmFzZUluc3RydWN0aW9uOjp3aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5z
dHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dXBlclNhbXBsZXIuaC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xl
YXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRh
aW5zKToKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6
U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2VuZXJpY0VudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNF
bXB0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVu
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JHZW5lcmljQ2xvc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlTWluTWF4KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2lt
cGxpZmljYXRpb25QaGFzZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Zm9yQWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZU
bXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJ
bmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpT
VmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9y
L01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpj
bG9vcFN0YWNrKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNoZWNrZWRSZXR1cm4pOgor
ICAgICAgICAoSlNDOjpjYWxsZWVGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQ
dXRDYWxsUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6Y2hlY2twb2ludFJlYWNoZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgor
ICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5l
cmljQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVJdGVyYXRvck9wZW5DaGVja3Bv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQpOgor
ICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfZHVtcF92YWx1ZSk6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
OgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFz
dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KToKKyAgICAg
ICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjpp
dGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3QpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJv
dyk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KToKKyAgICAg
ICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgor
ICAgICAgICAoSlNDOjppbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyk6CisgICAgICAgICogcnVu
dGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJsZSBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpvcjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTgpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2Zp
bGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgor
ICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9p
bnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmFycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChK
U0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVG
b3IpOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0
aW5hdGlvbkZvcik6CisgICAgICAgIChKU0M6OmNhbGxlZUZvcik6CisgICAgICAgIChKU0M6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJ
blJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JF
YWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6
CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWRlMTYgY29uc3QpOgorICAgICAgICAoSlND
OjpCYXNlSW5zdHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAg
ICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAg
ICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJ
dGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JH
ZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpi
aW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFj
dFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZU
bXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdElu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3ZWFrSlNDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tF
bnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAg
ICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6amV0dGlzb25CbG9jayk6CisgICAgICAg
IChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtp
bGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yQWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAg
ICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
bnVtYmVyT2ZUbXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6YXRJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
Om9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2Nh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToK
KyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6TGF6eUpTVmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICog
Z2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9u
ZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnVwZGF0ZVRvcENh
bGxGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y2hlY2twb2ludFJlYWNoZWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlk
UHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50R2V0QnlJ
RCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVJ
dGVyYXRvck9wZW5DaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJh
dG9yTmV4dENoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX2NoZWNr
cG9pbnRfb3NyX2V4aXQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfZHVtcF92YWx1ZSk6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRl
cmF0b3Jfb3Blbl90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3RfbmFycm93KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYp
OgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAg
IChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0X25hcnJvdyk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zh
c3Rfd2lkZTE2KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGlt
ZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjppbnRlcmF0aW9uS2luZEZvckludHJpbnNp
Yyk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
aXNDYWxsYWJsZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wQnJpZWYgY29u
c3QpOgorCiAyMDIwLTA0LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogYWRkIGEgU3RlcCBuZXh0IHRoYXQgc3Rl
cHMgYnkgZXhwcmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCmluZGV4IDUyYjQ2ZWNjOWUy
ODljYWQ4NWFhMTdlMmQwOTdhYmJlNTM2NWIzOWYuLjVhOWEwYjQ0NDExMDcyM2Q3MzlhMzI1MDI4
NWVlOWE2ODIzNWZiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKQEAgLTQwLDggKzQwLDgg
QEAgU0VDVE9SREVSX0ZMQUdTX1Byb2R1Y3Rpb25bc2RrPW1hY29zeCpdID0gLVdsLC1vcmRlcl9m
aWxlLEphdmFTY3JpcHRDb3JlLm9yZGVyOwogCiBHQ0NfUFJFRklYX0hFQURFUiA9IEphdmFTY3Jp
cHRDb3JlUHJlZml4Lmg7CiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKLU9USEVS
X0NGTEFHUyA9ICQoaW5oZXJpdGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOwot
T1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLS1zeXN0ZW0taGVhZGVyLXByZWZp
eD11bmljb2RlLzsKK09USEVSX0NGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZm5vLXNscC12ZWN0b3Jp
emUgLS1zeXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKK09USEVSX0NQTFVTUExVU0ZMQUdT
ID0gJChpbmhlcml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4
PXVuaWNvZGUvOwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUiICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CiBJ
TkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJTlNUQUxMX1BBVEggPSAkKEpBVkFTQ1JJUFRD
T1JFX0ZSQU1FV09SS1NfRElSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI1
MDE5ZmQ5MDU3MThiNWEzMmNmMjZhZTM3MjRiOGUxODFjYzI4ZS4uZGY0MjdkZjVhMDI3NTkzM2I0
OTc3NGRjN2UxMDI2NzViNzBkMDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTExMDMsNiArMTEwMyw4IEBACiAJCTUzQzRGNjZCMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUds
b2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNDNEY2NkEyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggKi87IH07
CiAJCTUzQzZGRUVGMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M2RkVFRTFFOEFERkE5
MDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oICovOyB9OwogCQk1M0NBNzMwQTFFQTUzM0Q4
MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzQ0E3MzA4MUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5o
ICovOyB9OworCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0QzNTQ5
NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggKi87IH07CisJCTUzRDQx
RUM5MjNDMDA4MUEwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQxRUM4MjNDMDA4MTAwMEFF
OTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNX
YXNtQWRkcmVzc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0Q0NDREQjFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmgg
Ki87IH07CiAJCTUzRTFGOEY4MjE1NDcxNUEwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFMUY4RjcyMTU0
NzE0OTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNFNzc3RTQxRTkyRTI2NTAwN0NCRUM0IC8qIFdh
c21Nb2R1bGVJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFNzc3RTIxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oICovOyB9OwpAQCAtMzgxNCw2ICszODE2LDkgQEAKIAkJNTNDNkZFRjAxRThBRkUwQzAw
QjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2FzbU9wY29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzQ0E3MzA3MUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQkJRUGxhbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQ0E3MzA4MUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJR
UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQkJRUGxhbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyog
Qnl0ZWNvZGVQcm9maWxlRm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5
dGVjb2RlUHJvZmlsZUZvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0QzNTQ5
ODI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVVc2VEZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlvbk1vZGVN
ZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Q0NDREQjFEQUYwOEFC
MDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzV2FzbUFkZHJlc3NWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1Zh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NEREMURBRjA5QTAwMEI5
Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUFkZHJl
c3NWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRTFGOEY3MjE1NDcx
NDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1ZhbHVlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODIyMCw4ICs4MjI1LDEwIEBACiAJCQkJQzJGQ0FFMEUxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgKi8sCiAJCQkJQzJGQ0FFMEYxN0E5QzI0RTAwMzRDNzM1
IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oICovLAogCQkJCTBGNjY2RUJFMTgzNTY2Rjkw
MEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCisJCQkJNTNE
MzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oICovLAogCQkJCUUz
RDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLywKIAkJCQlF
M0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovLAorCQkJCTUz
RDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8sCiAJCQkJMEY4
ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJRTM1QkEy
QzAyNDFBMEU4QzAwQjY3MDg2IC8qIEJ5VmFsSW5mby5jcHAgKi8sCiAJCQkJMEY4MDIzRTkxNjEz
ODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLApAQCAtODMxNSw2ICs4MzIyLDcgQEAKIAkJ
CQkxNENDM0JBMTIxMzhBMjM4MDAyRDU4QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovLAog
CQkJCTE0Q0MzQkEyMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5oICovLAog
CQkJCTUzRjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGUuaCAqLywKKwkJCQk1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9u
TW9kZU1ldGFkYXRhLmggKi8sCiAJCQkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBU
YWJsZS5jcHAgKi8sCiAJCQkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5o
ICovLAogCQkJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi8sCkBAIC05MTI3LDYgKzkxMzUsNyBAQAogCQkJCTBGMkREODBCMUFCM0Q4NTgw
MEJCQjhFOCAvKiBCeXRlY29kZUtpbGxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMzE3
QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY2NkVDMDE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNEMzU0OTkyNDBEODhCRDAwODk1MERE
IC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOERBRUIxRDM4
RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
MTRGMjE5MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGODg1RTExMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05NzExLDYgKzk3MjAsNyBAQAogCQkJCTBGRDJGRDk1MjBCNTJCRTIwMEYwOTQ0MSAv
KiBJc29TdWJzcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUUwRkU3MjA4NkFE
NDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QjlG
NkQ1NjFENTkxMkZBMDAxQzczOUYgLyogSXRlcmF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU0RDU1QjgxQUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0
ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBEQzNFMEExQjJERjJDNzAw
MDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5k
ZXggYzg0N2ZjN2RmNTg2YWFkNmY4NTA3MDgzM2NiZjViYTVlYmVmMGVjOC4uMTUzOTdlOGI3ZjQ4
YTg0ZmIyN2YxMWQyZjEzNzFlMGUyYTMwMWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTY4Niw2ICs2ODYs
MjAgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mp
OwogICAgIH0KIAorICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dpY2FsSW1tID0g
TG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIoaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAobG9n
aWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5vcnI8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGxv
Z2ljYWxJbW0pOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
bV9wdHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0
ciwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICAgICAgb3IzMihpbW0sIG1lbW9yeVRlbXBSZWdpc3RlciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgb3I2NChS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgb3I2NChkZXN0
LCBzcmMsIGRlc3QpOwpAQCAtMTYwMyw3ICsxNjE3LDcgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIAotICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQorICAg
IHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3Jj
LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIDApOwpAQCAtMTYxOCw3ICsxNjMyLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVn
aXN0ZXIpOwogICAgIH0KIAotICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQq
IGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCog
YWRkcmVzcykKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGlu
dDhfdD4oaW1tLm1fdmFsdWUpKTsKICAgICAgICAgaWYgKCFpbW04Lm1fdmFsdWUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaAppbmRleCA4YzY5NzliYjliMmZkZWIwNGNhMDI2ZTc2NmQyMDhiNzNhMDYzZjJlLi4yYTFk
ZGVkZWUzNmRiZTNjZGU1NzJmNDg2MDVhNDY0YzgwYjZlNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC00
OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YnJhbmNoQWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMzI7CiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTY7CisgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246Om9yODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6c3ViMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQ4OwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7CkBAIC05Niw2ICs5NywxMiBA
QCBwdWJsaWM6CiAgICAgICAgIG9yMTYoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7
CiAgICAgfQogCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgb3I4KGltbSwgQWRkcmVzcyhzY3JhdGNo
UmVnaXN0ZXIoKSkpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwg
QWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCBmYjM0OGI5MmRkMjYyM2MwNjUx
ZWZkMmU0YThjMGU4ZGUyMzdiMjAxLi45NDI2NTdjNjJmMDc0OWNhMDVjNGVlZTRkNjdiOTVmZTY0
NTVkOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCkBAIC0yMDcsMTAgKzIwNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dE9mQm91bmRz
KCkgeyBtX291dE9mQm91bmRzID0gdHJ1ZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91
bmRzKCkgeyByZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVT
dHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgfQorICAgIHZvaWQgb2JzZXJ2ZVN0
cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJ
RCA9IHN0cnVjdHVyZUlEOyB9CisgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSog
c3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQog
CiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQ29kZUJsb2NrKik7CiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0
cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgppbmRleCAxZjU2Njk0Y2U3MDBmZGViZTFmZGNiZDA0NGYyYTg3ZDA4OGY3ZWEyLi5lMjg4
YTk5NzIwMDhiYzk1Mjk3ZjU4YWYwOTU5ZDNmY2Q5NDBkZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTM0LDYgKzM0LDcgQEAgdHlw
ZXMgWwogICAgIDpHZXRCeVZhbEhpc3RvcnksCiAgICAgOkdldFB1dEluZm8sCiAgICAgOkluZGV4
aW5nVHlwZSwKKyAgICA6SXRlcmF0aW9uTW9kZU1ldGFkYXRhLAogICAgIDpKU0NlbGwsCiAgICAg
OkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LAogICAgIDpKU0dsb2JhbE9iamVjdCwKQEAgLTEx
NjIsNiArMTE2Myw1OSBAQCBvcCA6Z2V0X3Jlc3RfbGVuZ3RoLAogICAgICAgICBudW1QYXJhbWV0
ZXJzVG9Ta2lwOiB1bnNpZ25lZCwKICAgICB9CiAKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIGl0
ZXJhdG9yID0gc3ltYm9sSXRlcmF0b3IoaXRlcmFibGUpOyBuZXh0ID0gaXRlcmF0b3IubmV4dDsK
KyMgRm9yIGJ1aWx0aW4gaXRlcmF0b3JzLCBob3dldmVyLCB0aGlzIGhhcyBzcGVjaWFsIGJlaGF2
aW9yIHdoZXJlIG5leHQgYmVjb21lcyB0aGUgZW1wdHkgdmFsdWUsIHdoaWNoCisjIGluZGljYXRl
cyB0aGF0IHdlIGFyZSBpbiBhIGtub3duIGl0ZXJhdGlvbiBtb2RlIHRvIG9wX2l0ZXJhdG9yX25l
eHQuCitvcCA6aXRlcmF0b3Jfb3BlbiwKKyAgICBhcmdzOiB7CisgICAgICAgIGl0ZXJhdG9yOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
c3ltYm9sSXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAg
bWV0YWRhdGE6IHsKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRh
ZGF0YSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGNh
bGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
CisgICAgICAgIG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgfSwKKyAgICBjaGVja3Bv
aW50czogeworICAgICAgICBzeW1ib2xDYWxsOiBuaWwsCisgICAgICAgIGdldE5leHQ6IG5pbCwK
KyAgICB9CisKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIG5leHRSZXN1bHQgPSBuZXh0LkBjYWxs
KGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUgPSBkb25lID8gdW5kZWZp
bmVkIDogbmV4dFJlc3VsdC52YWx1ZTsKK29wIDppdGVyYXRvcl9uZXh0LAorICAgIGFyZ3M6IHsK
KyAgICAgICAgZG9uZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBpdGVyYWJsZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7Cisg
ICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAg
IGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExM
SW50Q2FsbExpbmtJbmZvLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBkb25lTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAg
ICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZU1vZGVNZXRhZGF0YTog
R2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgfSwKKyAgICB0bXBzOiB7CisgICAgICAgIG5leHRSZXN1bHQ6IEpTVmFsdWUsCisgICAg
fSwKKyAgICBjaGVja3BvaW50czogeworICAgICAgICBjb21wdXRlTmV4dDogbmlsLAorICAgICAg
ICBnZXREb25lOiBuaWwsCisgICAgICAgIGdldFZhbHVlOiBuaWwsCisgICAgfQorCiBvcCA6eWll
bGQsCiAgICAgYXJnczogewogICAgICAgICBnZW5lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKQEAg
LTEyOTAsNiArMTM0NCw4IEBAIG9wIDpvcF9nZXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uCiBvcCA6
b3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24KIG9wIDpvcF9wdXRfYnlfaWRfcmV0dXJuX2xv
Y2F0aW9uCiBvcCA6b3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRv
cl9vcGVuX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0
aW9uCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZQogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9n
dWVfbm9fdGxzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggYzZlZmUwZDhmZjZjNzk4OTZh
ZmQwMGUyMGNjNDI3NzlkM2E0YjBjNy4uZDU4N2VlMDNmMjZkOGRmYjk0ZDA4ZDQ0MjA0MDhjYWM1
MGEzOGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTIzMSw2ICsyMzEsMTMgQEAgQml0
bWFwPG1heE51bUNoZWNrcG9pbnRUbXBzPiB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoY29uc3Qg
Q29kZUJsb2NrJiBjb2RlQmxvY2sKICAgICAgICAgICAgIHJlc3VsdC5zZXQoT3BDYWxsVmFyYXJn
czo6YXJnQ291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICByZXN1bHQuc2V0KE9w
SXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBh
YWNhY2YzYmZlZDE1YzZjMTdjYWE2Y2IxZTk1ODEyOGQ1ZDJmMDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKQEAg
LTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgorI2luY2x1ZGUg
IkJ5dGVjb2RlU3RydWN0cy5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJv
ZmlsZSogYXJyYXlQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5z
aWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5k
ZXgpOworICAgIHJldHVybiAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc0FycmF5
UHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2lu
dEluZGV4KQoreworICAgIHJldHVybiBhcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVj
a3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgor
QXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEs
IHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBBU1NFUlQoaGFzQXJyYXlQcm9maWxl
Rm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKKyAgICByZXR1cm4gKmFycmF5UHJvZmls
ZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwo
Qnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sK
KyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5
dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAg
c3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6
c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKKyAgICAgICAg
Y2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRQcm9m
aWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNv
ZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludElu
ZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4g
Jm1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5l
eHQ6OmdldERvbmU6IHJldHVybiAmbWV0YWRhdGEubV9kb25lUHJvZmlsZTsKKyAgICAgICAgY2Fz
ZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2Zp
bGU7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgCisgICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9wcm9maWxlOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNWYWx1ZVBy
b2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJ
bmRleCkKK3sKKyAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2tw
b2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1Zh
bHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1
bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKGhhc1ZhbHVlUHJvZmlsZUZv
cihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CisgICAgcmV0dXJuICp2YWx1ZVByb2ZpbGVG
b3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCeXRlY29kZT4KK09wZXJhbmQgZGVzdGluYXRpb25Gb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVj
b2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgsIEpJVFR5cGUgdHlwZSA9IEpJVFR5cGU6Ok5v
bmUpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3Rl
eHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBz
d2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpz
eW1ib2xDYWxsOiByZXR1cm4gYnl0ZWNvZGUubV9pdGVyYXRvcjsKKyAgICAgICAgY2FzZSBPcEl0
ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9
PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7
CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiB7CisgICAgICAgICAg
ICBpZiAodHlwZSA9PSBKSVRUeXBlOjpERkdKSVQgfHwgdHlwZSA9PSBKSVRUeXBlOjpERkdKSVQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4
dFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV92YWx1ZTsgLy8gV2UgcmV1
c2UgdmFsdWUgYXMgYSB0ZW1wIGJlY2F1c2UgaXRzIGVpdGhlciBub3QgdXNlZCBpbiBzdWJzZXF1
ZW50IGJ5dGVjb2RlcyBvciB3cml0dGVuIGFzIHRoZSB0ZW1wIG9iamVjdCAuCisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2RlLm1f
ZG9uZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBieXRl
Y29kZS5tX3ZhbHVlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAgICAg
IHJldHVybiBieXRlY29kZS5tX2RzdDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2NhdGlv
bnMKKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVl
Rm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQor
eworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAo
Qnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJU
KGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAg
IHJldHVybiBieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25zdGV4
cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFT
U0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAg
ICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJu
IGJ5dGVjb2RlLm1fY2FsbGVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3Vu
c2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRl
Y29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVj
a3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9w
X2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0
ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBp
ZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7Cisg
ICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVO
ZXh0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRl
Y29kZS5tX2FyZ2M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlmZl90
IHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwg
dW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50
SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJh
dG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9y
T3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJ
blJlZ2lzdGVycyAtIGJ5dGVjb2RlLm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNlIGlm
IGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAg
ICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5l
eHQpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBi
eXRlY29kZS5tX2l0ZXJhdG9yLm9mZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV9hcmd2OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRh
PgorTExJbnRDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShj
aGVja3BvaW50SW5kZXgpOworICAgIHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2OTdm
NzBlMGQ1NjI2YzEzLi5hNWE1MDdlZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAKQEAgLTI1OSw2ICsyNTksOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleElt
cGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAgVVNF
UyhPcFlpZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9yT3Bl
biwgc3ltYm9sSXRlcmF0b3IsIGl0ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQsIGl0
ZXJhdG9yLCBuZXh0LCBpdGVyYWJsZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3By
ZWFkOgogICAgICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJy
YXlXaXRoU3ByZWFkPigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwgdGhy
b3duVmFsdWUpCiAKKyAgICBERUZTKE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkKKyAg
ICBERUZTKE9wSXRlcmF0b3JOZXh0LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50ZXI6
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAgICAg
IGZ1bmN0b3IodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIyNTkx
OTQ3NzY4NTU3ZWE4N2E2NTdmMjNhNjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2OWU5
NjM0MTc1MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcApAQCAtNDAsMTggKzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxsTGlu
a0luZm86OkNhbGxUeXBlIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2Rl
SUQpCiB7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2Fs
bF9ldmFsKQorICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92
YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAg
ICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6Cisg
ICAgY2FzZSBvcF9jYWxsX2V2YWw6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNh
c2Ugb3BfaXRlcmF0b3JfbmV4dDoKICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9wY29k
ZUlEID09IG9wX2NhbGxfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAg
ICAgICByZXR1cm4gQ2FsbFZhcmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVj
dCkKKworICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0Owot
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ugb3Bf
Y29uc3RydWN0X3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwotICAg
IGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoK
ICAgICAgICAgcmV0dXJuIFRhaWxDYWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpOwotICAgIHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gQ2FsbDsKIH0KIAogQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjEz
ZDE3MzRhMDJjNThhMzIxNzU5MjVkMjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEzNzhh
ZWJlZjkwMjU2ZjExNWVmMTdlM2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlua1N0
YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDb2RlQgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlua0lu
Zm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9j
aykubV9jYWxsTGlua0luZm87CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jf
b3BlbjoKKyAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
T3Blbj4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0luZm8g
PSAmaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxv
Y2spLm1fY2FsbExpbmtJbmZvOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdlNjE2
MGI2NTNlN2E0ZTczMDRiMi4uZGM0OWFmMGQ1M2ZiMzU4ZGY2MjFmNGMwNDY3YWNiMTBkMDQwNzg4
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgi
CisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1
Y3RzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0
YXR1cy5oIgpAQCAtNTgzLDYgKzU4NCwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAg
ICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAK
KyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFMSVpF
X01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJn
dW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElBTEla
RV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFy
Z3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJ
WkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsMTQgKzEyMzksMjcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQxOAogICAgICAg
ICAvLyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZlX3Njb3BlX2Zv
cl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2NvcGUgcmVzb2x1
dGlvbi4KIAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1v
ZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgIGF1dG8gY2xlYXJJZk5lZWRlZCA9
IFsmXSAoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhLCBBU0NJSUxpdGVyYWwgb3BO
YW1lKSB7CisgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6
OkRlZmF1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgU3RydWN0dXJl
SUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5z
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKCFvbGRT
dHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmdldChvbGRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHBy
b3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YSk7Cisg
ICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyAi
LCBvcE5hbWUsICIgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKG1vZGVNZXRhZGF0YSk7CisgICAgICAgIH07CisKKyAgICAgICAgbV9tZXRhZGF0YS0+
Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAg
ICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG9wZW4i
X3MpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0
b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVhcklmTmVlZGVk
KG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG5leHQiX3MpOworICAgICAg
ICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLCAiaXRlcmF0
b3IgbmV4dCJfcyk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVhcklmTmVl
ZGVkKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCAiZ2V0IGJ5IGlkIl9zKTsKICAgICAgICAgfSk7
CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0
byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM1NCwyNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewog
ICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6Omdl
dDwxPihwYWlyLmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rp
b24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkg
eworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9T
UigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgICAg
IExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTElu
dEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMp
KTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsK
KyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVh
cmluZyBMTEludCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAg
ICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFy
TExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFk
YXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50
IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBp
dCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJy
aW5nIHRvLi4uCisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAgICAgICAgTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0
QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50
R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9OwpAQCAtMzA0MSw2ICszMDg3LDExIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2Nr
Ojp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNv
CiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJl
dHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5t
ZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rp
b24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNo
ZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgK
aW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3
ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAg
dm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykK
IAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0
YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19v
cD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2Up
OyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lU
KQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMo
bWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0
YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRh
dGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAg
ICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAg
ZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9
ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJh
eVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJ
U0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVBy
b2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1
OTFlZGFlNTE2NzdhMjg4YzIuLjIyMmViMTk1ZDEzMDYxOTc3MDZhZmQyNmI0ODFmMzYxMjczNzI5
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNw
cApAQCAtODYsNiArODYsMzYgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9t
TExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9w
X2dldF9ieV92YWw6CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBm
YWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5
dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCku
bWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBu
b3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2FkLgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAg
IGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0
KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsK
KyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6
IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5l
eHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlmIChieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAg
aWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZh
dWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBm
YWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRh
ZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAm
dm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFT
U0VSVChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFs
dWUpOworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEubW9kZSAh
PSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAg
ICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApp
bmRleCAwODVhZThkMTk5NzZiODg2ZjAwMTlmODVmYTY3YjAyYmUxNGNkYTVlLi4zZDcwY2Q1NDNl
Y2ZhZTkwMjI1MDI5NjAxYTBkNDA1ZWM2NzFiMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMzIsNyArMzIsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IDo6SlND
OjpPcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNv
ZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9CWVRF
Q09ERV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51
bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJF
Ul9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9m
Qnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRh
KTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9IG9wX3dpZGUxNjsKICAg
ICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IG9wX3dpZGUzMjsKICAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9wY29k
ZUxlbmd0aHM7CkBAIC00MSw3ICs0Myw5IEBAIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAKIHN0
cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IFdhc21PcGNvZGVJ
RDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aENo
ZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhfQ0hF
Q0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29k
ZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX1dBU01fV0lU
SF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVj
a3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSB3YXNtX3dpZGUxNjsKICAgICBzdGF0aWMgY29uc3Rl
eHByIE9wY29kZUlEIHdpZGUzMiA9IHdhc21fd2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSB3YXNtT3Bjb2RlTGVuZ3RoczsKQEAgLTk4
LDEyICsxMDIsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFycm93KCktPnRlbXBsYXRl
IG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBPcGNvZGVTaXplIHdp
ZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1dpZGUzMjxUcmFpdHM+KCkpCisgICAg
ICAgICAgICByZXR1cm4gT3Bjb2RlU2l6ZTo6V2lkZTMyOworICAgICAgICByZXR1cm4gaXNXaWRl
MTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93Owor
ICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgog
ICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wY29k
ZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CiAg
ICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+Cisg
ICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3Bj
b2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50
czsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0
cz4KICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7CkBAIC0xMzcsNiArMTU1
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgVCwg
T3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAg
VCBhc0tub3duV2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKChpczxULCBUcmFp
dHM+KCkpKTsKKyAgICAgICAgcmV0dXJuIFQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB0eXBlbmFt
ZSBUeXBlQnlTaXplPHdpZHRoPjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBPcGNv
ZGVTaXplOjpOYXJyb3cgPyAxIDogMikpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBU
LCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBUKiBjYXN0KCkKICAgICB7
CkBAIC0xNjEsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNX
aWRlMTY8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
SW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykg
KyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVT
aXplOjpXaWRlMTY+Kj4odGhpcyArIDEpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgpAQCAtMTY5LDE0ICsxOTQsMTYgQEAgcHVibGljOgog
ICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNXaWRlMzI8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4oYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4odGhpcyArIDEpOwogICAg
IH0KIH07CiAKIHN0cnVjdCBJbnN0cnVjdGlvbiA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248T3Bj
b2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnN0cnVjdGlvbikgPT0gMSwgIlNv
IHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogc3RydWN0IFdhc21J
bnN0YW5jZSA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZUlEPiB7CiB9Oworc3Rh
dGljX2Fzc2VydChzaXplb2YoV2FzbUluc3RhbmNlKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlz
IHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MmQ2OTE5MzFjNmM3OTQ4ZTU1N2U0ZjU2OTIzYWUzNDkwZmViOWU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisK
K2VudW0gY2xhc3MgSXRlcmF0aW9uTW9kZSA6IHVpbnQ4X3QgeworICAgIEdlbmVyaWMgPSAxIDw8
IDAsCisgICAgRmFzdEFycmF5ID0gMSA8PCAxLAorfTsKKworY29uc3RleHByIHVpbnQ4X3QgbnVt
YmVyT2ZJdGVyYXRpb25Nb2RlcyA9IDI7CisKK09WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZP
Ul9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhJdGVyYXRpb25Nb2RlKTsKKworc3RydWN0IEl0
ZXJhdGlvbk1vZGVNZXRhZGF0YSB7CisgICAgdWludDhfdCBzZWVuTW9kZXMgeyAwIH07CisgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc2Vlbk1vZGVzKSkgPT0gc2l6ZW9mKEl0ZXJh
dGlvbk1vZGUpKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCAyZDE0M2I5
Y2Y2NzQzMDVkNDBjOTFlYjBhZTM1MTMzMTI1Njk0NDFmLi5iYmUxZjY3ZmZiZWZlOGU4YmIxMzY3
ZWI2YzdlZDY3Y2JhYThhYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNjAsMTQgKzYwLDMxIEBAIHZvaWQgTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwo
Vk0mIHZtLCBjb25zdCBGCiAgICAgfQogCiAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBtX293bmVy
LT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlT2Zmc2V0LmdldCgpKTsKLSAgICBjbGVhckxM
SW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEobV9v
d25lci5nZXQoKSkpOworICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKKyAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1l
dGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46Cisg
ICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JP
cGVuPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEobV9vd25l
ci5nZXQoKSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9kb25l
TW9kZU1ldGFkYXRhKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5t
X3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVs
dDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogfQogCi12b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRh
ZGF0YSkKK3ZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQog
ewotICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFsdWUuCi0gICAgbWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CisgICAg
bWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CiB9CiAKLQogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmgKaW5kZXggMjIwZmZmM2UzYmY1NDM0MWU5NjFjODJkZjhjNGU4YzkwMDA3
MzRiZS4uMWQ1OTU3ZWZmODEwOTJhMWRhYmRlZTUwMjVjYWM1ZTZmMzg2NzgyYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAotICAgIHN0
YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYpOwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0QnlJZE1vZGVNZXRhZGF0
YSYpOwogCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApp
bmRleCAxODUxYjYzYzdjYTZhZWYyZmIzNmJmMmY4N2U5MmExOWUwZDQwYzE4Li5hYTg4NTlhZGQ2
Mjg2MGZmZGFkYjRkMjIyODdjMzRiMDdjZTViMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3RleHBy
KG0KICAgICBtYWNybyhPcFRhaWxDYWxsKSBcCiAgICAgbWFjcm8oT3BDYWxsRXZhbCkgXAogICAg
IG1hY3JvKE9wQ29uc3RydWN0KSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck9wZW4pIFwKKyAgICBt
YWNybyhPcEl0ZXJhdG9yTmV4dCkgXAorCiAKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1s
aW1pdHMiKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkNzZkNGZhN2I0NmU5OGI5Zjk3MDBkYzM4NjMwZjQuLjk0
NjU4YjA5NmJmMTkzYzg3Y2ZkNzFhOWY1YmRlMTVmNjEzMzJhODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xMjAsNiArMTIwLDE2
IEBAIGlubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2lubGluZSBib29sIGlzU3VidHlwZVNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISh2
YWx1ZSAmIH5jYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKK2lubGluZSBib29sIHNwZWN1bGF0aW9u
Q29udGFpbnMoU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIGNhdGVnb3J5KQor
eworICAgIHJldHVybiAhISh2YWx1ZSAmIGNhdGVnb3J5KSAmJiB2YWx1ZTsKK30KKwogaW5saW5l
IGJvb2wgaXNDZWxsU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0
dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYmICEodmFsdWUgJiB+U3BlY0NlbGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmluZGV4IDk2MTBkY2U1
Y2RiYzNlYzA5Y2UzM2IxZDZiY2M0YjNmZjhhNmMzYzguLmU5YmY5NTMxZjdiYTU5NTczMTEwZTMx
YTdhNDRjZDIyOGI3NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdXBlclNhbXBsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmgKQEAgLTQ4LDYgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdf
c3VwZXJTYW1wbGVyQ291bnQtLTsKICAgICB9CiAKKyAgICB2b2lkIHJlbGVhc2UoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fZG9TYW1wbGUpOworICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50
LS07CisgICAgICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2RvU2FtcGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNkMzYyY2FjMTlkNDkz
OTg5NDc3N2JlZGE3YzBhYzJkNjM2MDYzZi4uOGZlZGU2MmI1MzBlYmQxMDFmZWRhNjFhYmFiOTQ5
YTNmM2IzNTliNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwMTYsMTQgKzQwMTYsMTUgQEAgYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29uc3Qg
VmFyaWFibGUmIHZhcmlhYmxlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
LCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9y
TG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2Rl
KiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQogewogICAgIGJv
b2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2RlID8gZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQoKSA6
IGZhbHNlOwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNGb3JBd2FpdCAmJiBpc0FzeW5j
RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CisgICAgYXV0byBzaG91bGRFbWl0QXdh
aXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOworICAgIEFT
U0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkp
KTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAg
ICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihzdWJq
ZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFz
eW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9y
KHN1YmplY3QuZ2V0KCksIG5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9k
ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5h
bWVzKCkubmV4dCk7CiAKICAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKQEAg
LTQxMzAsNyArNDEzMSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlv
bihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIH0KIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0
TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVtaXRBd2Fp
dDo6WWVzIDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUs
IHNob3VsZEVtaXRBd2FpdCk7CiAKICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCBs
b29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFs
dWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00MTQzLDcgKzQxNDQsMTQ1IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIHBvcEZpbmFsbHlDb250cm9sRmxvd1Nj
b3BlKCk7CiAgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgewogICAgICAgICAgICAgLy8g
SXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93LgotICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdhaXQg
PyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0ZXJh
dG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwor
ICAgICAgICB9CisgICAgfQorICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7Cit9CisKKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZv
ck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKK3sK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNpY3MoKSB8fCBpczMyQml0KCkg
fHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkpKSB7CisgICAgICAg
IGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9kZSwgc3ViamVjdE5vZGUsIGNhbGxCYWNrLCBmb3JM
b29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYWJsZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVt
aXROb2RlKGl0ZXJhYmxlLmdldCgpLCBzdWJqZWN0Tm9kZSk7CisKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaXRlcmF0b3JTeW1ib2wgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmFi
bGUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHRPckluZGV4ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGl0ZXJhdG9yID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyBhcmdz
KCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBtb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0ZXJh
YmxlLmdldCgpKTsKKyAgICBlbWl0SXRlcmF0b3JPcGVuKGl0ZXJhdG9yLmdldCgpLCBuZXh0T3JJ
bmRleC5nZXQoKSwgaXRlcmF0b3JTeW1ib2wuZ2V0KCksIGFyZ3MsIG5vZGUpOworCisgICAgUmVm
PExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiB0cnlTdGFydExh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlWaWFUaHJvd0xhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlMYWJlbCA9IG5ld0xhYmVsKCk7Cisg
ICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGVu
ZENhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVl
ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVk
KCkpOworCisgICAgLy8gUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yJ3MgbGlmZXRpbWUgbXVz
dCBiZSBsb25nZXIgdGhhbiBJdGVyYXRvckNsb3NlQ29udGV4dC4KKyAgICBGaW5hbGx5Q29udGV4
dCBmaW5hbGx5Q29udGV4dCgqdGhpcywgZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICBwdXNoRmlu
YWxseUNvbnRyb2xGbG93U2NvcGUoZmluYWxseUNvbnRleHQpOworCisgICAgeworICAgICAgICBS
ZWY8TGFiZWxTY29wZT4gc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwor
CisgICAgICAgIFJlZjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1p
dExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgIGVtaXRMYWJlbCgqc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOworICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICBpZiAoZm9y
TG9vcE5vZGUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZvckxvb3BOb2RlLT5pc0Zv
ck9mTm9kZSgpKTsKKyAgICAgICAgICAgIHByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9v
cEl0ZXJhdGlvbihmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAg
IGVtaXREZWJ1Z0hvb2soZm9yTG9vcE5vZGUtPmxleHByKCkpOworICAgICAgICB9CisKKyAgICAg
ICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRvbmUgPSBuZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3MoKnRoaXMsIG51bGxwdHIsIDAp
OworICAgICAgICAgICAgbW92ZShuZXh0QXJncy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0
KCkpOworCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KGRvbmUuZ2V0KCksIHZhbHVlLmdl
dCgpLCBpdGVyYWJsZS5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIG5leHRBcmdzLCBub2RlKTsK
KyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGxvb3BEb25lLmdldCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIGVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsKKyAg
ICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IHB1c2hUcnkodHJ5U3RhcnRMYWJlbC5nZXQoKSwgZmlu
YWxseVZpYVRocm93TGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkp
OworICAgICAgICBjYWxsQmFjaygqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgICAgICBlbWl0SnVt
cChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2Ug
Zm9yIGFicnVwdCBjb21wbGV0aW9ucy4KKyAgICAgICAgeworICAgICAgICAgICAgLy8gRmluYWxs
eSBibG9jayBmb3IgdGhlIGVudW1lcmF0aW9uLgorICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFs
bHlWaWFUaHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHBvcFRyeSh0cnlEYXRhLCBmaW5h
bGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gZmluYWxs
eUJvZHlMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisKKyAgICAgICAgICAg
IGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFs
dWVSZWdpc3RlcigpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIHRy
eURhdGEpOworICAgICAgICAgICAgbW92ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCks
IGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAg
ZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGVtaXRMYWJl
bChmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgbW92ZUVtcHR5VmFsdWUoZmluYWxs
eUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgLy8gRmluYWxseSBmYWxs
IHRocm91Z2ggY2FzZS4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5Qm9keUxhYmVsLmdl
dCgpKTsKKyAgICAgICAgICAgIHJlc3RvcmVTY29wZVJlZ2lzdGVyKCk7CisKKyAgICAgICAgICAg
IFJlZjxMYWJlbD4gZmluYWxseURvbmUgPSBuZXdMYWJlbCgpOworCisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAg
ICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVy
bk1ldGhvZC5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgUmVmPExh
YmVsPiByZXR1cm5DYWxsVHJ5U3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgZW1pdExh
YmVsKHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSk7CisgICAgICAgICAgICBUcnlEYXRhKiByZXR1
cm5DYWxsVHJ5RGF0YSA9IHB1c2hUcnkocmV0dXJuQ2FsbFRyeVN0YXJ0LmdldCgpLCBjYXRjaExh
YmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRDYXRjaCk7CisKKyAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAg
ICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7
CisgICAgICAgICAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+
ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisg
ICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZh
bHVlLmdldCgpKSwgZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAgICAgZW1pdFRocm93VHlw
ZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsK
KworICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAgICAg
IGVtaXRGaW5hbGx5Q29tcGxldGlvbihmaW5hbGx5Q29udGV4dCwgZW5kQ2F0Y2hMYWJlbC5nZXQo
KSk7CisKKyAgICAgICAgICAgIHBvcFRyeShyZXR1cm5DYWxsVHJ5RGF0YSwgZmluYWxseURvbmUu
Z2V0KCkpOworCisgICAgICAgICAgICAvLyBDYXRjaCBibG9jayBmb3IgZXhjZXB0aW9ucyB0aGF0
IG1heSBiZSB0aHJvd24gd2hpbGUgY2FsbGluZyB0aGUgcmV0dXJuCisgICAgICAgICAgICAvLyBo
YW5kbGVyIGluIHRoZSBlbnVtZXJhdGlvbiBmaW5hbGx5IGJsb2NrLiBUaGUgb25seSByZWFzb24g
d2UgbmVlZCB0aGlzCisgICAgICAgICAgICAvLyBjYXRjaCBibG9jayBpcyBiZWNhdXNlIGlmIGVu
dGVyZWQgdGhlIGFib3ZlIGZpbmFsbHkgYmxvY2sgZHVlIHRvIGEgdGhyb3duCisgICAgICAgICAg
ICAvLyBleGNlcHRpb24sIHRoZW4gd2Ugd2FudCB0byByZS10aHJvdyB0aGUgb3JpZ2luYWwgZXhj
ZXB0aW9uIG9uIGV4aXRpbmcKKyAgICAgICAgICAgIC8vIHRoZSBmaW5hbGx5IGJsb2NrLiBPdGhl
cndpc2UsIHdlJ2xsIGxldCBhbnkgbmV3IGV4Y2VwdGlvbiBwYXNzIHRocm91Z2guCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOworCisg
ICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdE91dE9mTGluZUZpbmFsbHlIYW5kbGVy
KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlwZVJl
Z2lzdGVyKCksIHJldHVybkNhbGxUcnlEYXRhKTsKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB0
aGlzIGlzIGEgc3ludGhlc2l6ZWQgY2F0Y2ggYmxvY2sgYW5kIHdlJ3JlIGd1YXJhbnRlZWQgdG8g
bmV2ZXIgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUgYW55IHN5bWJvbHMgZnJv
bSB0aGUgc2NvcGUsIHdlIGNhbiBza2lwIHJlc3RvcmluZyB0aGUgc2NvcGUKKyAgICAgICAgICAg
ICAgICAvLyByZWdpc3RlciBoZXJlLgorCisgICAgICAgICAgICAgICAgUmVmPExhYmVsPiB0aHJv
d0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0
SXNFbXB0eShuZXdUZW1wb3JhcnkoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKSwg
dGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbW92ZShleGNlcHRpb25SZWdpc3Rl
ci5nZXQoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0VGhy
b3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdExhYmVs
KGVuZENhdGNoTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBicmVha0xhYmVsSXNCb3VuZCA9IHNjb3BlLT5icmVha1RhcmdldE1heUJlQm91bmQo
KTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKQorICAgICAgICAgICAgZW1pdExhYmVs
KHNjb3BlLT5icmVha1RhcmdldCgpKTsKKyAgICAgICAgcG9wRmluYWxseUNvbnRyb2xGbG93U2Nv
cGUoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7CisgICAgICAgICAgICAvLyBJ
dGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9sIGZsb3cuCisgICAgICAg
ICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIEVtaXRB
d2FpdDo6Tm8pOwogICAgICAgICB9CiAgICAgfQogICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQo
KSk7CkBAIC00MjY1LDU2ICs0NDA0LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJc0VtcHR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogICAgIE9wSXNF
bXB0eTo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KLSAgICAKLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQpCi17
Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxw
dHIpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9y
KTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+
ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgICAgICBpZiAoZG9FbWl0QXdh
aXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgICAgICBlbWl0QXdhaXQoZHN0KTsKLSAgICB9
Ci0gICAgewotICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7Ci0g
ICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwg
dHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKLSAgICAgICAgZW1pdExh
YmVsKHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSkKLXsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywg
bnVsbHB0ciwgMSk7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
aXRlcmF0b3IpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rlcigw
KSwgdmFsdWUpOwotICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgp
LCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotICAgIH0KLQotICAgIHJl
dHVybiBkc3Q7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3Nl
KFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5ld0xh
YmVsKCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQp
OwotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0
dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50
cygqdGhpcywgbnVsbHB0cik7Ci0gICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGl0ZXJhdG9yKTsKLSAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwg
bm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8p
OwotCi0gICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICBlbWl0
QXdhaXQodmFsdWUuZ2V0KCkpOwotCi0gICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5l
d1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwotICAgIGVtaXRUaHJvd1R5
cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7
Ci0gICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwotfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjpwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0
ZXJJRCogaW5kZXhSZWdpc3RlcikKIHsKQEAgLTQ1NTUsNyArNDY0NCwzNSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiAgICAgbW92ZSh2YWx1
ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgUmVn
aXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNlcnZlIHNwYWNlIGZv
ciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7
ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CisKKyAgICBp
ZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBlbWl0RXhwcmVzc2lv
bkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgp
KTsKKyAgICBPcEl0ZXJhdG9yT3Blbjo6ZW1pdCh0aGlzLCBpdGVyYXRvciwgbmV4dE9ySW5kZXgs
IHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZS50aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUuc3RhY2tP
ZmZzZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQo
UmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0ZXJhYmxl
LCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYgaXRlcmF0b3IsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8vIFJlc2VydmUgc3BhY2Ug
Zm9yIGNhbGwgZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVy
czsgKytpKQorICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFyeSgpKTsKKworICAg
IGlmIChzaG91bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBlbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlRXhwcmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKworICAgIGVtaXRFeHByZXNz
aW9uSW5mbyhub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCkpOworICAgIE9wSXRlcmF0b3JOZXh0OjplbWl0KHRoaXMsIGRvbmUsIHZhbHVlLCBpdGVyYWJs
ZSwgbmV4dE9ySW5kZXgsIGl0ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5zdGFja09m
ZnNldCgpKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5l
cmljSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9s
KTsKICAgICBlbWl0Q2FsbEl0ZXJhdG9yKGl0ZXJhdG9yLmdldCgpLCBhcmd1bWVudCwgbm9kZSk7
CkBAIC00NTYzLDYgKzQ2ODAsNTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXgKICAgICByZXR1
cm4gaXRlcmF0b3IuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRN
ZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIHsKKyAgICAgICAgQ2FsbEFy
Z3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgbW92ZShuZXh0
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRDYWxsKGRz
dCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5k
aXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVD
YWxsOjpObyk7CisKKyAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQor
ICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVmPExh
YmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Cisg
ICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkp
OworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCog
dmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIHsKKyAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAg
ICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAg
ICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAg
ICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJn
dW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgfQorCisgICAgcmV0dXJuIGRzdDsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVy
SUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3
YWl0IGRvRW1pdEF3YWl0KQoreworICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAgIGVt
aXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9k
LmdldCgpKSwgZG9uZS5nZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBu
ZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywg
bnVsbHB0cik7CisgICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJh
dG9yKTsKKyAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAg
aWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAgICBlbWl0QXdhaXQodmFs
dWUuZ2V0KCkpOworCisgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFy
eSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOworICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgZW1p
dExhYmVsKGRvbmUuZ2V0KCkpOworfQorCisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0g
ZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuYXN5
bmNJdGVyYXRvclN5bWJvbCk7CkBAIC00NTc1LDcgKzQ3NDMsNyBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YQogICAgIGVtaXRKdW1wKGFzeW5jSXRlcmF0b3JGb3VuZC5nZXQoKSk7CiAgICAgZW1p
dExhYmVsKGFzeW5jSXRlcmF0b3JOb3RGb3VuZC5nZXQoKSk7CiAKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25JdGVyYXRvciA9IGVtaXRHZXRHZW5lcmljSXRl
cmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgIG1vdmUoaXRlcmF0b3IuZ2V0KCksIGNvbW1vbkl0
ZXJhdG9yLmdldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1p
dEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
bmV4dCk7CkBAIC00NjA0LDcgKzQ3NzIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogewog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOwogICAgIHsKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5jSXRlcmF0b3Io
YXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5jSXRlcmF0b3IoYXJn
dW1lbnQsIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICAg
ICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00NjQyLDcgKzQ4MTAsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElm
RmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQoKSks
IHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgICAgIEVtaXRBd2Fp
dCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6
Tm87Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgp
LCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOworICAgICAgICAgICAgICAgICAgICBl
bWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGVtaXRBd2FpdElu
SXRlcmF0b3JDbG9zZSk7CiAKICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9y
KCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC4iX3Mp
OwogCkBAIC00NzAzLDcgKzQ4NzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOwotICAg
ICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhv
ZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAg
IGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBuZXh0TWV0aG9k
LmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOwogCiAgICAgICAgICAg
ICBlbWl0TGFiZWwoYnJhbmNoT25SZXN1bHQuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDUz
NGNkODI4YWFjM2QxNDBiNGY0NmM4Njg3NjgwOTE0ZTBkZTMyNS4uNmI3MDhlOTZhYjE0NjBkYTZh
MGFlMGNiOTUzNjhhNzlkY2Y4ZWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODI4LDYgKzgyOCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJvcGVydHkoUmVn
aXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3RlciwKICAgICAg
ICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lz
dGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3Qg
SlNUZXh0UG9zaXRpb24mKTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5lcmljRW51bWVyYXRpb24o
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0ZXJJ
RCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAgICAgICAgIHZvaWQgZW1pdEVudW1l
cmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Np
b25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIsIFJl
Z2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXBs
YXRlTm9kZSopOwpAQCAtODk4LDkgKzg5OSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzRGVyaXZlZEFycmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIERlcml2ZWRBcnJh
eVR5cGUpOyB9CiAgICAgICAgIHZvaWQgZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUoUmVnaXN0
ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3IpOwogCi0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9k
LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwotICAgICAgICB2b2lkIGVtaXRJ
dGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7CisgICAgICAgIHZvaWQg
ZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4dE9y
SW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVyYWJs
ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAgICAgdm9pZCBlbWl0SXRl
cmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklE
KiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lz
dGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4
dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lz
dGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CisgICAg
ICAgIHZvaWQgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBj
b25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0
OjpObyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJ
RCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKIApAQCAtOTUwLDkgKzk1
Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXNoQ2F0Y2hTY29wZShW
YXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBvcENhdGNoU2NvcGUoVmFy
aWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJdGVyYXRv
cihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKik7Ci0KICAgICAgICAgdm9pZCBlbWl0QXdhaXQoUmVnaXN0ZXJJRCopOwogICAgICAg
ICB2b2lkIGVtaXRHZXRTY29wZSgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFdpdGhT
Y29wZShSZWdpc3RlcklEKiBvYmplY3RTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDRmZGI0ZGQ1NGQ0OTJm
OTBkMmQ3MjFmZDdkYWMxMmZmN2QyZjg1MC4uMmIxNWNhYTQ3MTNhODg1NjVjNGNkMDk1MjZmOTBj
MjQ1ZjYzYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDU3Miw3ICs0NTcyLDcgQEAgdm9pZCBBcnJheVBhdHRl
cm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogcmhzKQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBpZiAobV90YXJnZXRQYXR0ZXJucy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9y
LmdldCgpLCB0aGlzKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9z
ZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1
ODgsNyArNDU4OCw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQo
KSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZh
bHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5l
eHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShk
b25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkudmFsdWUpOwpAQCAtNDYyNCw3ICs0NjI0LDcgQEAgdm9pZCBBcnJheVBhdHRlcm5O
b2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
cmhzKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOwog
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5n
ZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0
aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5n
ZXQoKSwgaXRlcmF0aW9uRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LnZhbHVlKTsKQEAgLTQ2NDIsNyArNDY0Miw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKIAog
ICAgIFJlZjxMYWJlbD4gaXRlcmF0b3JDbG9zZWQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0b3JDbG9zZWQuZ2V0
KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhp
cyk7CisgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQo
KSwgdGhpcyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRvckNsb3NlZC5nZXQoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAwYTRhMTFmOWI0MGU2YjEzYzU5NjQyMjhlNDEx
Mjg5ZjFkOWVlODY2Li4xOGRhZTAwNGM3MjJjZDZmZGNmODkxMmJjNWM0MjEzYTQzMWIyNDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCkBAIC00Mzk4LDEwICs0Mzk4LDggQEAgdm9pZCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAgICAgICAgICAg
ICAgIGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChz
aXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykKLSAgICAgICAgZnVu
Y3RvcihtX3N0YXRlLmFyZ3VtZW50KGkpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5u
dW1iZXJPZkxvY2FscygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUubG9jYWwoaSkp
OworICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnNpemUoKTsgaS0tOykKKyAgICAgICAgZnVu
Y3RvcihtX3N0YXRlLmF0SW5kZXgoaSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFj
dFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRU
YWlsQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxB
YnN0cmFjdFN0YXRlLmgKaW5kZXggODk3YzcwZGZmYmEwNjZiNjQ5Y2FmZGNjMWVmMDkzMzc2ODEw
NGQxMy4uNDM4ZTE2ZGU4NTk1OTI1NGQ5NTU3MjFiNmYwOGRiOTU4MTRmZDhmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKQEAg
LTEzNywxMSArMTM3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKGVk
Z2Uubm9kZSgpKTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJP
ZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJP
ZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2ln
bmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5u
dW1iZXJPZlRtcHMoKTsgfQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpOyB9CiAgICAgQWJzdHJh
Y3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVl
c0F0VGFpbC5vcGVyYW5kKG9wZXJhbmQpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6
ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaW5kZXgpOyB9
CiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Js
b2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaW5kZXgpOyB9CisgICAgQWJzdHJhY3RWYWx1ZSYg
dG1wKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLnRtcChpbmRl
eCk7IH0KICAgICAKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDA5OTdi
YWIwNTI1MjY0ZTZmMTY0ODU0MjQyZDk0Y2UzYjU3ZTM2ZGMuLmNkMjY0MmU5NTRlZWY4ZmY2YjFk
NjI4NjcxZjNmM2YxZThkMzUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRp
bk5hbWVzLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJCeXRl
Y29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKQEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gSGVscGVyIGZvciBtaW4gYW5kIG1heC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29s
IGhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwogICAgIAogICAgIHZvaWQgcmVmaW5lU3RhdGljYWxseShDYWxsTGlu
a1N0YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQpOwogICAgIC8vIEJsb2NrcyBjYW4gZWl0aGVyIGJl
IHRhcmdldGFibGUgKGkuZS4gaW4gdGhlIG1fYmxvY2tMaW5raW5nVGFyZ2V0cyBvZiBvbmUgSW5s
aW5lU3RhY2tFbnRyeSkgd2l0aCBhIHdlbGwtZGVmaW5lZCBieXRlY29kZUJlZ2luLApAQCAtMTc0
LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSGFuZGxlIGNhbGxzLiBUaGlzIHJlc29sdmVz
IGlzc3VlcyBzdXJyb3VuZGluZyBpbmxpbmluZyBhbmQgaW50cmluc2ljcy4KICAgICBlbnVtIFRl
cm1pbmFsaXR5IHsgVGVybWluYWwsIE5vblRlcm1pbmFsIH07CiAgICAgVGVybWluYWxpdHkgaGFu
ZGxlQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElu
bGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgICAgICBP
cGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMs
CiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxPcD4KQEAgLTE4OCwyNyArMTg5LDI3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5k
bGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBlbWl0RnVuY3Rpb25DaGVja0lmTmVlZGVkKTsKICAgICB1bnNpZ25lZCBp
bmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFu
IGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29z
dCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRsZVZh
cmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdp
c3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5z
aWduZWQgYXJndW1lbnRzT2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6
S2luZCk7CisgICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9m
ZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3Vt
ZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKICAgICB1bnNpZ25lZCBnZXRJbmxpbmluZ0JhbGFuY2Uo
Y29uc3QgQ2FsbExpbmtTdGF0dXMmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBlbnVt
IGNsYXNzIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgeyBPcHRpbWl6ZWRUb0p1bXAsIElubGluZWQs
IERpZE5vdGhpbmcgfTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxWYXJp
YW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFy
aWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVk
JiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5l
ZWRzVG9DaGVja0NhbGxlZSk7Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlz
QXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBu
ZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNh
bGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlh
bnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYg
aW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVk
c1RvQ2hlY2tDYWxsZWUpOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlSW5saW5p
bmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0
YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwg
Tm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgdm9p
ZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9u
QmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgdm9pZCBpbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVu
Y3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8g
cGxhbnQgYSBjYWxsLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAg
Ym9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9v
bCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
LSAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmluc2lj
VmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJp
YW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlVHlw
ZWRBcnJheUNvbnN0cnVjdG9yKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rp
b24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAg
Ym9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoT3BlcmFuZCByZXN1bHQsIEludGVybmFs
RnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUNv
bnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBTcGVjdWxh
dGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFu
ZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRl
ZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSogaGFu
ZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxh
dGVkVHlwZSwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlP
ZmZzZXQsIE5vZGVUeXBlID0gR2V0QnlPZmZzZXQpOwotICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0
dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSog
dGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pOworICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBjb25z
dCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZU1vZHVsZU5h
bWVzcGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUsIE5vZGUq
IGJhc2UsIEdldEJ5U3RhdHVzKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgpA
QCAtMzE4LDE1ICszMTksMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGdldExvY2FsT3JU
bXAob3BlcmFuZCk7CiAgICAgfQogCi0gICAgTm9kZSogZ2V0KFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKQorICAgIE5vZGUqIGdldChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAo
b3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5k
ZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOworICAgICAgICAgICAgdW5zaWduZWQgY29u
c3RhbnRJbmRleCA9IG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkudG9Db25zdGFudEluZGV4KCk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBvbGRTaXplID0gbV9jb25zdGFudHMuc2l6ZSgpOwogICAg
ICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0gb2xkU2l6ZSB8fCAhbV9jb25zdGFudHNbY29u
c3RhbnRJbmRleF0pIHsKICAgICAgICAgICAgICAgICBjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9j
ayA9ICptX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jazsKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENvbnN0YW50KG9wZXJhbmQpOwotICAgICAgICAgICAg
ICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gPSBj
b2RlQmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3BlcmFuZCk7CisgICAg
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5k
LnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24gc291cmNlQ29kZVJlcHJlc2VudGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNl
Q29kZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUpIHsKICAgICAgICAgICAgICAgICAg
ICAgbV9jb25zdGFudHMuZ3Jvdyhjb25zdGFudEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFNpemU7IGkgPCBtX2NvbnN0YW50cy5zaXplKCk7ICsr
aSkKQEAgLTM0NywxMCArMzQ4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUoKS0+aXNDbG9zdXJl
Q2FsbCkgewogICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGlubGluZUNhbGxG
cmFtZSgpLT5jYWxsZWVDb25zdGFudCgpOwotICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9m
ZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkKKyAgICAgICAgICAgICAgICBpZiAob3Bl
cmFuZCA9PSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHdlYWtKU0NvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpIHsKKyAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90OjpjYWxsZWUpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHNv
bWUgY29uc3RhbnQtZm9sZGluZyBoZXJlIGJlY2F1c2UgdGhpcyBlbmFibGVzIENyZWF0ZVRoaXMg
Zm9sZGluZy4gTm90ZQogICAgICAgICAgICAgLy8gdGhhdCB3ZSBkb24ndCBoYXZlIHN1Y2ggd2F0
Y2hwb2ludC1iYXNlZCBmb2xkaW5nIGZvciBpbmxpbmVkIHVzZXMgb2YgQ2FsbGVlLCBzaW5jZSBp
biB0aGF0CiAgICAgICAgICAgICAvLyBjYXNlIGlmIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmdsZXRv
biB0aGVuIHdlIGFscmVhZHkga25vdyBpdC4KQEAgLTQxMCw3ICs0MTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBtX3NldExvY2FsUXVldWUuc2hyaW5rKDApOwogICAgIH0KIAotICAgIE5vZGUqIHNl
dChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9
IE5vcm1hbFNldCkKKyAgICBOb2RlKiBzZXQoT3BlcmFuZCBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwg
U2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldERp
cmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCksIHZhbHVlLCBzZXRN
b2RlKTsKICAgICB9CkBAIC02OTEsMTUgKzY5MiwyMCBAQCBwcml2YXRlOgogICAgICAgICBmbHVz
aEZvclRlcm1pbmFsKCk7CiAgICAgfQogCisgICAgTm9kZSoganNDb25zdGFudChGcm96ZW5WYWx1
ZSogY29uc3RhbnRWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29u
c3RhbnQsIE9wSW5mbyhjb25zdGFudFZhbHVlKSk7CisgICAgfQorCiAgICAgLy8gQXNzdW1lcyB0
aGF0IHRoZSBjb25zdGFudCBzaG91bGQgYmUgc3Ryb25nbHkgbWFya2VkLgogICAgIE5vZGUqIGpz
Q29uc3RhbnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
ZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplU3Ryb25nKGNvbnN0YW50
VmFsdWUpKSk7CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplU3Ryb25n
KGNvbnN0YW50VmFsdWUpKTsKICAgICB9CiAKICAgICBOb2RlKiB3ZWFrSlNDb25zdGFudChKU1Zh
bHVlIGNvbnN0YW50VmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0Nv
bnN0YW50LCBPcEluZm8obV9ncmFwaC5mcmVlemUoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAgICAg
cmV0dXJuIGpzQ29uc3RhbnQobV9ncmFwaC5mcmVlemUoY29uc3RhbnRWYWx1ZSkpOwogICAgIH0K
IAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgdG8gZ2V0L3NldCB0aGUgdGhpcyB2YWx1ZS4KQEAg
LTg1MCw3ICs4NTYsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxs
KAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9w
SW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKKyAg
ICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBj
YWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7
CkBAIC05NTksNyArOTY1LDM3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gZ2V0
UHJlZGljdGlvbihtX2N1cnJlbnRJbmRleCk7CiAgICAgfQotICAgIAorCisgICAgLy8gRklYTUU6
IFRoaXMgaXNuJ3QgcXVpdGUgYSB0cnVlIGJvdHRvbSB2YWx1ZSBmb3IgZXhhbXBsZSBhbnkgb2Jq
ZWN0IHNwZWN1bGF0aW9uIHdpbGwgbm93IGJlIE9iamVjdHxPdGhlciBhcyB0aGlzIHJldHVybnMg
bnVsbC4KKyAgICAvLyBXZSBzaG91bGQgZml4IHRoaXMgd2hlbiB3ZSBjYW4gYWxsb2NhdGUgb24g
dGhlIENvbXBpbGVyIHRocmVhZC4KKyAgICBGcm96ZW5WYWx1ZSogYm90dG9tVmFsdWVNYXRjaGlu
Z1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHNwZWMpCisgICAgeworICAgICAgICAvLyBJdCBw
cm9iYWJseSBkb2Vzbid0IG1hdHRlciB3aGF0IHdlIHJldHVybiBoZXJlLgorICAgICAgICBpZiAo
c3BlYyA9PSBTcGVjTm9uZSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShKU1Zh
bHVlKCkpOworCisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNPdGhl
cikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisgICAg
ICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNCb29sZWFuKSkKKyAgICAgICAg
ICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc0Jvb2xlYW4odHJ1ZSkpOworCisgICAgICAgIGlm
IChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNGdWxsTnVtYmVyKSkKKyAgICAgICAgICAg
IHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc051bWJlcigwKSk7CisKKyAgICAgICAgaWYgKHNwZWN1
bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gbV9n
cmFwaC5mcmVlemUobV92bS0+YmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworCisgICAgICAgIGlm
IChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShtX3ZtLT5zbWFsbFN0cmluZ3MuZW1wdHlT
dHJpbmcoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY0Nl
bGxPdGhlciB8IFNwZWNPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXpl
KGpzTnVsbCgpKTsKKworICAgICAgICBBU1NFUlQoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBT
cGVjRW1wdHkpKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoKSk7Cisg
ICAgfQorCiAgICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZShBcnJheTo6QWN0aW9uIGFjdGlvbikK
ICAgICB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrOwpAQCAtMTE3NCw3ICsxMjEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gT3B0aW9uYWw6IGEgY29udGludWF0aW9uIGJsb2NrIGZvciByZXR1cm5zIHRvIGp1bXAgdG8u
IEl0IGlzIHNldCBieSBlYXJseSByZXR1cm5zIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogICAgICAg
ICBCYXNpY0Jsb2NrKiBtX2NvbnRpbnVhdGlvbkJsb2NrOwogCi0gICAgICAgIFZpcnR1YWxSZWdp
c3RlciBtX3JldHVyblZhbHVlOworICAgICAgICBPcGVyYW5kIG1fcmV0dXJuVmFsdWU7CiAgICAg
ICAgIAogICAgICAgICAvLyBTcGVjdWxhdGlvbnMgYWJvdXQgdmFyaWFibGUgdHlwZXMgY29sbGVj
dGVkIGZyb20gdGhlIHByb2ZpbGVkIGNvZGUgYmxvY2ssCiAgICAgICAgIC8vIHdoaWNoIGFyZSBi
YXNlZCBvbiBPU1IgZXhpdCBwcm9maWxlcyB0aGF0IHBhc3QgREZHIGNvbXBpbGF0aW9ucyBvZiB0
aGlzCkBAIC0xMTk0LDcgKzEyMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ29kZUJsb2Nr
KiwKICAgICAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSwgLy8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJldHVyblZhbHVlVlIsCisgICAgICAgICAgICBPcGVy
YW5kIHJldHVyblZhbHVlLAogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGluZUNhbGxG
cmFtZVN0YXJ0LAogICAgICAgICAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAog
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLApAQCAtMTI2OSw2ICsxMzA1LDcgQEAg
QmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKQog
ICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jayhCeXRl
Y29kZUluZGV4KCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgbV9udW1UbXBzLCAxKSk7
CiAgICAgQmFzaWNCbG9jayogYmxvY2tQdHIgPSBibG9jay5wdHIoKTsKICAgICBtX2dyYXBoLmFw
cGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKKyAgICBWRVJCT1NFX0xPRygiQWRkaW5nIG5ldyB1
bnRhcmdldGFibGUgYmxvY2s6ICIsIGJsb2NrUHRyLT5pbmRleCwgIlxuIik7CiAgICAgcmV0dXJu
IGJsb2NrUHRyOwogfQogCkBAIC0xMzAxLDggKzEzMzgsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YWxsT3A+CiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1v
ZGUpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7Ci0gICAgTm9kZSog
Y2FsbFRhcmdldCA9IGdldChieXRlY29kZS5tX2NhbGxlZSk7Ci0gICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBOb2RlKiBjYWxs
VGFyZ2V0ID0gZ2V0KGNhbGxlZUZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2lu
dCgpKSk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tP
ZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9p
bnQoKSkpOwogCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLApAQCAtMTMxMCw4ICsxMzQ3LDggQEAgQnl0ZUNvZGVQ
YXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgTm8KIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5saW5l
Q2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIAotICAgIHJldHVybiBoYW5kbGVDYWxsKGJ5
dGVjb2RlLm1fZHN0LCBvcCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKLSAgICAgICAg
Ynl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRp
Y3Rpb24oKSk7CisgICAgcmV0dXJuIGhhbmRsZUNhbGwoZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUs
IG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSwgSklUVHlwZTo6REZHSklUKSwgb3AsIGtpbmQs
IHBjLT5zaXplKCksIGNhbGxUYXJnZXQsCisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpLCByZWdpc3Rlck9m
ZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CiB9CiAKIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVz
LCBOb2RlKiBjYWxsVGFyZ2V0KQpAQCAtMTMyMSw3ICsxMzU4LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cmVmaW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5v
ZGUqIGNhbGwKIH0KIAogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDYWxsKAotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAg
IE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwKICAgICBDYWxsTGlu
a1N0YXR1cyBjYWxsTGlua1N0YXR1cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKQEAg
LTE2MzcsNyArMTY3NCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3Qo
Q2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFu
dCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9u
QmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3ZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBD
YWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29u
dGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAg
ICBjb25zdCBJbnN0cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJ
bnN0cnVjdGlvbjsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2lu
ZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwpAQCAtMTY3
MSw3ICsxNzA4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EKICAgICBzaXplX3QgYXJndW1l
bnRQb3NpdGlvblN0YXJ0ID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUoKTsKIAog
ICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQotICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0YWNr
VG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0KS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgcmVz
dWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCk7CiAKICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbGVl
LmlzQ2xvc3VyZUNhbGwoKSkgewpAQCAtMTgyMyw3ICsxODYwLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgQ2EKICAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IHNhdmVkQ3VycmVudEluc3RydWN0
aW9uOwogfQogCi1CeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFz
aWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQorQnl0
ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZh
cmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJn
dW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0
SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25C
bG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICBD
b25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIApAQCAtMTkwMCw3ICsxOTM3LDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKICAgICByZXR1cm4gQ2FsbE9wdGltaXphdGlvblJl
c3VsdDo6SW5saW5lZDsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lu
bGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAorYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBPcGVyYW5kIHJlc3VsdCwKICAgICBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtT
dGF0dXMsIGludCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNP
ZmZzZXQsCiAgICAgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkK
QEAgLTIwNDQsNyArMjA4MSw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjpnZXRJbmxpbmlu
Z0JhbGFuY2UoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzCiB9CiAKIEJ5dGVD
b2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZygKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAorICAgIE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5r
U3RhdHVzLAogICAgIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1
bWVudCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgQnl0ZWNvZGVJ
bmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtp
bmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCkBAIC0yMjIwLDcgKzIyNTcsNyBAQCBCeXRl
Q29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5
cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIEFTU0VSVChvcCA9PSBBcml0aE1pbiB8fCBvcCA9PSBB
cml0aE1heCk7CiAKQEAgLTIyNTAsNyArMjI4Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lz
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljIGludHJp
bnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcykKIHsKICAgICBWRVJCT1NFX0xPRygiICAgICAgIFRoZSBpbnRyaW5zaWMgaXMgIiwgaW50
cmluc2ljLCAiXG4iKTsKIApAQCAtMjM4OSwyNyArMjQyNiwxMSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSQogICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOiB7CiAgICAgICAgICAg
ICBpbnNlcnRDaGVja3MoKTsKIAotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kOwotICAg
ICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlWYWx1
ZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWM6
Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlLZXlzSW50cmluc2ljOgotICAg
ICAgICAgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBr
aW5kID0gSXRlcmF0aW9uS2luZDo6S2V5czsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQXJyYXlFbnRyaWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBl
ZEFycmF5RW50cmllc0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9u
S2luZDo6RW50cmllczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9wdGlvbmFsPEl0
ZXJhdGlvbktpbmQ+IGtpbmQgPSBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhpbnRyaW5zaWMp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFraW5kKTsKIAogICAgICAgICAgICAgLy8g
QWRkIHRoZSBjb25zdGFudCBiZWZvcmUgZXhpdCBiZWNvbWVzIGludmFsaWQgYmVjYXVzZSB3ZSBt
YXkgd2FudCB0byBpbnNlcnQgKHJlZHVuZGFudCkgY2hlY2tzIG9uIGl0IGluIEZpeHVwLgotICAg
ICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0
PHVpbnQzMl90PihraW5kKSkpOworICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0
YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90Pigqa2luZCkpKTsKIAogICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbiBleGlzdGluZyBlcnJvciBzdHJpbmcuCiAgICAgICAgICAg
ICB1bnNpZ25lZCBlcnJvclN0cmluZ0luZGV4ID0gVUlOVDMyX01BWDsKQEAgLTM2NDcsNyArMzY2
OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENo
ZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUq
IGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5v
ZGUqIGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSog
c2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQogewogICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0
aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zNjY2LDcgKzM2ODcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCiAK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhp
c05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNO
b2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgc3dpdGNoICh2
YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJp
bnNpYzogewpAQCAtMzc4MCw3ICszODAxLDcgQEAgc3RhdGljIHZvaWQgYmxlc3NDYWxsRE9NR2V0
dGVyKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhp
c05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1
bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBp
ZiAoIXZhcmlhbnQuZG9tQXR0cmlidXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM4
NTksNyArMzg4MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVzcGFj
ZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlv
biogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBPcGVyYW5kIHJlc3VsdCwgSW50
ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKICAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlIHR5cGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGUpKQpA
QCAtMzkxNiw3ICszOTM3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJh
eUNvbnN0cnVjdG9yKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAotICAgIE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rl
ck9mZnNldCwKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgSGFuZGxpbmcg
Y29uc3RhbnQgaW50ZXJuYWwgZnVuY3Rpb24gIiwgSlNWYWx1ZShmdW5jdGlvbiksICJcbiIpOwpA
QCAtNjYwNCwyMCArNjYyNSw0MjcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBMQVNUX09Q
Q09ERShvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwogICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOiB7CiAgICAgICAgICAg
ICBoYW5kbGVWYXJhcmdzQ2FsbDxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlv
biwgQ29uc3RydWN0VmFyYXJncywgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7CiAgICAgICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVj
dGlvbiwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBjYWxs
ZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NvbnN0cnVjdF92YXJhcmdzKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAg
ICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2FsbEV2YWw+KCk7CiAgICAgICAgICAgICBpbnQgcmVn
aXN0ZXJPZmZzZXQgPSAtYnl0ZWNvZGUubV9hcmd2OwogICAgICAgICAgICAgYWRkQ2FsbChieXRl
Y29kZS5tX2RzdCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0KGJ5
dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJl
ZGljdGlvbigpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAg
ICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbjogewor
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck9wZW4+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMgPSBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVzKTsKKyAgICAg
ICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9mSXRlcmF0aW9u
TW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5t
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAg
ICAgICAgQmFzaWNCbG9jayogZ2VuZXJpY0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKwor
ICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisK
KyAgICAgICAgICAgIE5vZGUqIHN5bWJvbEl0ZXJhdG9yID0gZ2V0RGlyZWN0KGJ5dGVjb2RlLm1f
c3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgYXV0byYgYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldCgpOworCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6
RmFzdEFycmF5ICYmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZh
bGlkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQg
Y29uZGl0aW9ucyB3ZSBuZWVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dy
YXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQpOworCisgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblN5bWJvbEl0ZXJh
dG9yRnVuY3Rpb24gPSBtX2dyYXBoLmZyZWV6ZShnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBl
U3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZS
ZW1haW5pbmdNb2RlcyA9PSAxKQorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNr
Q2VsbCwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRv
cik7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGZhc3RBcnJheUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAg
ICAgICAgICAgICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7
CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSoga25vd25JdGVyRnVuY3Rpb24gPSBhZGRUb0dy
YXBoKENvbXBhcmVFcVB0ciwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBz
eW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzQXJyYXkgPSBhZGRU
b0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcEluZm8oQXJyYXlUeXBlKSwgZ2V0KGJ5dGVjb2RlLm1f
aXRlcmFibGUpKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRh
ID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5j
aERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2Nr
KTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhbmRSZXN1bHQgPSBhZGRUb0dyYXBoKEFy
aXRoQml0QW5kLCBpc0FycmF5LCBrbm93bkl0ZXJGdW5jdGlvbik7CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gV2Uga25vdyB0aGUgYml0IGFuZCBjYW5ub3QgaGF2ZSBlZmZlY3RzIHNvIGl0J3Mg
b2sgdG8gZXhpdCBoZXJlLgorICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhbmRSZXN1bHQpOwor
ICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAv
LyBUaGUgYnJhbmNoIGFib3ZlIG1heSBoYXZlIG1hZGUgZXhpdCBpbnZhbGlkIGJ1dCBpdCdzIGFj
dHVhbGx5IG9rLgorICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgTm9kZSoga2luZE5vZGUg
PSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25LaW5k
OjpWYWx1ZXMpKSk7CisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBo
KE5ld0FycmF5SXRlcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihK
U0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwgZ2V0KGJ5
dGVjb2RlLm1faXRlcmFibGUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVy
bmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpG
aWVsZDo6S2luZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOworICAgICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX2l0ZXJhdG9yLCBpdGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9uZXh0LCBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgICAgICAgICAgICAg
Ly8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBh
Z2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1
cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAg
IHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1
bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBz
dGFydEluZGV4OworCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYykgeworICAgICAgICAgICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGdlbmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGdlbmVyaWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJD
YWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFnZW5lcmF0ZWRDYXNlKTsKKworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1p
bmFsaXR5ID0gaGFuZGxlQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oY3VycmVudEluc3RydWN0aW9uLCBD
YWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0
ZXJtaW5hbGl0eSwgdGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAgICAg
IHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgTm9kZSogaXRl
cmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogbm90T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRh
YmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9n
cmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFr
ZW4gPSBCcmFuY2hUYXJnZXQoaXNPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYnJhbmNo
RGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgo
SXNPYmplY3QsIGl0ZXJhdG9yKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9y
U3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIE9w
SW5mbyBpbmZvID0gT3BJbmZvKG1fZ3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5n
KSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgo
TGF6eUpTQ29uc3RhbnQsIGluZm8pOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRo
cm93U3RhdGljRXJyb3IsIE9wSW5mbyhFcnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2Fn
ZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gaXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMo
KTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFBy
ZWRpY3Rpb24oKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVj
b2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBuZXh0SW1wbCA9IG1f
dm0tPnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShuZXh0
SW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlw
ZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0g
Y3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlT
dGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250
ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsK
KworCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9uZXh0LCBw
cmVkaWN0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKG5leHRJbXBsKSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUs
IG9wY29kZUxlbmd0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2Nh
bHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0
byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0
aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZW5lcmF0
ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0
ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1Zh
bHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgcmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgLy8g
RG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdh
aW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1
cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBw
cm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1w
LCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5h
bCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0
SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAg
ICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJh
dG9yX29wZW4pOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7
CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yTmV4dD4oKTsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFk
YXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAg
ICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRp
b25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAg
ICAgICAgICAgQnl0ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAg
ICAgICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxP
YmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Js
b2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAg
ICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAg
ICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQg
Zm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5h
ZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAg
ICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyAhPSAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGhhc05leHQgPSBhZGRUb0dyYXBoKElzRW1wdHksIGdldChieXRlY29kZS5t
X25leHQpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRh
cmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJy
YXlCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAg
ICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7
CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZh
c3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4g
PSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaGFzTmV4dCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAg
ICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBOb2RlKiBpdGVyYXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQoZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSwgaXRlcmF0b3Ip
OworCisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVu
dGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJs
b2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGRvTG9hZEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0Nv
bnN0YW50KGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0g
YWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwg
aXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBo
KENvbXBhcmVTdHJpY3RFcSwgaW5kZXgsIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgQnJhbmNoRGF0YSogaXNEb25lQnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFk
ZCgpOworICAgICAgICAgICAgICAgICAgICBpc0RvbmVCcmFuY2hEYXRhLT50YWtlbiA9IEJyYW5j
aFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlzRG9uZUJyYW5jaERh
dGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oaXNEb25lQnJhbmNoRGF0YSksIGlzRG9u
ZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlN
b2RlKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAg
ICAgICAgYXV0byBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVj
b2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1
ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IG5vdERvbmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsK
KworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJu
YWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZp
ZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMyT25seSksIGdldChieXRlY29kZS5tX2l0ZXJh
dG9yKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhYmxlID0gZ2V0KGJ5dGVjb2Rl
Lm1faXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBidXR0ZXJmbHkgPSBhZGRU
b0dyYXBoKEdldEJ1dHRlcmZseSwgaXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBsZW5ndGggPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oYXJyYXlNb2RlLmFz
V29yZCgpKSwgaXRlcmFibGUsIGJ1dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGlzRG9uZSA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgaW5kZXgsIGxlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgLy8gVGhlIGFib3ZlIGNvbXBhcmUg
ZG9lc24ndCBwcm9kdWNlIGVmZmVjdHMgc2luY2Ugd2Uga25vdyBpbmRleCBhbmQgbGVuZ3RoIGFy
ZSBpbnQzMnMuCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAg
ICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5j
aERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJh
bmNoVGFyZ2V0KGlzRG9uZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+
bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZG9Mb2FkQmxvY2spOworICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBpc0RvbmUpOworICAgICAg
ICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGRv
TG9hZEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJ
bmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkp
LCBPcEluZm8oU3BlY0ludDMyT25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIG9uZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSkpOworICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJp
dGhBZGQsIGluZGV4LCBvbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZmFsc2VOb2Rl
ID0ganNDb25zdGFudChqc0Jvb2xlYW4oZmFsc2UpKTsKKworCisgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBjb3VsZCBjb25zaWRlciBtYWtpbmcgdGhpcyBub3QgdmFyYXJnLCBzaW5j
ZSBpdCBvbmx5IHVzZXMgdGhyZWUgY2hpbGQKKyAgICAgICAgICAgICAgICAgICAgLy8gc2xvdHMu
CisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQxOTIKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5
dGVjb2RlLm1faXRlcmFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
aW5kZXgpOworICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUg
cm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0
QnlWYWwgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV92YWx1ZSwgZ2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9kb25lLCBmYWxzZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJh
eUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBuZXdJ
bmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRv
bid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0
IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2Rl
SW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJ
bmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gUm9sbCBiYWNrIHRo
ZSBjaGVja3BvaW50LgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRl
eDsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBpc0RvbmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogdHJ1ZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbih0
cnVlKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGRvbmVJbmRleCA9IGpzQ29uc3RhbnQo
anNOdW1iZXIoLTEpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYm90dG9tTm9kZSA9IGpz
Q29uc3RhbnQoYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24pKTsKKwor
ICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tTm9kZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIHRydWVOb2RlKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRl
Y29kZS5tX2l0ZXJhdG9yKSwgZG9uZUluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBE
byBvdXIgc2V0IGxvY2Fscy4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBC
eXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9u
LT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJv
Y2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1
bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JU
ZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fY3VycmVu
dEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0
eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck5leHQ+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAg
ICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOwor
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFy
Z2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2Nr
ID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgT3BlcmFu
ZCBuZXh0UmVzdWx0ID0gT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yUmVz
dWx0ID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBi
cmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAg
ICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RP
YmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcElu
Zm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yUmVzdWx0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
ID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6
Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4g
b2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1f
Z3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8p
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5m
byhFcnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
ICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBhdXRvIHZhbHVlUHJlZGljaXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQo
Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6Omdl
dFZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVj
dEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBib3R0b21WYWx1ZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFs
dWVNYXRjaGluZ1NwZWN1bGF0aW9uKHZhbHVlUHJlZGljaXRpb24pKTsKKworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICBhdXRvKiBkb25lSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpLmVuc3VyZShkb25lSW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNz
VHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29t
cHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
YmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBj
dXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlk
KGJ5dGVjb2RlLm1fZG9uZSwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihkb25lSW1wbCksIGlkZW50aWZpZXJOdW1iZXIs
IGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAv
LyBTZXQgYSB2YWx1ZSBmb3IgbV92YWx1ZSBzbyB3ZSBkb24ndCB0aGluaworICAgICAgICAgICAg
ICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tVmFsdWUpOworICAgICAgICAgICAg
ICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAg
ICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGNvbnRp
bnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJh
bmNoVGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
QnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGdldChieXRlY29kZS5tX2RvbmUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBu
b3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byogdmFsdWVJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1w
bCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9n
cmFwaC5pZGVudGlmaWVycygpLmVuc3VyZSh2YWx1ZUltcGwpOworCisgICAgICAgICAgICAgICAg
ICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgp
OworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlT
dGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlR2V0QnlJZChieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZVByZWRpY2l0aW9uLCBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZhbHVlSW1wbCks
IGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAg
ICAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENhc2UpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBqc0NvbnN0YW50KEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBy
ZXN1bHQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIHJlc3VsdCk7CisK
KyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBy
dW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgor
ICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJ
bmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0sp
OworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAg
ICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0g
Y29udGludWF0aW9uOworICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfaXRlcmF0b3JfbmV4dCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVu
UG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5nZXRDb25zdGFudChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyKSk7CkBAIC03MTA3LDcg
Kzc1MzUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgLy8gbG9hZHMgZnJvbSB0aGUgc2NvcGUgcmVnaXN0ZXIgbGF0ZXIsIGFz
IHRoYXQgd291bGQgcHJldmVudCB0aGUgREZHIGZyb20gdHJhY2tpbmcgdGhlCiAgICAgICAgICAg
ICAvLyBieXRlY29kZS1sZXZlbCBsaXZlbmVzcyBvZiB0aGUgc2NvcGUgcmVnaXN0ZXIuCiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFNjb3Bl
PigpOwotICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSk7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICAg
ICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50
PEpTRnVuY3Rpb24qPigqbV92bSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gd2Vha0pTQ29u
c3RhbnQoZnVuY3Rpb24tPnNjb3BlKCkpOwpAQCAtNzQ4Niw3ICs3OTE0LDcgQEAgQnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssCiAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSwgLy8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAgIFZpcnR1
YWxSZWdpc3RlciByZXR1cm5WYWx1ZVZSLAorICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0LAogICAgIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwKQEAgLTc0
OTUsNyArNzkyMyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVT
dGFja0VudHJ5KAogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxl
ZEJsb2NrKHByb2ZpbGVkQmxvY2spCiAgICAgLCBtX2NvbnRpbnVhdGlvbkJsb2NrKGNvbnRpbnVh
dGlvbkJsb2NrKQotICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZVZSKQorICAgICwgbV9y
ZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZSkKICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5t
X2lubGluZVN0YWNrVG9wKQogewogICAgIHsKQEAgLTc1NjEsNyArNzk4OSw3IEBAIEJ5dGVDb2Rl
UGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAvLyBN
YWNoaW5lIGNvZGUgYmxvY2sgY2FzZS4KICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBieXRl
Q29kZVBhcnNlci0+bV9jb2RlQmxvY2spOwogICAgICAgICBBU1NFUlQoIWNhbGxlZSk7Ci0gICAg
ICAgIEFTU0VSVCghcmV0dXJuVmFsdWVWUi5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQoIXJl
dHVyblZhbHVlLmlzVmFsaWQoKSk7CiAgICAgICAgIEFTU0VSVCghaW5saW5lQ2FsbEZyYW1lU3Rh
cnQuaXNWYWxpZCgpKTsKIAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IDA7CkBAIC03OTc2
LDcgKzg0MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogCiAgICAgICAgICAgICAgICAgYXV0byBu
b2RlQW5kSW5kZXggPSBibG9jay0+ZmluZFRlcm1pbmFsKCk7Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQobm9kZUFuZEluZGV4Lm5vZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUpOworICAg
ICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZUFuZEluZGV4Lm5vZGUsIG5vZGVB
bmRJbmRleC5ub2RlLT5vcCgpID09IFVucmVhY2hhYmxlKTsKICAgICAgICAgICAgICAgICBibG9j
ay0+cmVzaXplKG5vZGVBbmRJbmRleC5pbmRleCArIDEpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKaW5kZXggZTdmNmU3NjI0NjY5YjMwMWY1YTAy
MDQ4YzI1ZDQ4MTVjM2ExMzM5ZC4uNjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0
MDJhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayog
YmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2lu
LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFz
aWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBu
b2RlT3JpZ2luLCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBOb2RlKiBsaXZlbmVz
c05vZGUgPSBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQp
OwogICAgICAgICBpZiAoIWxpdmVuZXNzTm9kZSkKQEAgLTMwMiwxMSArMzAyLDkgQEAgcHJpdmF0
ZToKICAgICAKICAgICB2b2lkIGpldHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2lj
QmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4pCiAg
ICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBP
cGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpl
dHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChpKSk7Ci0gICAgICAgIAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29u
ZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAga2VlcE9w
ZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpl
dHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7CisKICAg
ICAgICAgZml4SmV0dGlzb25lZFByZWRlY2Vzc29ycyhibG9jaywgamV0dGlzb25lZEJsb2NrKTsK
ICAgICB9CiAgICAgCkBAIC0zNTIsMTEgKzM1MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAv
LyBUaW1lIHRvIGluc2VydCBnaG9zdGllcyBmb3IgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBrZXB0
IGFsaXZlIGluIGNhc2Ugd2UgT1NSCiAgICAgICAgICAgICAvLyBleGl0IHByaW9yIHRvIGhpdHRp
bmcgdGhlIGZpcnN0QmxvY2sncyB0ZXJtaW5hbCwgYW5kIGVuZCB1cCBnb2luZyBkb3duIGEKICAg
ICAgICAgICAgIC8vIGRpZmZlcmVudCBwYXRoIHRoYW4gc2Vjb25kQmxvY2suCi0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAgICAg
IGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5v
ZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFi
bGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3Bl
cmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2lu
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJs
b2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm9wZXJhbmRGb3JJbmRleChpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2Vjb25kQmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBh
NmNjN2RlY2E3MDI0ODhmOGUxYzJhMGI2NzBiZjk5Zi4uNjAwMzMyZjE5MGZmOGI0MDQyY2Q1NDJh
Yjk1YjUwNTM2YWQ3YTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjc0LDYgKzI3NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ug
b3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNl
IG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9n
dWU6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDoKICAgICBjYXNlIG9wX3B1
dF90b19zY29wZToKQEAgLTMxMSw2ICszMTMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQog
ICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5l
OgogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNhc2UgaGFu
ZGxlVW5jYXVnaHRFeGNlcHRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuX3JldHVybl9s
b2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uOgogICAg
IGNhc2Ugb3BfY2FsbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfcmV0
dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0
aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXgg
MWE0ZGVjZGEwYzJkNzM2ODdlZmNmMzg4Yjg0ODJmYjBlYzY0N2M0Zi4uZGJjODMxYzJlYmUwODZm
ODczNjZhN2U1NGEzNWU1OTNhOWIwNzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNDExLDcgKzI0MTEsNyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBJZGVudGl0eVdpdGhQcm9maWxlOiB7Ci0gICAgICAgICAgICBu
b2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAppbmRleCBiZjQzNTBjNGNkMTdl
M2Q1MDA2NjM4ZjU1YWFjMzVhNTY1Mjk5NGExLi5kOWM5NzQyOGZkNmFlNWVhNTA2ZDA1NzI2NzMw
MjBkZDFhZmYxMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zv
ckFsbEtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxs
cy5oCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoYmVmb3JlSW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgaWYgKGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3Bv
aW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLmNoZWNr
cG9pbnQoKSAhPSBhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpKTsKLSAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9
PSBhZnRlci5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCksICJXaGVuIHRoZSBERkcgZG9lcyBjb2Rl
IG1vdGlvbiBpdCBzaG91bGQgY2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUg
c3Vycm91bmRpbmcgYnl0ZWNvZGVzLiIpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgo
KS5vZmZzZXQoKSB8fCBub2RlQWZ0ZXItPm9wKCkgPT0gRXhpdE9LIHx8IG5vZGVBZnRlci0+b3Ao
KSA9PSBJbnZhbGlkYXRpb25Qb2ludCwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0
IHNob3VsZCBjaGFuZ2UgdGhlIGZvckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGlu
ZyBieXRlY29kZXMuIik7CiAKICAgICAgICAgICAgIGF1dG8gbGl2ZUJlZm9yZSA9IHRtcExpdmVu
ZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBiZWZvcmUuYnl0ZWNvZGVJbmRleCgpKTsKICAg
ICAgICAgICAgIGF1dG8gbGl2ZUFmdGVyID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2Rl
QmxvY2ssIGFmdGVyLmJ5dGVjb2RlSW5kZXgoKSk7CkBAIC0xMDIsOCArMTAyLDYgQEAgdm9pZCBm
b3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUq
IG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIWFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCksICJUcmFuc2l0
aW9uaW5nIGFjcm9zcyBhIGNoZWNrcG9pbnQgYnV0IGJlZm9yZSBhbmQgYWZ0ZXIgZG9uJ3Qgc2hh
cmUgYW4gaW5saW5lQ2FsbEZyYW1lLiIpOwotCiAgICAgLy8gRGV0ZWN0IGtpbGxzIHRoZSBzdXBl
ciBjb25zZXJ2YXRpdmUgd2F5OiBpdCBpcyBraWxsZWQgaWYgaXQgd2FzIGxpdmUgYmVmb3JlIGFu
ZCBkZWFkIGFmdGVyLgogICAgIEJpdFZlY3RvciBsaXZlQWZ0ZXIgPSBncmFwaC5sb2NhbHNBbmRU
bXBzTGl2ZUluQnl0ZWNvZGUoYWZ0ZXIpOwogICAgIHVuc2lnbmVkIG51bUxvY2FscyA9IGdyYXBo
LmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5k
ZXggMjAyZDIyNTA1M2ZhOWRmYmU1YzIzYzY0YmNmOGJlMzg0ZTNlNzY1NC4uN2NjMzRhZTJkMGQ0
ZTVmODQ4ZTY5NTczMDI0OTJjMTIxZDcxZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTU5LDYgKzU5LDkg
QEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKEJhc2ljQmxvY2sq
IGJhc2ljQmxvY2spCiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2Fscygp
KTsKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxz
KCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFT
U0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNp
Y0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGJh
c2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51
bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMo
KSk7CiAKICAgICBtX2Fic3RyYWN0VmFsdWVzLnJlc2l6ZSgpOwogCkBAIC0xNjEsNiArMTY0LDEw
IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgfQorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1i
ZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQu
dG1wKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwudG1w
KGkpLmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJs
b2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CkBAIC0xNzUsMTMgKzE4Miw5
IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICBibG9j
ay0+Y2ZhVGhpbmtzU2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nID0gZmFsc2U7CiAgICAgICAgIGJs
b2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hl
ZDsKICAgICAgICAgYmxvY2stPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVj
dHVyZXNBcmVXYXRjaGVkOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBibG9j
ay0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+
dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7
ICsraSkgewotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigp
OwotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWRbaV0uY2xlYXIoKTsKKyAgICAg
ICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0uY2xlYXIoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMjM5LDcgKzI0Miw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2lj
QmxvY2soKQogICAgICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNl
IEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFs
dWUgZnJvbSBoZWFkIHRvIHRhaWwuCi0gICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSB2YXJp
YWJsZUF0KGluZGV4KTsKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGF0SW5kZXgoaW5k
ZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIApAQCAtMzA0LDcgKzMwNyw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJh
c2ljQmxvY2soKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gdmFyaWFibGVB
dChpKTsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0gPSBhdEluZGV4KGkpOwog
ICAgICAgICB9CiAKICAgICAgICAgZm9yIChOb2RlQWJzdHJhY3RWYWx1ZVBhaXImIHZhbHVlQXRU
YWlsIDogYmxvY2stPnNzYS0+dmFsdWVzQXRUYWlsKQpAQCAtMzQzLDYgKzM0Niw3IEBAIGJvb2wg
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sq
IHRvKQogICAgICAgICBkYXRhTG9nKCIgICBNZXJnaW5nIGZyb20gIiwgcG9pbnRlckR1bXAoZnJv
bSksICIgdG8gIiwgcG9pbnRlckR1bXAodG8pLCAiXG4iKTsKICAgICBBU1NFUlQoZnJvbS0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5u
dW1iZXJPZkFyZ3VtZW50cygpKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51
bWJlck9mTG9jYWxzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsK
KyAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IHRvLT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkpOwogICAgIAogICAgIGJvb2wgY2hhbmdlZCA9
IGZhbHNlOwogICAgIApAQCAtMzUyLDE0ICszNTYsOSBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAKICAgICBz
d2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7CiAgICAgY2FzZSBUaHJlYWRlZENQUzogewotICAgICAg
ICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgZnJvbS0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJndW1lbnQpIHsKLSAgICAgICAgICAgIEFic3Ry
YWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVu
dCk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRl
c3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpLCB0by0+dmFy
aWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmFy
Z3VtZW50KGFyZ3VtZW50KSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6
ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2Nh
bHMoKTsgKytsb2NhbCkgewotICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24g
PSB0by0+dmFsdWVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFp
bC5sb2NhbChsb2NhbCksIHRvLT52YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpLCBmcm9tLT52
YXJpYWJsZXNBdFRhaWwubG9jYWwobG9jYWwpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5zaXplKCk7ICsraW5kZXgpIHsKKyAg
ICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5h
dChpbmRleCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxv
Y2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpLCB0by0+dmFyaWFi
bGVzQXRIZWFkLmF0KGluZGV4KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmF0KGluZGV4KSk7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDE4NjVlNmExZWZmYzNk
YWFlZmU1ODRjYTg2MmM0OWJjMzY4NTg1MDAuLmM1ZDAyNjg3M2UwMTBkMDdmMzgxMWM2YzRmZWY1
NjZlMWNhNzBmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmgKQEAgLTE1OCwxMCArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAK
ICAgICBPcGVyYW5kczxBYnN0cmFjdFZhbHVlPiYgdmFyaWFibGVzRm9yRGVidWdnaW5nKCk7CiAK
KyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMuc2l6ZSgpOyB9
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3Zhcmlh
Ymxlcy5udW1iZXJPZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMo
KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5z
aWduZWQgbnVtYmVyT2ZUbXBzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZU
bXBzKCk7IH0KICAgICAKLSAgICBBYnN0cmFjdFZhbHVlJiB2YXJpYWJsZUF0KHNpemVfdCBpbmRl
eCkKKyAgICBBYnN0cmFjdFZhbHVlJiBhdEluZGV4KHNpemVfdCBpbmRleCkKICAgICB7CiAgICAg
ICAgIGFjdGl2YXRlVmFyaWFibGVJZk5lY2Vzc2FyeShpbmRleCk7CiAgICAgICAgIHJldHVybiBm
YXN0Rm9yd2FyZChtX3ZhcmlhYmxlc1tpbmRleF0pOwpAQCAtMTY5LDE3ICsxNzEsMTcgQEAgcHVi
bGljOgogCiAgICAgQWJzdHJhY3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpCiAgICAg
ewotICAgICAgICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3Bl
cmFuZCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgo
b3BlcmFuZCkpOwogICAgIH0KICAgICAKICAgICBBYnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3Qg
aW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5sb2Nh
bEluZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLmxvY2Fs
SW5kZXgoaW5kZXgpKTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQo
c2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJs
ZXMuYXJndW1lbnRJbmRleChpbmRleCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3Zhcmlh
Ymxlcy5hcmd1bWVudEluZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIC8vIENhbGwgdGhp
cyBiZWZvcmUgYmVnaW5uaW5nIENGQSB0byBpbml0aWFsaXplIHRoZSBhYnN0cmFjdCB2YWx1ZXMg
b2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAppbmRleCBmNWVl
ZjJmM2RmNzIxMjlhODM4Yzc2ODZlMjZiOTYwYjUwZjU4MWVlLi43YTMzNjY2YWE3MWExZjY2NmM5
NGIyOGI2NDQ3NDg0ZDY3YmJiN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xhenlKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
YXp5SlNWYWx1ZS5oCkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGF6eUpT
VmFsdWUgbmV3U3RyaW5nKEdyYXBoJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBMYXppbmVzc0tp
bmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtub3duVmFsdWUgPyBTcGVj
Qnl0ZWNvZGVUb3AgOiBTcGVjU3RyaW5nOyB9CiAgICAgCiAgICAgRnJvemVuVmFsdWUqIHRyeUdl
dFZhbHVlKEdyYXBoJikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcAppbmRleCBhODUyZGJkZDliOTM3MGQ2ZGU2NTNjNWE0ODg3MTE3MDBlOGI4Nzli
Li41MjIzNGI0YTVkM2Y2OTc2YzJmYTk5ODE2ZGNlMTEwNjgxMDU0ZWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTQ4LDExICs0OCwxMiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQg
a2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlIHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFt
SW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgpCitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5k
IGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVh
bUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4LCB1bnNpZ25lZCBkZmdJUkluZGV4KQogICAg
IDogT1NSRXhpdEJhc2Uoa2luZCwgaml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2lu
LnNlbWFudGljLCBqaXQtPm1fb3JpZ2luLndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3Vy
Y2UoanNWYWx1ZVNvdXJjZSkKICAgICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAg
ICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUluZGV4KQorICAgICwgbV9kZmdJUkluZGV4KGRm
Z0lSSW5kZXgpCiAgICAgLCBtX3N0cmVhbUluZGV4KHN0cmVhbUluZGV4KQogewogICAgIGJvb2wg
Y2FuRXhpdCA9IGppdC0+bV9vcmlnaW4uZXhpdE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaAppbmRleCA5ZTliY2VhNDgxYzFkNjg3Nzk3MmYyNTlkNjJjMWEyMzAwYjJiMTYx
Li44Y2U4YjkyMDc5YWY3NTI5OTcwM2YxN2ZkZGFlMmZlYzNiOWMyOGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSos
IHZvaWQqLCB2b2lkCiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhl
IHNwZWN1bGF0aXZlIHBhdGggYnkKIC8vIGdvaW5nIGludG8gYmFzZWxpbmUgY29kZS4KIHN0cnVj
dCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBK
U1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJ
VCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9N
QVgpOworICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVu
c2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01BWCwgdW5zaWduZWQgZGZnSVJJbmRleCA9IFVJ
TlRfTUFYKTsKIAogICAgIGZyaWVuZCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGls
ZU9TUkV4aXQoQ2FsbEZyYW1lKik7CiAKQEAgLTE1OSw2ICsxNTksNyBAQCBzdHJ1Y3QgT1NSRXhp
dCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZSBtX3ZhbHVlUHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7Cisg
ICAgdW5zaWduZWQgbV9kZmdJUkluZGV4OwogCiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVy
bmFsUHRyVGFnPiBjb2RlTG9jYXRpb25Gb3JSZXBhdGNoKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApp
bmRleCAxZGYzOTQzMjQxZDVhZjc5MzE5OGVmOWM3MTI3M2U3NThhMGEyMjZhLi4wODVkYzUzMGIz
YmMzNzlmYjRmM2U2MDkxY2I1YzY1MjAyNzU4N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xNTksOSAr
MTU5LDE1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1
cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9M
T0NBVElPTihuYW1lKSAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lk
ZTE2Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxs
SW5zdHJ1Y3Rpb24uaXNXaWRlMzIoKSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRy
eVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpKQogCiAgICAgICAgIHN3aXRjaCAodHJ1
ZUNhbGxlckNhbGxLaW5kKSB7Ci0gICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgot
ICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsK
KyAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6IHsKKyAgICAgICAgICAgIGlmIChj
YWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9jYWxsKQorICAgICAgICAgICAgICAgIGp1
bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgICAgICBl
bHNlIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9vcGVuKQor
ICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRl
cmF0b3Jfb3Blbik7CisgICAgICAgICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2Rl
SUQoKSA9PSBvcF9pdGVyYXRvcl9uZXh0KQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBM
TElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3JfbmV4dCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0Ogog
ICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1
Y3QpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzksNiArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2sKICAgICAgICAgfQogICAgIH0KIAorICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsK
ICAgICByZXR1cm4ganVtcFRhcmdldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAy
MTAwM2VkNWZkM2ZiYzM4MTYyYzg5MmIzNGM4NDdiOTI3NjgzZmFlLi42ZTA5MGEzOGJmYzA5NDc1
YTdkN2JkNTkxZTI1MWEzZTkzNDY4NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTEw
MSw2ICsxMTAxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jaGls
ZDEoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVV
c2VzQXNJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNl
IExhenlKU0NvbnN0YW50OiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5v
ZGUtPmxhenlKU1ZhbHVlKCkuc3BlY3VsYXRlZFR5cGUoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIENh
bGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBUb1N0cmluZzoKQEAgLTEzMDUsNyAr
MTMxMSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBS
ZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6CiAg
ICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBu
ZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uCiAgICAgICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbV9jdXJyZW50Tm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSBkdXJp
bmcgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAppbmRleCAwZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5
OGNiLi45YWU5ODA0Yzc1Yjk1ZWM1NjFlZDJmMWE1MmI5ZGVjOThjODQ1ZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNzEsNiArNzEsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBkYXRhTG9nRigiKSA9PSAoJXMgPSAiLCAjcmlnaHQpOyBcCiAgICAg
ICAgICAgICBkYXRhTG9nKHJpZ2h0KTsgXAogICAgICAgICAgICAgZGF0YUxvZ0YoIikgKCVzOiVk
KS5cbiIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgICAgIGRhdGFMb2coIlxuXG5c
biIpOyBcCisgICAgICAgICAgICBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG51bGxwdHIp
LT5kdW1wQnl0ZWNvZGUoKTsgXAogICAgICAgICAgICAgZHVtcEdyYXBoSWZBcHByb3ByaWF0ZSgp
OyBcCiAgICAgICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJ
TkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgI2xlZnQgIiA9PSAiICNyaWdodCk7IFwKICAgICAg
ICAgICAgIENSQVNIKCk7IFwKQEAgLTU2OCw2ICs1NzAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIE9wZXJhbmRzPHNpemVfdD4gZ2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9j
ay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4gc2V0TG9j
YWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAg
ICAgICAgIAorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFi
bGVzQXRIZWFkLm51bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChp
KSB8fCBibG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBo
KSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQor
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFi
bG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLnRt
cChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CisKKyAgICAgICAgICAgICAgICBnZXRMb2Nh
bFBvc2l0aW9ucy50bXAoaSkgPSBub3RTZXQ7CisgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3Np
dGlvbnMudG1wKGkpID0gbm90U2V0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRz
KCk7ICsraSkgewogICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudEluY2x1ZGluZ1RoaXMoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
YXJndW1lbnQoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNz
ZXNTdGFjayhtX2dyYXBoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09
IFRocmVhZGVkQ1BTKQpAQCAtNzE2LDYgKzcyNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IExvYWRTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBjaGVja09wZXJhbmQoCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0
aW9ucywgc2V0TG9jYWxQb3NpdGlvbnMsIE9wZXJhbmQ6OnRtcChpKSk7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBjaGVja09w
ZXJhbmQoCiAgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0
TG9jYWxQb3NpdGlvbnMsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhp
KSk7CkBAIC05NDQsNyArOTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tPcGVyYW5k
KAogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jaywgT3BlcmFuZHM8c2l6ZV90PiYgZ2V0TG9jYWxQ
b3NpdGlvbnMsCi0gICAgICAgIE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9j
YWxQb3NpdGlvbnMsIE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChnZXRMb2Nh
bFBvc2l0aW9ucy5vcGVyYW5kKG9wZXJhbmQpID09IG5vdFNldCkKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggNGE4YjFlNTgxNDQx
ZmRhNjg3NmU2NTJjOTg0NjAxYTJiM2I3OWQzNC4uOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYy
ODc5YzE2YjEwYzgzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAg
LTEzNyw2ICsxMzcsNyBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiR2V0QnlWYWxIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
KyNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIK
ICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgppbmRleCA3Y2QxNWQz
MTVkNjM5MGFiYTI2MzVlOTYzNTlmODkwZTJlYjcxYTk1Li5jMDc3NWQ4ZTFiMTA1MDJkZjAxYTc0
YWYwYzZkZWI0YTg3NWNjNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL01ldGFkYXRhLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
TWV0YWRhdGEucmIKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgTWV0YWRhdGEKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTWV0YWRhdGEpOwogCiAgICAgcHVibGljOgorICAgICAgICAje29w
Lm9wY29kZUlEfQogICAgICAgICBNZXRhZGF0YShjb25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9
JiN7IiBfX29wIiBpZiBpbml0c30pI3tpbml0c30geyB9CiAKICN7ZmllbGRzfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCmluZGV4IDliNWVlOTA5NmVlNzFiMWIw
ZDNlZDdmN2NkMThkYjA2ZmNiMzVmY2YuLjdmNDMwMmQ4ODJlZjZmMzU5NTc2NzdlZGNmMDQ5ZDMy
NmY5NjQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2Vj
dGlvbi5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIK
QEAgLTUzLDcgKzUzLDE3IEBAIGNsYXNzIFNlY3Rpb24KICAgZW5kCiAKICAgZGVmIHNvcnQhCi0g
ICAgICBAb3Bjb2RlcyA9IEBvcGNvZGVzLnNvcnQgeyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8g
PyBiLm1ldGFkYXRhLmVtcHR5PyA/IDAgOiAxIDogLTEgfQorICAgICAgQG9wY29kZXMgPSBAb3Bj
b2Rlcy5zb3J0IHsgfGEsIGJ8CisgICAgICAgICAgcmVzdWx0ID0gbmlsCisgICAgICAgICAgaWYg
YS5jaGVja3BvaW50cyBvciBiLmNoZWNrcG9pbnRzCisgICAgICAgICAgICAgIHJhaXNlICJCeXRl
Y29kZXMgd2l0aCBjaGVja3BvaW50cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3thLm5hbWV9IiBp
ZiBhLmNoZWNrcG9pbnRzIGFuZCBhLm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICByYWlz
ZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7Yi5u
YW1lfSIgaWYgYi5jaGVja3BvaW50cyBhbmQgYi5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAg
ICAgcmVzdWx0ID0gYS5jaGVja3BvaW50cyA/IGIuY2hlY2twb2ludHMgPyAwIDogLTEgOiAxCisg
ICAgICAgICAgZWxzaWYKKyAgICAgICAgICAgICAgcmVzdWx0ID0gYS5tZXRhZGF0YS5lbXB0eT8g
PyBiLm1ldGFkYXRhLmVtcHR5PyA/IDAgOiAxIDogLTEgCisgICAgICAgICAgZW5kCisgICAgICAg
ICAgcmVzdWx0CisgICAgICB9CiAgICAgICBAb3Bjb2Rlcy5lYWNoKCY6Y3JlYXRlX2lkISkKICAg
ZW5kCiAKQEAgLTczLDYgKzgzLDE5IEBAIGNsYXNzIFNlY3Rpb24KICAgICAgIGVuZAogCiAgICAg
ICBpZiBjb25maWdbOmVtaXRfaW5fc3RydWN0c19maWxlXQorICAgICAgICAgIGkgPSAwCisgICAg
ICAgICAgd2hpbGUgdHJ1ZQorICAgICAgICAgICAgICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50
cworICAgICAgICAgICAgICAgICAgcHJpbnQoIkZPVU5EIFRIRSBOVU1CRVIgT0YgQ0hFQ0tQT0lO
VFMgQU5EIEknTSBQUklOVElORyBJVCBJTlRPIFRIRSBGSUxFIFdJTkRPV1MhIikKKyAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiXG4iCisgICAgICAgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUg
TlVNQkVSX09GXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVudF19X1dJVEhfQ0hFQ0tQT0lO
VFMgI3tpfVxuIgorICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZW5kCisK
KyAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgZW5kCisgICAgICAgICAgb3V0IDw8ICJc
biIKKwogICAgICAgICAgIG91dC53cml0ZSgiI2RlZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFj
cm9fbmFtZV9jb21wb25lbnRdfV9NRVRBREFUQV9TSVpFKG1hY3JvKSBcXFxuIikKICAgICAgICAg
ICBpID0gMAogICAgICAgICAgIHdoaWxlIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCBjNmU2MWI4OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmLi44YjNhMjM4YTRk
YWYxZmM2NzkxNDBkOGJiZWM3NzA5Yjg1NjhiYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBtX2xhYmVsc1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCldID0gbGFiZWwoKTsK
IAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9n
TG4oIk9sZCBKSVQgZW1pdHRpbmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9m
ZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFz
ZWxpbmUgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZz
ZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKQEAgLTQzOCw2ICs0MzgsOSBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9n
ZXRfaW50ZXJuYWxfZmllbGQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfaW50ZXJuYWxfZmll
bGQpCiAKKyAgICAgICAgREVGSU5FX09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklO
RV9PUChvcF9pdGVyYXRvcl9uZXh0KQorCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAg
ICAgIERFRklORV9PUChvcF9yc2hpZnQpCiAgICAgICAgIERFRklORV9PUChvcF91bnNpZ25lZCkK
QEAgLTUyNSw3ICs1MjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQog
ICAgICAgICAgICAgcmFyZUNhc2VQcm9maWxlID0gJnJhcmVDYXNlUHJvZmlsZXMuYXQoYnl0ZWNv
ZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJv
c2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZv
ciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkp
OworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRpbmcgc2xvdyBjb2Rl
IGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0
KCkpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNz
ZW1ibGVyLT5zZXRGb3JCeXRlY29kZVNsb3dQYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwg
bGFiZWwoKSk7CkBAIC01ODksNiArNTkyLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3RvX3Njb3BlKQogCisgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19P
UCh1bnNpZ25lZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5jKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChkZWMpCkBAIC02MjYsOCArNjMyLDggQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQXQgIiwgZmlyc3RUbywgIiBzbG93OiAiLCBp
dGVyIC0gbV9zbG93Q2FzZXMuYmVnaW4oKSwgIlxuIik7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUbyAhPSBp
dGVyLT50bywgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIp
OwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUbyA9PSAoaXRlciAt
IDEpLT50bywgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMu
ZW5kKCkgfHwgZmlyc3RUby5vZmZzZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91
Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5v
ZmZzZXQoKSwgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAg
ICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcygmcmFyZUNhc2VQcm9maWxl
LT5tX2NvdW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxMTgy
YWEwNzI5YTI3NDkxMDA0ZjQ1ZTFlYTZhYzEuLjgzYWUxYTdiNjk4ZDY5MzNkYmI4YTAzNzE5MDQ5
ZWMyMjU4MThmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk3LDYgKzI5Nyw5IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25I
YW5kbGVycygpOwogCisgICAgICAgIHZvaWQgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAgICAg
dm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CisKICAgICAgICAgdm9p
ZCBhZGRTbG93Q2FzZShKdW1wKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1w
TGlzdCYpOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKCk7CkBAIC02NzYsNiArNjc5LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1
bmN0aW9uKTsKIAorICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKwogICAgICAgICB2b2lkIGVtaXRSaWdodFNo
aWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBl
bWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKQEAgLTkxMSw2ICs5MTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsK
ICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsKKyAgICAgICAgSGFzaE1hcDxCeXRlY29k
ZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50TGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0
QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yPiBtX2dldEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAKaW5kZXggZTFlNTY1ZGM1MjQ5ZjZhY2ZkYWEyNGJmZmI0NDcxZmZjYjIwYjg2Ni4uMDI2
MTQ3NmU5NmExOGE5OTA1MThkMDg3ZTQ5ZDEzNDQ1NzI2ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgorI2lu
Y2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
U2h1ZmZsZXIuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRJbmxpbmVz
LmgiCkBAIC00Miw4ICs0NCw4IEBACiAjaW5jbHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUuaCIKICNp
bmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgot
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCisjaW5jbHVkZSA8d3RmL1N0cmlu
Z1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSw3ICs1Myw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9w
JiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2RzdCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbkZvcihieXRlY29k
ZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCksIHJlZ1Qw
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC02MSwyMCArNjMsMjEgQEAgc3RkOjpl
bmFibGVfaWZfdDwKICwgdm9pZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5
dGVjb2RlLCBDYWxsTGlua0luZm8qKQogeworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnQgPSBtX2J5
dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBhcmdDb3VudCA9IGJ5dGVjb2RlLm1fYXJn
YzsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5t
X2FyZ3YpOworICAgIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPSBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludCk7CisgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0
ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfY2FsbCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0SW5jbHVkaW5nVGhpcygwKSksIHJlZ1QwKTsKICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNo
SWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0
YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1
Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQcm9maWxlRm9yKG1ldGFk
YXRhLCBjaGVja3BvaW50KS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAg
ICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdp
c3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
LCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyks
IEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBh
eWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIH0KIAogCkBAIC0yMDcs
NyArMjEwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIHsKICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5tX2NhbGxlZTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2J5dGVj
b2RlSW5kZXguY2hlY2twb2ludCgpKTsKIAogICAgIC8qIENhbGxlciBhbHdheXM6CiAgICAgICAg
IC0gVXBkYXRlcyBjYWxsRnJhbWVSZWdpc3RlciB0byBjYWxsZWUgY2FsbEZyYW1lLgpAQCAtMjM0
LDkgKzIzNyw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogICAgIHN0b3Jl
NjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKIAotICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKSB7Cisg
ICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBK
dW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVz
c09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CkBAIC0zODAs
NiArMzgyLDE4NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGNvbXBpbGVPcENhbGxT
bG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5r
SW5mb0luZGV4KyspOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChb
Jl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAg
IGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3c7CisgICAg
ICAgIGNhc2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTY7Cisg
ICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzI7
CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IH0KKyAgICB9KSgpOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlv
bik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90
RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgY29tcGlsZU9wQ2Fs
bDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7Cisg
ICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoaXRlcmF0b3IpIGlz
IGluIHJlZ1QwCisKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZ2bSgpLnByb3BlcnR5
TmFtZXMtPm5leHQ7CisgICAgCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
KTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX25leHQpOworCisgICAgZmFzdENhc2UubGluayh0aGlzKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JP
cGVuPihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0
SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKworCisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4
dDsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5l
eHQuaW1wbCgpOworCisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1tt
X2dldEJ5SWRJbmRleCsrXTsKKyAgICAKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24g
PSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAg
ICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93Owor
ICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2
OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lk
ZTMyOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfSkoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9uZXh0LCByZWdUMCk7CisgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHko
cmVnVDApOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGlu
c3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
dHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWws
IEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgZ2VuZXJpY0Nhc2UubGluayh0
aGlzKTsKKyAgICBvcjgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpKSwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX2l0ZXJhdGlvbk1l
dGFkYXRhLnNlZW5Nb2RlcykpOworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck5leHQ+KGlu
c3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVk
KCk7CisgICAgLy8gY2FsbCByZXN1bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09iamVjdCkgaW4gcmVn
VDAKKworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBpdGVyUmVzdWx0
R1BSID0gcmVnVDI7CisgICAgR1BSUmVnIGRvbmVHUFIgPSByZWdUMTsKKyAgICAvLyBpdGVyUmVz
dWx0R1BSIHdpbGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0IGdldCBieSBpZCBiZWxvdy4KKyAg
ICBtb3ZlKHZhbHVlR1BSLCBpdGVyUmVzdWx0R1BSKTsKKworICAgIHsKKyAgICAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFJlZ2lzdGVy
U2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCk7CisgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKKyAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+
bmV4dC5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9u
ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9kb25lLCBkb25lR1BSKTsKKyAgICAgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICB9CisK
KworICAgIHsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7CisgICAgICAgIEdQUlJl
ZyBzY3JhdGNoMiA9IHJlZ1QzOworICAgICAgICBjb25zdCBib29sIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGZhbHNlOworICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25l
ID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBz
Y3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIp
LCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOworCisgICAgICAgIGl0ZXJhdGlv
bkRvbmUubGluayh0aGlzKTsKKyAgICB9CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7Cisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJ
dGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwor
ICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7CisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAg
R1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKworICAgICAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOworICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5h
cHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0
LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CisKKyAgICAgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsK
KyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJ
bmRleCsrXTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworCisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JD
aGVja3BvaW50KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0KKwor
ICAgIHsgICAKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlVlJlZyA9IGJ5dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIEdQUlJlZyBp
dGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50
ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0Jp
dHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKKyAgICB9CisKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmlu
ZGV4IDkwNjk2Y2JlYzEwZTM5M2I5OTcwZjBlYjIwMTE4ZDIxOTc0YzM1MjUuLmQxNDBhYWM5YmUy
ZDU0MDNkMWJjMGQ5OTEyYWU5ZTEwNWY4MGQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUUKICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAppbmRleCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUxYmEyNzU2
NTUzM2Y0Li4yN2E1N2Y0ZWUzNjE2NGFjZThlMzlmMzY4Y2U3NjViZjE1ZGRmYzdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdt
YSBvbmNlCiAKICNpZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5o
IgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTA1LDcgKzEw
Nyw3IEBAIEFMV0FZU19JTkxJTkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENhbGwoQ29k
ZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVU
b3BDYWxsRnJhbWUoKQogewotICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0g
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLmJpdHMoKTsKICAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3Qg
Y2xlYXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0
aGUgdG9wIGNhbGwgZnJhbWUgb24KQEAgLTE4Myw2ICsxODUsMjUgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpJVDo6aGFzQW55U2xvd0Nhc2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5PiYgc2xvd0Nhc2Vz
LCBWZWN0b3IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6Y2hlY2tw
b2ludFJlYWNoZWQoKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4
LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRo
IGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0
ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5
dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fY2hl
Y2twb2ludExhYmVscy5hZGQobV9ieXRlY29kZUluZGV4LCBsYWJlbCgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wIGp1bXApCit7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBi
ZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVj
b2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAx
KTsKKworICAgIGF1dG8gaXRlciA9IG1fY2hlY2twb2ludExhYmVscy5maW5kKG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgQVNTRVJUKGl0ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxzLmVuZCgpKTsKKyAg
ICBqdW1wLmxpbmtUbyhpdGVyLT52YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OmFkZFNsb3dDYXNlKEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQobV9ieXRlY29kZUlu
ZGV4KTsgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29s
ZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldC4KQEAgLTMx
OSw3ICszNDAsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoTWV0
YWRhdGEmIG1ldGFkYXRhKQogewogICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YS5tX3Byb2Zp
bGUpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodmFsdWVQcm9maWxlRm9yKG1ldGFkYXRh
LCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJ
RCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2FlMTUwY2M2NjEwNzYyYmFj
YzhiZTQyMjA3M2FhZDY0YWIzMTE5MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMzZGZiYmYwZTMzNjBk
MzZmNTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC0xMzQsNiArMTM0LDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgQVNTRVJU
KHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBh
biBvYmplY3QuIl9zKTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxB
cml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCA4ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1Li45ZmNj
NDFkZWM0NTgyYzk2NTI5MjM2NTVkYThmMzAyNjk1ZGY3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9t
Q2FsbGVyRnJhbWUoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVk1IYW5kbGVFeGNlcHRpb24oVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmpl
Y3QqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVy
YXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogCiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IoQ29kZUJs
b2NrKikgV1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxB
cml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggOGRlYTdmMjc4ZTc2NjJl
NTAzMTRjZWI5YjA4MzM5Zjg3YmZkYTQ5Ny4uNjg2ODllODMzODMzYjE1NmRmYzgwOWQwMTJhMDc5
NjcxYzRmNzc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVBy
b2ZpbGVGb3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDaGVja3BvaW50
T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIK
QEAgLTgyLDYgKzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7
IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKICAgICBTbG93UGF0aEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIGRhdGFMb2dMbklmKExMSU5UX1RSQUNJ
TkcgJiYgT3B0aW9uczo6dHJhY2VMTEludFNsb3dQYXRoKCksICJDYWxsaW5nIHNsb3cgcGF0aCAi
LCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsgXAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pCiAKICNpZm5kZWYgTkRFQlVHCkBAIC02OTMsNyArNjk1LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiB9CiAKIAotc3Rh
dGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJv
cGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNl
dHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgR2V0QnlJ
ZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYg
c2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3NDMsMzkgQEAgc3Rh
dGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCi0g
ICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJl
KTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zm
c2V0LCBzbG90LnNsb3RCYXNlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0UHJvdG9Mb2Fk
TW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKICAgICAgICAgfQogICAg
IH0KICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi0KLUxMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3Jt
TExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAg
TExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsK
LSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXQpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0
KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OwotICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7Ci0g
ICAgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCiAgICAgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgp
CiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQogICAgICAgICAmJiAhc2xvdC5pc1Vuc2V0
KCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQ7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRC
eUlkTW9kZTo6RGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAg
ICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpVbnNl
dDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlByb3RvTG9hZDoKLSAgICAgICAgICAg
ICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IDA7CkBA
IC03OTksMzUgKzc5NiwxMDMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9i
eV9pZCkKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlVmFsdWUpIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2spOwogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0
aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJU
b0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5jbGVhclRv
RGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKIAogICAgICAgICAgICAgLy8gUHJldmVudCB0aGUg
cHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAg
ICBtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmICFz
dHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3Ry
dWN0dXJlLT5pZCgpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRl
ZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAg
ICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7
CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xv
dC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2spOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNW
YWx1ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLmhpdENvdW50
Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJU
KHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlVmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoISgtLW1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAg
ICAgIGlmICghKC0tbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAgICAgICAg
ICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGdsb2JhbE9iamVjdCwgdm0sIGNvZGVC
bG9jaywgcGMsIG1ldGFkYXRhLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNl
VmFsdWUpICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7
CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9k
ZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0
cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAg
ICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQogCi0gICAgTExJ
TlRfUFJPRklMRV9WQUxVRShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV9iYXNlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
SXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUs
IGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0ZXIgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIEpTVmFsdWUgcmVzdWx0
ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJh
dG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0Owor
ICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25l
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25l
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
SXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciBy
ZXR1cm4gdmFsdWUgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2Rl
IG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIEpTVmFsdWUgaXRlcmF0b3JS
ZXR1cm4gPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgUmVn
aXN0ZXImIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2Rv
bmUpOworCisgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09iamVjdCgpKQorICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGlu
dGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBw
ZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JS
ZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0
YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZG9uZVJlZ2lzdGVyID0gcmVz
dWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1
Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0K
IAorTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dl
dF92YWx1ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9n
ZXRfdmFsdWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spOworICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0
ZXJhdG9yIHJldHVybiB2YWx1ZSB0bXAgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0
aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIFJlZ2lz
dGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFs
dWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUo
KTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgdmFsdWVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCisKIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE1NjMsNyAr
MTYyOCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKENhbGxGcmFtZSog
Y2FsbGVlRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2Rl
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9
IDApCiB7CiAgICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJh
bWUuCkBAIC0xNTcxLDE2ICsxNjM2LDE2IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2Vu
ZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAg
Ly8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KICAgICAvLyAt
IFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBu
ZXcgY2FsbCBmcmFtZS4KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9jYWxsZWUpOworICAgIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBjYWxsZWVGb3IoYnl0ZWNvZGUsIGNoZWNrcG9p
bnRJbmRleCkpOwogICAgIAotICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUg
LSBieXRlY29kZS5tX2FyZ3Y7CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFt
ZSAtIHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5k
ZXgpOwogICAgIAotICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyhieXRlY29kZS5tX2FyZ2MpOworICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2tw
b2ludEluZGV4KSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBjYWxsZWVGcmFt
ZS0+c2V0Q2FsbGVyRnJhbWUoY2FsbEZyYW1lKTsKICAgICAKICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHNldFVwQ2FsbChjYWxs
ZWVGcmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvKTsK
KyAgICByZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAm
Y2FsbExpbmtJbmZvRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKIH0KIAogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwpCkBAIC0xNjA0LDYgKzE2NjksMjggQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCkKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5h
czxPcENvbnN0cnVjdD4oKSwgQ29kZUZvckNvbnN0cnVjdCkpOwogfQogCitMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCk7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dM
bigiQ2FsbGluZyBzbG93IG9wZW5fY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVy
YXRvck9wZW4+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCkpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRf
Y2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxs
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfY2FsbCIpOworCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZy
YW1lLCBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yTmV4
dDo6Y29tcHV0ZU5leHQpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Np
emVfZnJhbWVfZm9yX3ZhcmFyZ3MpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE5OTAsNiAr
MjA3Nyw0NCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludChWTSYgdm0sIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdAogICAgIGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZUl0
ZXJhdG9yT3BlbkNoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck9wZW4mIGJ5dGVjb2RlKQor
eworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVl
IGl0ZXJhdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpz
VmFsdWUoKTsKKyAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFj
ZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBK
U1ZhbHVlIG5leHQgPSBpdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5uZXh0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGNh
bGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpID0gbmV4dDsKK30KKworc3RhdGlj
IHZvaWQgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJhdG9yTmV4
dCYgYnl0ZWNvZGUsIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlJiBzaWRlU3RhdGUpCit7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHVuc2lnbmVkIGNo
ZWNrcG9pbnRJbmRleCA9IHNpZGVTdGF0ZS5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKKwor
ICAgIGF1dG8mIHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUu
bV92YWx1ZSk7CisgICAgYXV0byBpdGVyYXRvclJlc3VsdE9iamVjdCA9IHNpZGVTdGF0ZS50bXBz
W09wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0XTsKKyAgICBhdXRvIG5leHQgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCk7ICAgIAorCisgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKG5leHQsICJXZSBzaG91bGQgbm90IE9TUiBleGl0IHRvIGEg
Y2hlY2twb2ludCBmb3IgZmFzdCBjYXNlcy4iKTsKKworICAgIGF1dG8mIGRvbmVSZWdpc3RlciA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworICAgIGlmIChjaGVja3Bv
aW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAgZG9uZVJlZ2lz
dGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+ZG9uZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChkb25lUmVnaXN0ZXIuanNW
YWx1ZSgpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0g
anNVbmRlZmluZWQoKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBpdGVyYXRv
clJlc3VsdE9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSk7
Cit9CisKIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghY29kZUJsb2NrLT52bSgpLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24o
KSk7CkBAIC0yMDY2LDYgKzIxOTEsMTUgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
c2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAg
ICAgaGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBw
Yy0+YXM8T3BUYWlsQ2FsbFZhcmFyZ3M+KCksICpzaWRlU3RhdGUuZ2V0KCkpOwogICAgICAgICBi
cmVhazsKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBoYW5kbGVJdGVy
YXRvck9wZW5DaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9w
SXRlcmF0b3JPcGVuPigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXRl
cmF0b3JfbmV4dDogeworICAgICAgICBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KHZtLCBj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCAqc2lkZVN0
YXRlLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTAz
LDYgKzIyMzcsMTIgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBjZWxsKQogICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKGNlbGwpOwogfQogCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVk
SlNWYWx1ZSB2YWx1ZSk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVk
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBkYXRhTG9nTG4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7
Cit9CisKIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50X2NyYXNo
KCkKIHsKICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjZGFmYTRmOTNjM2E5ZjA5
ODA1NzFjODE3NjdjMWEuLmY5YTM0ZGFiMzZkOWZhNTI3NTZhMTk4YjJkNzRmNzUyYzUzOGFjMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTEwMzIsNyArMTAzMiw3IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5M
YWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRl
MTYsIGRlZmluZVdpZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAotbWFjcm8gY2FsbFRh
cmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNh
bGxlZSwgY2FsbFB0clRhZykKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJ
TgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVsc2UKQEAgLTEwNDUs
MTEgKzEwNDUsMTEgQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFAKICAgICAgICAgIyB0aGF0IGNh
biBjbG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKICAgICAg
ICAgIyBjcmFzaGVzLgogICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAg
ICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAg
ICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAogICAgIGRlZmluZU9T
UkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50
ZXJBZnRlckNhbGwoKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwg
ZGlzcGF0Y2gpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3Jv
IHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQ
dHJUYWcpCkBAIC0xMTE3LDcgKzExMTcsMTEgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNh
bGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBqbXAgY2FsbGVlLCBj
YWxsUHRyVGFnCiBlbmQKIAotbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK21hY3JvIHNs
b3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQ
YXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbENhbGxTbG93UGF0
aCgKICAgICAgICAgc2xvd1BhdGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIwIGFuZCByMQpAQCAt
MTEyNiw3ICsxMTMwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXIKICAgICAgICAgICAgIG1v
dmUgY2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQy
LCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAg
ICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgY2Fs
bFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xv
d1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0yMDE2LDcgKzIwMjAsNyBAQCBt
YWNybyBkb0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gsIGZyYW1lU2xvd1BhdGgsIHNsbwogICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVyRnJhbWVB
bmRQQ1NpemUsIHNwCiAgICAgICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9yQ2FsbChv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFy
ZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29k
ZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVuZAogCiAKQEAgLTIw
NzksNyArMjA4Myw3IEBAIGVuZCkKICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZh
bCByZXR1cm5lZC4KIAogX2xsaW50X29wX2NhbGxfZXZhbDoKLSAgICBzbG93UGF0aEZvckNhbGwo
CisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93
LAogICAgICAgICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDg4LDcgKzIwOTIs
NyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwp
CiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAg
ICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCiAg
ICAgICAgIHdpZGUxNiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwOTcsNyArMjEwMSw3IEBA
IF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNh
bGwpCiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgK
KyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIs
CiAgICAgICAgIHdpZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIxMDcsNyArMjExMSw3
IEBAIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogCiAKIGNvbW1vbk9wKGxsaW50X2dlbmVy
aWNfcmV0dXJuX3BvaW50LCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQotICAgIGRpc3BhdGNo
QWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1hY3JvICgpCisgICAgZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgT3BDYWxsRXZhbCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8gKCkKICAgICAgICAg
ZGlzcGF0Y2hPcChzaXplLCBvcF9jYWxsX2V2YWwpCiAgICAgZW5kKQogZW5kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQppbmRleCA4MTg5MWMyMmU2MTgzYzgwNDJhYmRmY2U4ZDQzOTExYWY0MWY2NTRhLi43NGM0
ODBkZjIxMjE3MTY1NTBjNWZkNGYwODQ0YWIxMTA4ZmRjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpA
QCAtNjcsNyArNjcsNyBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBn
ZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAgICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAog
ICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIHQ1LCB0MSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJv
ZmlsZSwgdDUsIHQxLCB0MCkKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCkBAIC03NywxNiArNzcsMTcgQEAgZW5kCiAKIAogIyBBZnRlciBjYWxs
aW5nLCBjYWxsaW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90
IHVzZWQuCi1tYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoKQorbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRpIEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1Bv
aW50ZXJbUEJdLCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MykKKyAg
ICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQzKQogICAgIHN0
b3JlaSByMSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMp
Ci0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQogICAgIGRp
c3BhdGNoKCkKKwogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbikKQEAgLTYzMiw5ICs2MzMs
OSBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBn
ZXQsIHZhbHVlRmllbGROYW1lKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKK21hY3JvIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQog
ICAgIHN0b3JlaSB0YWcsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVj
a2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KLSAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRh
ZGF0YV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJv
ZmlsZU5hbWUlLm1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCiBlbmQKIAogCkBA
IC0xMzc4LDcgKzEzNzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJl
Y3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGxvYWRpIE9w
R2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWREaXJlY3QsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5v
cEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXQKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0
QnlJZFNsb3cKICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5w
cm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUs
IHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwg
dDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgpAQCAtMTQx
Myw3ICsxNDE0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJ
ZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkcCBKU09iamVj
dDo6bV9idXR0ZXJmbHlbdDNdLCB0MAogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmls
dCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwg
SW50MzJUYWcsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUs
IEludDMyVGFnLCB0MCkKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogCiAub3BHZXRCeUlkVW5z
ZXQ6CkBAIC0xNDIxLDcgKzE0MjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9p
ZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxv
YWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1
cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAs
IENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCB0NSwgVW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJv
ZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCkKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQog
CiAub3BHZXRCeUlkRGVmYXVsdDoKQEAgLTE0MzAsNyArMTQzMSw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0CiAgICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJp
YWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0
NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE0NDAsNyAr
MTQ0MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAg
Z2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBt
ZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIxLCByMCkK
KyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAg
cmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1
bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQ
YXlsb2FkKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1MjcsNyArMTUyOCw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRj
aDIsIHNjcmF0Y2gzCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2Ny
YXRjaDEsIDhdCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNj
cmF0Y2gxLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHNjcmF0Y2gz
LCBzY3JhdGNoMikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwg
dDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBA
IC0xNTcyLDcgKzE1NzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9wR2V0QnlWYWxO
b3RFbXB0eToKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCB0NSwgdDIsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCB0MiwgdDEpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9y
YWdlOgpAQCAtMTU4NSw3ICsxNTg2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JS
ZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5
X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmls
ZSwgdDIsIHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xOTU3LDEwICsx
OTU4LDEwIEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2Rl
U3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBD
YWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCiAgICAgICAgIHByZXBh
cmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5l
Q29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0
aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1Bh
dGgsIHByZXBhcmVDYWxsKQorICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHBy
ZXBhcmVDYWxsKQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjg4LDcgKzIyODksNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAg
T3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEs
IHQyKQogICAgIGVuZAogCkBAIC0yMjk3LDcgKzIyOTgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0YwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXls
b2FkT2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAg
cmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjMwNSw3ICsyMzA2LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJp
YWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2Fs
RW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAg
ICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTk0LDYgKzI1OTUsMTUgQEAgbGxpbnRP
cFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGMKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogZW5kKQogCitsbGlu
dE9wKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3Jfb3Blbiwg
c2l6ZSkKKyAgICBicmVhaworZW5kKQorCitsbGludE9wKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRl
cmF0b3JOZXh0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0
UmV0dXJuTGFiZWwob3BfaXRlcmF0b3JfbmV4dCwgc2l6ZSkKKyAgICBicmVhaworZW5kKQogCiBs
bGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmll
bGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwg
dDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCmluZGV4IGFlMmUzNzczZmZkY2M0MDY3NGM3YWFjMGMxZDRmZTZjZDBmYjc4
NTkuLjg2MTM2ZTg1N2M5Zjc4MjJiMjQ0NmM2MjZiZmRjN2EzZGZiYjJmZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CkBAIC02OCwyNiArNjgsMjYgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVj
dCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAg
ICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MSwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQog
ICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAg
ZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB2
YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9m
aWxlLm1fYnVja2V0c1ttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFkYXRhXQogZW5k
CiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCBy
ZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkK
ICAgICBsb2FkUEMoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwg
b3Bjb2RlU3RydWN0LCBtX2RzdCwgdDEpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0
VmlydHVhbFJlZ2lzdGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1l
dGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgcjApCiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTEzNDAsNyArMTM0
MCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlk
RGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRC
eUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zm
c2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAp
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgdDIsIHQwKQorICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkK
IAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xMzQ4LDUzICsxMzQ4LDU5IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi1sbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKKyMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCitt
YWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUs
IHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAg
ICBtZXRhZGF0YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2Rl
TWV0YWRhdGEubW9kZVt0Ml0sIHQxCi0gICAgZ2V0KG1fYmFzZSwgdDApCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2Fk
YiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwg
dDEKIAogLm9wR2V0QnlJZERlZmF1bHQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlk
TW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAogICAgIGxvYWRpIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0
MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkaSAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5zdHJ1
Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUu
Y2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQx
LCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVl
UHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1
cm4odDApCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBH
ZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKICAgICBsb2FkaSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRh
dGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MwotICAg
IGJpbmVxIHQzLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQot
ICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCisg
ICAgYmluZXEgdDMsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJd
LCB0MQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5h
bWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQy
LCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJu
ZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNl
dAogICAgIG1vdmUgdDMsIHQwCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6
Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUp
Ci0gICAgYnRpeiB0MCwgSXNBcnJheSwgLm9wR2V0QnlJZFNsb3cKLSAgICBidGl6IHQwLCBJbmRl
eGluZ1NoYXBlTWFzaywgLm9wR2V0QnlJZFNsb3cKKyAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5
UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKKyAg
ICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNW
YWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXSwgdDAKLSAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdworICAgIGJpbHQgdDAsIDAs
IHNsb3dMYWJlbAogICAgIG9ycSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBs
b2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0g
ICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAg
IGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkKQogICAgIHJldHVybihWYWx1ZVVu
ZGVmaW5lZCkKIAorZW5kCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdl
dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAg
IGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQw
LCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlk
LCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRh
dGEsIHJldHVybikKKwogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X2lkKQogICAgIGRpc3BhdGNoKCkKQEAgLTE0MDIsNyArMTQwOCw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0
dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0
MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIwKQorICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5k
KQpAQCAtMTQ5Nyw3ICsxNTAzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBtYWNy
byBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2Ny
YXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQpCiAgICAgICAgIGRpc3BhdGNoKCkK
ICAgICBlbmQKIApAQCAtMTU1OCw3ICsxNTY0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
IAogLm9wR2V0QnlWYWxEb25lOgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZh
bCwgbV9wcm9maWxlLCB0NSwgdDIpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdElu
ZGV4ZWRTdG9yYWdlOgpAQCAtMTU3MSw3ICsxNTc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQo
b3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlWYWwsIHQ1LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9w
cm9maWxlLCB0NSwgcjApCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xOTQ4LDYgKzE5NTQs
MzAgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAuZG9u
ZToKIGVuZAogCittYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgcHJlcGFyZUNhbGws
IHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBn
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICBtZXRhZGF0YSh0NSwgdDApCisgICAg
Z2V0Q2FsbGVlKHQwKQorCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCisgICAgYnFuZXEgdDMsIHQy
LCAub3BDYWxsU2xvdworCisgICAgZ2V0QXJndW1lbnRTdGFydCh0MykKKyAgICBsc2hpZnRpIDMs
IHQzCisgICAgbmVncCB0MworICAgIGFkZHAgY2ZyLCB0MworICAgIHN0b3JlcSB0MiwgQ2FsbGVl
W3QzXQorICAgIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKQorICAgIHN0b3JlUEMo
KQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zm
c2V0W3QzXQorICAgIG1vdmUgdDMsIHNwCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQz
LCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFj
aGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNh
bGwpCitlbmQKKwogbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNv
ZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICBsbGludE9wV2l0aE1ldGFkYXRh
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTE5NTYsMjQgKzE5
ODYsMTkgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVT
dHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bj
b2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAotICAg
ICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0
W3Q1XSwgdDIKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCi0g
ICAgICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcGNv
ZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMKLSAgICAgICAgbmVn
cCB0MwotICAgICAgICBhZGRwIGNmciwgdDMKLSAgICAgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNd
Ci0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQyKQotICAgICAgICBz
dG9yZVBDKCkKLSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAr
IFBheWxvYWRPZmZzZXRbdDNdCi0gICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVD
YWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRb
dDVdLCBKU0VudHJ5UHRyVGFnKQotCi0gICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRo
Rm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0
aCwgcHJlcGFyZUNhbGwpCisgICAgICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgICAg
ICBnZXQobV9jYWxsZWUsIHQwKQorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBnZXRBcmd1
bWVudFN0YXJ0KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Fy
Z3YsIGRzdCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRDb3VudChk
c3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCBkc3QpCisg
ICAgICAgIGVuZAorCisgICAgICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9w
Y29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50
KQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjc2LDcgKzIzMDEsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9t
U2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgdDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1f
cHJvZmlsZSwgdDUsIHQyKQogICAgICAgICByZXR1cm4odDIpCiAgICAgZW5kCiAKQEAgLTIyODQs
MTQgKzIzMDksMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BH
ZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BH
ZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MAogICAgICAgICBsb2FkcSBb
dDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQwKQotICAgICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVu
ZAogCiAgICAgbWFjcm8gZ2V0Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNj
b3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2Fs
RW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEZyb21TY29wZSwgdDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9t
U2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAK
QEAgLTI1NTEsNyArMjU3Niw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV9jb250
cm9sX2Zsb3csIE9wUHJvZmlsZUNvbnRyb2xGbG93LCBtYWNybyAoc2l6ZSwKICAgICBkaXNwYXRj
aCgpCiBlbmQpCiAKLQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdl
dFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAg
ICAgc3ViaSAxLCB0MApAQCAtMjU2Nyw2ICsyNTkxLDE0NyBAQCBsbGludE9wV2l0aFJldHVybihv
cF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0YwogZW5kKQogCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3BlbiwgT3BJ
dGVyYXRvck9wZW4sIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgIG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAg
Y2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAg
ICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVu
X3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAg
ICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQK
KyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxs
T3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGgg
aW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEs
IGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVuR2VuZXJpYwor
ICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dl
dEJ5SWRDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQKKyAgICBlbmQKKwor
ICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0ZXJhdG9yLCBk
c3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChk
c3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRz
dCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRz
dCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworCisgICAgY2FsbEhlbHBlcihvcF9p
dGVyYXRvcl9vcGVuLCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCwgT3BJdGVy
YXRvck9wZW4sIG1faXRlcmF0b3JQcm9maWxlLCBtX2l0ZXJhdG9yLCBwcmVwYXJlRm9yUmVndWxh
ckNhbGwsIHNpemUsIGdvdG9HZXRCeUlkQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwg
Z2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0Nv
dW50KQorCisuZ2V0QnlJZFN0YXJ0OgorICAgIG1hY3JvIHN0b3JlTmV4dEFuZERpc3BhdGNoKHZh
bHVlKQorICAgICAgICBtb3ZlIHZhbHVlLCB0MgorICAgICAgICBnZXQobV9uZXh0LCB0MSkKKyAg
ICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVu
ZAorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9pdGVyYXRvciwgdDMpCisgICAgYnRxbnogdDMs
IG5vdENlbGxNYXNrLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93CisgICAgcGVyZm9y
bUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9m
aWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3Rv
cmVOZXh0QW5kRGlzcGF0Y2gpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkK
KyAgICBkaXNwYXRjaCgpCisKK2VuZCkKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRv
cl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX25leHQsIHQwKQorICAgIGJ0
cW56IHQwLCB0MCwgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBtZXRhZGF0YShhMiwgdDUpCisg
ICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4
dF90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAg
ICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpCisgICAgZW5k
CisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jf
bmV4dF90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0
V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAj
IEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdz
IHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYywgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRv
ck5leHRHZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2ludCgpCisgICAgICAg
IGptcCAuZ2V0RG9uZVN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQor
ICAgICAgICBnZXQobV9uZXh0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVu
dEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck5l
eHQsIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50
SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKwor
ICAgICMgVXNlIG1fdmFsdWUgc2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gd3Jp
dGUgdG8gaXQgbGF0ZXIuCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9uZXh0LCBfbGxpbnRf
c2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQsIG1fbmV4dFJlc3Vs
dFByb2ZpbGUsIG1fdmFsdWUsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldERv
bmVDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1Ro
aXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXREb25lU3RhcnQ6
CisgICAgbWFjcm8gc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFsdWUpCisgICAgICAg
ICMgdXNlIHQwIGJlY2F1c2UgcGVyZm9ybUdldEJ5SURIZWxwZXIgdXN1YWxseSBwdXRzIHRoZSBk
b25lVmFsdWUgdGhlcmUgYW5kIG9mZmxpbmVhc20gd2lsbCBlbGlkZSB0aGUgc2VsZiBtb3ZlLgor
ICAgICAgICBtb3ZlIGRvbmVWYWx1ZSwgdDAKKyAgICAgICAgZ2V0KG1fZG9uZSwgdDEpCisgICAg
ICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgICAgIGptcCAuZ2V0VmFsdWVTdGFydAor
ICAgIGVuZAorCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICBidHFu
eiB0Mywgbm90Q2VsbE1hc2ssIC5nZXREb25lU2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVy
KE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXRE
b25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisKKy5n
ZXREb25lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9u
ZXh0X2dldF9kb25lKQorICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Ns
b3dfcGF0aF90cmFtcG9saW5lKQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDApCisK
KyAgICAjIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUgZG9uZVZhbHVlIGludG8g
dDAKKy5nZXRWYWx1ZVN0YXJ0OgorICAgICMgQnJhbmNoIHRvIHNsb3cgaWYgbm90IG1pc2MgcHJp
bWl0aXZlLgorICAgIGJ0cW56IHQwLCB+MHhmLCAuZ2V0VmFsdWVTbG93CisgICAgYnRpeiB0MCwg
MHgxLCAubm90RG9uZQorICAgIGRpc3BhdGNoKCkKKworLm5vdERvbmU6CisgICAgbWFjcm8gc3Rv
cmVWYWx1ZUFuZERpc3BhdGNoKHYpCisgICAgICAgIG1vdmUgdiwgdDIKKyAgICAgICAgZ2V0KG1f
dmFsdWUsIHQxKQorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgICAgICBjaGVj
a1N0YWNrUG9pbnRlckFsaWdubWVudCh0MCwgMHhiYWRkYjAxZSkKKyAgICAgICAgZGlzcGF0Y2go
KQorICAgIGVuZAorCisgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUg
Z2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4KKyAgICBsb2FkVmFyaWFibGUo
Z2V0LCBtX3ZhbHVlLCB0MykKKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0
ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFu
IGVycm9yIGJlZm9yZS4KKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwg
bV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUs
IG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNsb3c6CisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCisg
ICAgZGlzcGF0Y2goKQorZW5kKQorCisKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJu
YWxfZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IHJldHVybikKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2Jhc2UsIHQxKQogICAgIGdldHUoc2l6
ZSwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgppbmRleCA4ZDc2NzExNmMwNTRlNWVhNjY0ZWY0
MDYyYzU2ZjI2MDVlMGQ4YjQ1Li41ODlhZTBlMGYzZWQzNGI2NjFlODU2MmJjYTI5ODAyZWMxMGU1
YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zv
cm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJi
CkBAIC02MjksNyArNjI5LDcgQEAgZW5kCiAKIGNsYXNzIE5vZGUKICAgICBkZWYgdmFsaWRhdGUK
LSAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgI3tkdW1wfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9
IgorICAgICAgICByYWlzZSAiVW5yZXNvbHZlZCAnI3tkdW1wfScgYXQgI3tjb2RlT3JpZ2luU3Ry
aW5nfSIKICAgICBlbmQKICAgICAKICAgICBkZWYgdmFsaWRhdGVDaGlsZHJlbgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjhk
ZTk2NTU4MmY3ZDkxMjcxMzM3ZDU0MzE5MDNlODMxOGMyNmY0Ny4uOTNlN2U3MzYwMWJmNzNlN2Rh
ZDc1NGVhYmMxNTYzZDhhMGU4NzEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
SXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKQEAgLTE1Myw4ICsxNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFJF
VFVSTl9QUk9GSUxFRCh2YWx1ZV9fKSBcCiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHZhbHVl
X18sIFBST0ZJTEVfVkFMVUUocmV0dXJuVmFsdWVfXykpCiAKLSNkZWZpbmUgUFJPRklMRV9WQUxV
RSh2YWx1ZSkgZG8geyBcCi0gICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9w
cm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyNkZWZpbmUg
UFJPRklMRV9WQUxVRSh2YWx1ZV9fKSBcCisgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZV9fLCBt
X3Byb2ZpbGUpCisKKyNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgcHJvZmlsZU5hbWUp
IGRvIHsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1l
Lm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChm
YWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpAQCAtOTY1LDYg
Kzk2OSwxMjggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKQogICAgIFJFVFVS
Tihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKSk7CiB9CiAKK3Rl
bXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgLy8gRG9uJ3Qgc2V0IFBDOyB3ZSBj
YW4ndCB0aHJvdyBhbmQgaXQncyByZWxhdGl2ZWx5IHNsb3cuCisgICAgQkVHSU5fTk9fU0VUX1BD
KCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yT3Bl
biwgd2lkdGg+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0
ZXJhdG9yT3Blbjo6TWV0YWRhdGEqPihtZXRhZGF0YVB0cik7CisgICAgSlNWYWx1ZSBpdGVyYWJs
ZSA9IEdFVF9DKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKTsKKyAgICBQUk9GSUxFX1ZB
TFVFX0lOKGl0ZXJhYmxlLCBtX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgSlNWYWx1ZSBzeW1ib2xJ
dGVyYXRvciA9IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAg
ICBhdXRvJiBpdGVyYXRvciA9IEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKworICAgIGF1dG8g
cHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7CisgICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlk
KCkpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAg
ICAvLyBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhlIHdhdGNocG9p
bnQgaXMgc3RpbGwgdmFsaWQuCisgICAgICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVu
Y3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOwor
ICAgICAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsgCisKKyAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJy
YXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uKCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5j
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAg
ICAgIC8vIFdlIHNob3VsZCBiZSBnb29kIHRvIGdvLgorICAgICAgICBtZXRhZGF0YS5tX2l0ZXJh
dGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vl
bk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgICAgICBHRVQoYnl0ZWNvZGUu
bV9uZXh0KSA9IEpTVmFsdWUoKTsKKyAgICAgICAgYXV0byogaXRlcmF0ZWRPYmplY3QgPSBqc0Nh
c3Q8SlNPYmplY3QqPihpdGVyYWJsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGl0ZXJhdG9y
ID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRv
clN0cnVjdHVyZSgpLCBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAg
ICAgICAgfQorICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9p
dGVyYXRvclByb2ZpbGUpOworICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5
OworICAgIH07CisKKyAgICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7Cisg
ICAgICAgIGlmIChwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9k
ZTo6RmFzdEFycmF5KQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgfQorCisg
ICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAg
IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVy
YXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1v
ZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNihD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0
YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+KGNhbGxG
cmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFU
SCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRl
cmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsK
K30KKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9X
X1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICBCRUdJTigpOworCisg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck5leHQsIHdpZHRo
PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck5l
eHQ6Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworCisgICAgQVNTRVJUKCFHRVQoYnl0ZWNvZGUu
bV9uZXh0KS5qc1ZhbHVlKCkpOworICAgIEpTT2JqZWN0KiBpdGVyYXRvciA9IGpzQ2FzdDxKU09i
amVjdCo+KEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCkpOzsKKyAgICBKU0NlbGwq
IGl0ZXJhYmxlID0gR0VUKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsK
KyAgICBpZiAoYXV0byBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0
b3IqPih2bSwgaXRlcmF0b3IpKSB7CisgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWlj
Q2FzdDxKU0FycmF5Kj4odm0sIGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgbWV0YWRhdGEubV9p
dGVyYWJsZVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsK
KworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBt
ZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZh
c3RBcnJheTsKKyAgICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmlu
dGVybmFsRmllbGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOworICAgICAgICAgICAg
aW50NjRfdCBpbmRleCA9IGluZGV4U2xvdC5nZXQoKS5hc0FueUludCgpOworICAgICAgICAgICAg
QVNTRVJUKDAgPD0gaW5kZXggJiYgaW5kZXggPD0gbWF4U2FmZUludGVnZXIoKSk7CisKKyAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgICAgICBib29sIGRvbmUgPSBpbmRleCA9PSAt
MSB8fCBpbmRleCA+PSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBHRVQoYnl0ZWNvZGUu
bV9kb25lKSA9IGpzQm9vbGVhbihkb25lKTsKKyAgICAgICAgICAgIGlmICghZG9uZSkgeworICAg
ICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25v
dyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAgICAgIEFT
U0VSVChpbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGFycmF5LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmRleCkpOworICAgICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOworICAg
ICAgICAgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIG1fdmFsdWVQcm9maWxlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJy
aWVyIGhlcmUgYmVjYXVzZSB3ZSBrbm93IHRoaXMgaXMgYSBwcmltaXRpdmUuCisgICAgICAgICAg
ICAgICAgaW5kZXhTbG90LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoLTEpKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFsdWU7
CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRl
Y29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMg
fCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0
YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+KGNhbGxG
cmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFU
SCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRl
cmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsK
K30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lk
KiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRl
MzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4ZGI1
ZjU1OGZhNzg1MDRjYWIwOTY0M2M2MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRjZDhi
MmVlMGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKQEAgLTI0Niw2ICsyNDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2lzX29iamVjdF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
aXNfZnVuY3Rpb24pOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CisvLyBTTE9XX1BB
VEhfSElEREVOX0RFQ0woaXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhfSElE
REVOX0RFQ0woaXRlcmF0b3JfbmV4dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
dHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpA
QCAtMjgzLDYgKzI4NSwxOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJheV93aXRoX3NwcmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwog
Cit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
U0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFt
ZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMy
KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCit0
ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1df
UEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSos
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENh
bGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1c2lu
ZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShDYWxs
RnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDM1MzU5MDkwNDkx
Y2UwYWZkY2Q4YmJiNGY4NzViYjM4MThjMjJkM2UuLjY4NzRlYzc5MDM3NThjZjlkZjQ0MzlhNjIz
OTA2MWNmMjcwNTg5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmNwcApAQCAtMzMwLDYgKzMzMCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKElu
dHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFsPEl0
ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5z
aWMpCit7CisgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVzSW50
cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoK
KyAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0
aW9uS2luZDo6S2V5czsKKyAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBjYXNl
IFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2lu
ZDo6RW50cmllczsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJk
N2Q4YWMyMDU0MmU4YThkN2UxOGM0MmJhZTkuLjcxYmEzYWFkMzU5Njk1NmFmYzJkMGFiZmM2ZmQx
ZGUxN2FmMWVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
CkBAIC0xODcsNiArMTg3LDggQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBEYXRh
Vmlld1NldEZsb2F0NjQsCiB9OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9u
S2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1l
KEludHJpbnNpYyk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZk
NGQ3ZmEzNGJiOThhOTY4N2VjNjA5Li40ZmQwYTExNjUyNWNkYzUzMmE1M2QwYjhiNWFjYjUzMzg3
YThkYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRl
cmF0b3IuaApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRl
ZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQo
RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5SXRl
cmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwg
SlNWYWx1ZSBraW5kKTsKKyAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRp
b25LaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUs
IGl0ZXJhdGVkT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsK
KyAgICB9CiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1
ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1
NGZhNjBjOWY0ODFlZC4uZDMwMmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBmZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1LDYg
KzIyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBib29s
IGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlw
ZSYsIENhbGxEYXRhJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERh
dGEmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFkODBh
ZjcuLjYyZjlkMjRmMTVkMDcyNDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODI3
LDYgKzgyNywxMyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29u
c3QKICAgICByZXR1cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1bnVz
ZWRUeXBlOworICAgIENhbGxEYXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFibGUo
dm0sIHVudXNlZFR5cGUsIHVudXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0NhbGxhYmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEp
IGNvbnN0CiB7CiAgICAgaWYgKCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDYXN0LmgKaW5kZXggZThiMjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzExYi4u
YjI1MDM1NjljODQyMjU2MDExNDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8ganND
YXN0KEpTVmFsdWUgZnJvbSkKIC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmluZSBG
T1JfRUFDSF9KU19EWU5BTUlDX0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAgIG1h
Y3JvKEpTSW1tdXRhYmxlQnV0dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlw
ZSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0FycmF5
SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRl
cmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmlu
Z0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3Jv
KEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8o
SlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmpl
Y3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwg
SlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpT
VHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUp
IFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVk
QXJyYXlUeXBlKSBcCisgICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJ
dGVyYXRvclR5cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpT
QXJyYXlCdWZmZXIsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVmZmVy
VHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlUeXBl
LCBMYXN0VHlwZWRBcnJheVR5cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6SlNQ
cm9taXNlVHlwZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYz
ZTNjOGZmNjIwOGY2MjVmNTcwMzY4NzNmMC4uMTE3M2FhMDg4ZGNiNzZjMDRmZTRiNWZjMGIxYTQ5
MzkzMzkxZTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtNTU5LDEwICs1NTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBp
bml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
aW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwg
YXJyYXlQcm90b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKICAgICAgICAgfSk7Ci0gICAg
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5
TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVz
SW50cmluc2ljKSk7Ci0gICAgICAgIH0pOworICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
LnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVl
c0ludHJpbnNpYykpOwogCiAgICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVy
KAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAg
LTE3NDksNyArMTc0Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNl
SW50RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0
RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9T
dHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9l
dmFsRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3
NGIyMTc2NDcxYTlmMDUxMy4uMGFjZGZhZWQ5ZTlhZGZjMjM4YWI3YzIzNDJlMzU0OTMwYWE2OTIz
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC0yOTksNyArMjk5LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247CiAKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rp
b247Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJh
eVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9u
OwpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1
bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiog
YXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9U
b1N0cmluZ0Z1bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
LmdldCh0aGlzKTsgfQorICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAg
SlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
dGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3
UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21p
c2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rp
b24uZ2V0KHRoaXMpOyB9CkBAIC02MTksNiArNjE5LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rp
b24qIG51bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldEluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
LmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25z
dDsKKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKTsgfQogICAgIEpTT2Jq
ZWN0KiByZWdFeHBQcm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdF
eHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJv
dG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaAppbmRleCA5OTY5NGQwMTI3YmFlMWNlYTVjZjYzZmE5Y2RkOTc3MDAwY2I3
YWE0Li5mYjQwZmM5NTA3NmFjNTBhMGEzOTRmNThjNTNlYjFjYmRiMDZmYzdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTExOSw2ICsxMTksOCBA
QCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwog
ICAgIHYoVW5zaWduZWQsIHNoYWRvd0NoaWNrZW5Mb2dTaXplLCAxMDAwLCBOb3JtYWwsIG51bGxw
dHIpIFwKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTWF4VGFpbERlbGV0ZWRGcmFtZXNT
aXplLCAxMjgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKKyAgICB2KEJvb2wsIHVzZUl0ZXJh
dGlvbkludHJpbnNpY3MsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKICAgICB2KEJv
b2wsIHVzZU9TTG9nLCBmYWxzZSwgTm9ybWFsLCAiTG9nIGRhdGFMb2coKXMgdG8gb3NfbG9nIGlu
c3RlYWQgb2Ygc3RkZXJyIikgXAogICAgIC8qIGR1bXBEaXNhc3NlbWJseSBpbXBsaWVzIGR1bXBE
RkdEaXNhc3NlbWJseS4gKi8gXAogICAgIHYoQm9vbCwgZHVtcERpc2Fzc2VtYmx5LCBmYWxzZSwg
Tm9ybWFsLCAiZHVtcHMgZGlzYXNzZW1ibHkgb2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24g
Y29tcGlsYXRpb24iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAppbmRleCA3NjRhZDA2NWFjMDExZTMzYzMyMzhjZDlkYTk1MzljMTU4MzkyM2U1Li45YzJj
ZTdhZmFlNmUzOGU3YTYwODAyNmY1MTc3MTEwZTNjODU1NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNjgsNiArMTI2OCw4IEBAIHZvaWQg
U3RydWN0dXJlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBj
b250ZXh0KSBjb25zdAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBCcmllZihQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIlIiwgc3Ry
aW5nLCAiOiIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIGlmIChpbmRleGluZ1R5cGUo
KSAmIEluZGV4aW5nU2hhcGVNYXNrKQorICAgICAgICBvdXQucHJpbnQoIiwiLCBJbmRleGluZ1R5
cGVEdW1wKGluZGV4aW5nVHlwZSgpKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wQ29udGV4
dEhlYWRlcihQcmludFN0cmVhbSYgb3V0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396609</attachid>
            <date>2020-04-15 20:13:07 -0700</date>
            <delta_ts>2020-04-15 20:33:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415201303.patch</filename>
            <type>text/plain</type>
            <size>237308</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi5iN2Y1MzFlY2JlZjQwNzZk
YWQ0MDZjMjA4ODljNjkzMDM1Yjc4NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTggQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5n
L1BoYW50b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikg
Um9sbGluZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dp
dGNoaW5nIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwgZWFjaCB2
YXJpYWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpvcjgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTgpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAg
ICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwOgorICAgICAgICAoSlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZv
cik6CisgICAgICAgIChKU0M6OmFycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVl
UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAg
ICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZv
cik6CisgICAgICAgIChKU0M6OmNhbGxlZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVy
c0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRy
eUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToK
KyAgICAgICAgKiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QmFzZUluc3RydWN0aW9uOjp3aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5z
dHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dXBlclNhbXBsZXIuaC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xl
YXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRh
aW5zKToKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6
U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2VuZXJpY0VudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNF
bXB0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVu
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JHZW5lcmljQ2xvc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlTWluTWF4KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2lt
cGxpZmljYXRpb25QaGFzZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Zm9yQWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZU
bXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJ
bmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpT
VmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9y
L01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mp
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBG
cmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y2hlY2twb2ludFJlYWNoZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBl
Q2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVJdGVyYXRvck9w
ZW5DaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yTmV4dENo
ZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX2NoZWNrcG9pbnRfb3Ny
X2V4aXQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfZHVtcF92YWx1ZSk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93
KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X25hcnJvdyk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2
KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9JbnRyaW5z
aWMuY3BwOgorICAgICAgICAoSlNDOjppbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyk6CisgICAg
ICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJs
ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAy
MDIwLTA0LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogYWRkIGEgU3RlcCBuZXh0IHRoYXQgc3RlcHMgYnkgZXhw
cmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L0phdmFTY3JpcHRDb3JlLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCmluZGV4IDUyYjQ2ZWNjOWUyODljYWQ4NWFh
MTdlMmQwOTdhYmJlNTM2NWIzOWYuLjVhOWEwYjQ0NDExMDcyM2Q3MzlhMzI1MDI4NWVlOWE2ODIz
NWZiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKQEAgLTQwLDggKzQwLDggQEAgU0VDVE9S
REVSX0ZMQUdTX1Byb2R1Y3Rpb25bc2RrPW1hY29zeCpdID0gLVdsLC1vcmRlcl9maWxlLEphdmFT
Y3JpcHRDb3JlLm9yZGVyOwogCiBHQ0NfUFJFRklYX0hFQURFUiA9IEphdmFTY3JpcHRDb3JlUHJl
Zml4Lmg7CiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKLU9USEVSX0NGTEFHUyA9
ICQoaW5oZXJpdGVkKSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUvOwotT1RIRVJfQ1BM
VVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLS1zeXN0ZW0taGVhZGVyLXByZWZpeD11bmljb2Rl
LzsKK09USEVSX0NGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZm5vLXNscC12ZWN0b3JpemUgLS1zeXN0
ZW0taGVhZGVyLXByZWZpeD11bmljb2RlLzsKK09USEVSX0NQTFVTUExVU0ZMQUdTID0gJChpbmhl
cml0ZWQpIC1mbm8tc2xwLXZlY3Rvcml6ZSAtLXN5c3RlbS1oZWFkZXItcHJlZml4PXVuaWNvZGUv
OwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUiICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CiBJTkZPUExJU1Rf
RklMRSA9IEluZm8ucGxpc3Q7CiBJTlNUQUxMX1BBVEggPSAkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1F
V09SS1NfRElSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI1MDE5ZmQ5MDU3
MThiNWEzMmNmMjZhZTM3MjRiOGUxODFjYzI4ZS4uZGY0MjdkZjVhMDI3NTkzM2I0OTc3NGRjN2Ux
MDI2NzViNzBkMDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDMsNiAr
MTEwMyw4IEBACiAJCTUzQzRGNjZCMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUdsb2JhbE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDNEY2
NkEyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggKi87IH07CiAJCTUzQzZG
RUVGMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M2RkVFRTFFOEFERkE5MDBCMTg0MjUg
LyogV2FzbU9wY29kZU9yaWdpbi5oICovOyB9OwogCQk1M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQg
LyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzQ0E3MzA4MUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oICovOyB9Owor
CQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0QzNTQ5NzI0MEQ4OEFE
MDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggKi87IH07CisJCTUzRDQxRUM5MjNDMDA4
MUEwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJ
dGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVz
c1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0Q0NDREQjFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmggKi87IH07CiAJ
CTUzRTFGOEY4MjE1NDcxNUEwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFMUY4RjcyMTU0NzE0OTAwMDFE
REJDIC8qIEpTVmFsdWVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTNFNzc3RTQxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJ
bmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNFNzc3RTIxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5oICov
OyB9OwpAQCAtMzgxNCw2ICszODE2LDkgQEAKIAkJNTNDNkZFRjAxRThBRkUwQzAwQjE4NDI1IC8q
IFdhc21PcGNvZGVPcmlnaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2FzbU9wY29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
Q0E3MzA3MUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQkJRUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzQ0E3MzA4MUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQkJRUGxhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVQ
cm9maWxlRm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlUHJv
ZmlsZUZvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0QzNTQ5ODI0MEQ4OEFE
MDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQnl0ZWNvZGVVc2VEZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Q0NDREQjFEQUYwOEFCMDBCOTI3ODQg
LyogQjNXYXNtQWRkcmVzc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzV2FzbUFkZHJlc3NWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NEREMURBRjA5QTAwMEI5Mjc4NCAvKiBC
M1dhc21BZGRyZXNzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUFkZHJlc3NWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRTFGOEY3MjE1NDcxNDkwMDAxRERC
QyAvKiBKU1ZhbHVlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1ZhbHVlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyMCw4ICs4
MjI1LDEwIEBACiAJCQkJQzJGQ0FFMEUxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAgKi8sCiAJCQkJQzJGQ0FFMEYxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oICovLAogCQkJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAv
KiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCisJCQkJNTNEMzU0OTcyNDBE
ODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oICovLAogCQkJCUUzRDI2NDI5MUQz
OEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLywKIAkJCQlFM0QyNjQyQTFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovLAorCQkJCTUzRDM1NDk4MjQw
RDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8sCiAJCQkJMEY4ODVFMTAxODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJRTM1QkEyQzAyNDFBMEU4
QzAwQjY3MDg2IC8qIEJ5VmFsSW5mby5jcHAgKi8sCiAJCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBC
QTQ1IC8qIEJ5VmFsSW5mby5oICovLApAQCAtODMxNSw2ICs4MzIyLDcgQEAKIAkJCQkxNENDM0JB
MTIxMzhBMjM4MDAyRDU4QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovLAogCQkJCTE0Q0Mz
QkEyMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5oICovLAogCQkJCTUzRjZC
RjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUu
aCAqLywKKwkJCQk1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLmggKi8sCiAJCQkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAg
Ki8sCiAJCQkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLAogCQkJ
CTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAg
Ki8sCkBAIC05MTI3LDYgKzkxMzUsNyBAQAogCQkJCTBGMkREODBCMUFCM0Q4NTgwMEJCQjhFOCAv
KiBCeXRlY29kZUtpbGxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMzE3QTlDMjRFMDAz
NEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjY2NkVDMDE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNEMzU0OTkyNDBEODhCRDAwODk1MEREIC8qIEJ5dGVj
b2RlUHJvZmlsZUZvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOERBRUIxRDM4RDAwNTAwMUEy
NTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MTRGMjE5MThC
M0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODg1RTEx
MTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC05
NzExLDYgKzk3MjAsNyBAQAogCQkJCTBGRDJGRDk1MjBCNTJCRTIwMEYwOTQ0MSAvKiBJc29TdWJz
cGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBE
RSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QjlGNkQ1NjFENTkx
MkZBMDAxQzczOUYgLyogSXRlcmF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNENDFF
QzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkU0RDU1QjgxQUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3Bl
cmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8q
IEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggYzg0N2Zj
N2RmNTg2YWFkNmY4NTA3MDgzM2NiZjViYTVlYmVmMGVjOC4uMTUzOTdlOGI3ZjQ4YTg0ZmIyN2Yx
MWQyZjEzNzFlMGUyYTMwMWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTY4Niw2ICs2ODYsMjAgQEAgcHVi
bGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0K
IAorICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dpY2FsSW1tID0gTG9naWNhbElt
bWVkaWF0ZTo6Y3JlYXRlMzIoaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5vcnI8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGxvZ2ljYWxJbW0p
OworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2Fj
aGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgb3Iz
MihpbW0sIG1lbW9yeVRlbXBSZWdpc3RlciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLm1fcHRyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgb3I2NChSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgb3I2NChkZXN0LCBzcmMsIGRl
c3QpOwpAQCAtMTYwMyw3ICsxNjE3LDcgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5z
dHJiKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAotICAg
IHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3Rv
cmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIDApOwpAQCAtMTYxOCw3ICsxNjMyLDcgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwog
ICAgIH0KIAotICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3Mp
CisgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykK
ICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGludDhfdD4oaW1t
Lm1fdmFsdWUpKTsKICAgICAgICAgaWYgKCFpbW04Lm1fdmFsdWUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRl
eCA4YzY5NzliYjliMmZkZWIwNGNhMDI2ZTc2NmQyMDhiNzNhMDYzZjJlLi4yYTFkZGVkZWUzNmRi
ZTNjZGU1NzJmNDg2MDVhNDY0YzgwYjZlNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC00OCw2ICs0OCw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQWRk
MzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMzI7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTY7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246Om9yODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzI7
CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQ4OwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7CkBAIC05Niw2ICs5NywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIG9yMTYoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7CiAgICAgfQog
CisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0
Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgb3I4KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIo
KSkpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCBmYjM0OGI5MmRkMjYyM2MwNjUxZWZkMmU0YThj
MGU4ZGUyMzdiMjAxLi45NDI2NTdjNjJmMDc0OWNhMDVjNGVlZTRkNjdiOTVmZTY0NTVkOWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0y
MDcsMTAgKzIwNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dE9mQm91bmRzKCkgeyBtX291
dE9mQm91bmRzID0gdHJ1ZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyBy
ZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJl
SUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgfQorICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlE
KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVj
dHVyZUlEOyB9CisgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJl
KSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCiAgICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKik7CiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRl
eCAxZjU2Njk0Y2U3MDBmZGViZTFmZGNiZDA0NGYyYTg3ZDA4OGY3ZWEyLi5lMjg4YTk5NzIwMDhi
Yzk1Mjk3ZjU4YWYwOTU5ZDNmY2Q5NDBkZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTM0LDYgKzM0LDcgQEAgdHlwZXMgWwogICAg
IDpHZXRCeVZhbEhpc3RvcnksCiAgICAgOkdldFB1dEluZm8sCiAgICAgOkluZGV4aW5nVHlwZSwK
KyAgICA6SXRlcmF0aW9uTW9kZU1ldGFkYXRhLAogICAgIDpKU0NlbGwsCiAgICAgOkpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LAogICAgIDpKU0dsb2JhbE9iamVjdCwKQEAgLTExNjIsNiArMTE2
Myw1OSBAQCBvcCA6Z2V0X3Jlc3RfbGVuZ3RoLAogICAgICAgICBudW1QYXJhbWV0ZXJzVG9Ta2lw
OiB1bnNpZ25lZCwKICAgICB9CiAKKyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIGl0ZXJhdG9yID0g
c3ltYm9sSXRlcmF0b3IoaXRlcmFibGUpOyBuZXh0ID0gaXRlcmF0b3IubmV4dDsKKyMgRm9yIGJ1
aWx0aW4gaXRlcmF0b3JzLCBob3dldmVyLCB0aGlzIGhhcyBzcGVjaWFsIGJlaGF2aW9yIHdoZXJl
IG5leHQgYmVjb21lcyB0aGUgZW1wdHkgdmFsdWUsIHdoaWNoCisjIGluZGljYXRlcyB0aGF0IHdl
IGFyZSBpbiBhIGtub3duIGl0ZXJhdGlvbiBtb2RlIHRvIG9wX2l0ZXJhdG9yX25leHQuCitvcCA6
aXRlcmF0b3Jfb3BlbiwKKyAgICBhcmdzOiB7CisgICAgICAgIGl0ZXJhdG9yOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIG5leHQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc3ltYm9sSXRl
cmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6
IHsKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAg
ICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAg
IG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgfSwKKyAgICBjaGVja3BvaW50czogewor
ICAgICAgICBzeW1ib2xDYWxsOiBuaWwsCisgICAgICAgIGdldE5leHQ6IG5pbCwKKyAgICB9CisK
KyMgU2VtYW50aWNhbGx5LCB0aGlzIGlzIG5leHRSZXN1bHQgPSBuZXh0LkBjYWxsKGl0ZXJhdG9y
KTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogbmV4
dFJlc3VsdC52YWx1ZTsKK29wIDppdGVyYXRvcl9uZXh0LAorICAgIGFyZ3M6IHsKKyAgICAgICAg
ZG9uZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBpdGVyYWJsZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0OiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0
YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0
ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxl
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExp
bmtJbmZvLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBkb25lTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBkb25lUHJv
ZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1v
ZGVNZXRhZGF0YSwKKyAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgfSwK
KyAgICB0bXBzOiB7CisgICAgICAgIG5leHRSZXN1bHQ6IEpTVmFsdWUsCisgICAgfSwKKyAgICBj
aGVja3BvaW50czogeworICAgICAgICBjb21wdXRlTmV4dDogbmlsLAorICAgICAgICBnZXREb25l
OiBuaWwsCisgICAgICAgIGdldFZhbHVlOiBuaWwsCisgICAgfQorCiBvcCA6eWllbGQsCiAgICAg
YXJnczogewogICAgICAgICBnZW5lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTEyOTAsNiAr
MTM0NCw4IEBAIG9wIDpvcF9nZXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfZ2V0X2J5
X3ZhbF9yZXR1cm5fbG9jYXRpb24KIG9wIDpvcF9wdXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uCiBv
cCA6b3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9vcGVuX3Jl
dHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uCiBvcCA6
d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZQogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxz
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggYzZlZmUwZDhmZjZjNzk4OTZhZmQwMGUyMGNj
NDI3NzlkM2E0YjBjNy4uZDU4N2VlMDNmMjZkOGRmYjk0ZDA4ZDQ0MjA0MDhjYWM1MGEzOGVkMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTIzMSw2ICsyMzEsMTMgQEAgQml0bWFwPG1heE51
bUNoZWNrcG9pbnRUbXBzPiB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoY29uc3QgQ29kZUJsb2Nr
JiBjb2RlQmxvY2sKICAgICAgICAgICAgIHJlc3VsdC5zZXQoT3BDYWxsVmFyYXJnczo6YXJnQ291
bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICByZXN1bHQuc2V0KE9wSXRlcmF0b3JO
ZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYWNhY2YzYmZl
ZDE1YzZjMTdjYWE2Y2IxZTk1ODEyOGQ1ZDJmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKQEAgLTAsMCArMSwx
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
U3RydWN0cy5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hl
Y2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAg
IHJldHVybiAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc0FycmF5UHJvZmlsZUZv
cihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQor
eworICAgIHJldHVybiBhcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5k
ZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9m
aWxlJiBhcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVk
IGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBBU1NFUlQoaGFzQXJyYXlQcm9maWxlRm9yKG1ldGFk
YXRhLCBjaGVja3BvaW50SW5kZXgpKTsKKyAgICByZXR1cm4gKmFycmF5UHJvZmlsZUZvckltcGwo
bWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVj
b2RlTWV0YWRhdGE+CitWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwoQnl0ZWNvZGVN
ZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVT
RURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0
YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgc3dpdGNoIChj
aGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2Fs
bDogcmV0dXJuICZtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0
ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRQcm9maWxlOworICAg
ICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisK
KyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBv
cF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Cisg
ICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gJm1ldGFkYXRh
Lm1fbmV4dFJlc3VsdFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERv
bmU6IHJldHVybiAmbWV0YWRhdGEubV9kb25lUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CisgICAg
ICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgCisgICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9wcm9maWxlOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNWYWx1ZVByb2ZpbGVGb3Io
Qnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sK
KyAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK1ZhbHVlUHJvZmls
ZSYgdmFsdWVQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBj
aGVja3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKGhhc1ZhbHVlUHJvZmlsZUZvcihtZXRhZGF0
YSwgY2hlY2twb2ludEluZGV4KSk7CisgICAgcmV0dXJuICp2YWx1ZVByb2ZpbGVGb3JJbXBsKG1l
dGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29k
ZT4KK09wZXJhbmQgZGVzdGluYXRpb25Gb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNp
Z25lZCBjaGVja3BvaW50SW5kZXgsIEpJVFR5cGUgdHlwZSA9IEpJVFR5cGU6Ok5vbmUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRl
Y29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNo
ZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxs
OiByZXR1cm4gYnl0ZWNvZGUubV9pdGVyYXRvcjsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Bl
bjo6Z2V0TmV4dDogcmV0dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICAgICAgZGVmYXVsdDogUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9
OworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVy
YXRvcl9uZXh0KSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiB7CisgICAgICAgICAgICBpZiAodHlw
ZSA9PSBKSVRUeXBlOjpERkdKSVQgfHwgdHlwZSA9PSBKSVRUeXBlOjpERkdKSVQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV92YWx1ZTsgLy8gV2UgcmV1c2UgdmFsdWUg
YXMgYSB0ZW1wIGJlY2F1c2UgaXRzIGVpdGhlciBub3QgdXNlZCBpbiBzdWJzZXF1ZW50IGJ5dGVj
b2RlcyBvciB3cml0dGVuIGFzIHRoZSB0ZW1wIG9iamVjdCAuCisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIGJ5dGVjb2RlLm1fZG9uZTsKKyAg
ICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiBieXRlY29kZS5tX3Zh
bHVlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBi
eXRlY29kZS5tX2RzdDsKK30KKworLy8gQ2FsbC1saWtlIG9wY29kZSBsb2NhdGlvbnMKKwordGVt
cGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRm9yKGNvbnN0
IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVO
VVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6
Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9p
bnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiBi
eXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVj
b2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVj
a3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0
dXJuIGJ5dGVjb2RlLm1fbmV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2Rl
Lm1fY2FsbGVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3Vuc2lnbmVkIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5z
aWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5k
ZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9y
X29wZW4pIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Bl
bjo6c3ltYm9sQ2FsbCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiBjb25zdGV4
cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFT
U0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2Fy
Z2M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorcHRyZGlmZl90IHN0YWNrT2Zm
c2V0SW5SZWdpc3RlcnNGb3JDYWxsKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQg
Y2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOwor
ICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4p
IHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yT3Blbjo6c3lt
Ym9sQ2FsbCk7CisgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVy
cyAtIGJ5dGVjb2RlLm1faXRlcmFibGUub2Zmc2V0KCk7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhw
ciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNT
RVJUKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAg
ICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5t
X2l0ZXJhdG9yLm9mZnNldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUu
bV9hcmd2OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorTExJbnRD
YWxsTGlua0luZm8mIGNhbGxMaW5rSW5mb0ZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwg
dW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50
SW5kZXgpOworICAgIHJldHVybiBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbzsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1NjI2
YzEzLi5hNWE1MDdlZDJlOTJkY2VlM2ZjMTUxYmRlYjJhNjI3MjczYzIyNzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTI1
OSw2ICsyNTksOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVh
bFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogCiAgICAgVVNFUyhPcFlpZWxk
LCBnZW5lcmF0b3IsIGFyZ3VtZW50KQogCisgICAgVVNFUyhPcEl0ZXJhdG9yT3Blbiwgc3ltYm9s
SXRlcmF0b3IsIGl0ZXJhYmxlKQorICAgIFVTRVMoT3BJdGVyYXRvck5leHQsIGl0ZXJhdG9yLCBu
ZXh0LCBpdGVyYWJsZSkKKwogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkOgogICAg
ICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU3By
ZWFkPigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDYgKzQ4OSw5IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1CiAKICAgICBERUZTKE9wQ2F0Y2gsIGV4Y2VwdGlvbiwgdGhyb3duVmFsdWUp
CiAKKyAgICBERUZTKE9wSXRlcmF0b3JPcGVuLCBpdGVyYXRvciwgbmV4dCkKKyAgICBERUZTKE9w
SXRlcmF0b3JOZXh0LCBkb25lLCB2YWx1ZSkKKwogICAgIGNhc2Ugb3BfZW50ZXI6IHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3Io
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkMjlmNjBlOTQyODIyNTkxOTQ3NzY4NTU3
ZWE4N2E2NTdmMjNhNjBiLi45MTVjYzYzMWRiZDI4NDVlZTkxMzhlMTM5ZWI2OWU5NjM0MTc1MTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cApAQCAtNDAsMTggKzQwLDM0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDYWxsTGlua0luZm86OkNh
bGxUeXBlIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0g
ICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKQor
ICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgor
ICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAgICByZXR1cm4g
VGFpbENhbGxWYXJhcmdzOyAgICAgICAgCisKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2FzZSBv
cF9jYWxsX2V2YWw6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRl
cmF0b3JfbmV4dDoKICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgaWYgKG9wY29kZUlEID09IG9w
X2NhbGxfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgICAgICByZXR1
cm4gQ2FsbFZhcmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkKKworICAg
IGNhc2Ugb3BfY29uc3RydWN0OgogICAgICAgICByZXR1cm4gQ29uc3RydWN0OwotICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncykKKworICAgIGNhc2Ugb3BfY29uc3RydWN0
X3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdzOwotICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGwpCisKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAg
cmV0dXJuIFRhaWxDYWxsOwotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFy
YXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwotICAg
IHJldHVybiBUYWlsQ2FsbFZhcmFyZ3M7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2Fs
bDsKIH0KIAogQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjEzZDE3MzRhMDJj
NThhMzIxNzU5MjVkMjg4NTVhMmEyNjAwMTgxOC4uYjkwZjgyNDZmYzYxMTEzNzhhZWJlZjkwMjU2
ZjExNWVmMTdlM2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCkBAIC04MSw2ICs4MSwxMyBAQCBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBD
b2RlQgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5z
dHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxs
TGlua0luZm87CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAg
ICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5t
ZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgorICAgICAgICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1
Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2Fs
bExpbmtJbmZvOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBDYWxsTGlua1N0YXR1cygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDUzYjFiNDQ5MjBiNmE4NzgxNTdlNjE2MGI2NTNlN2E0
ZTczMDRiMi4uZGM0OWFmMGQ1M2ZiMzU4ZGY2MjFmNGMwNDY3YWNiMTBkMDQwNzg4NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisjaW5jbHVk
ZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpA
QCAtNTgzLDYgKzU4NCwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5L
KE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAKKyAgICAgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRB
KE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1
ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFU
QShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFs
dWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAg
ICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURB
VEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsMTQgKzEyMzksMjcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQxOAogICAgICAgICAvLyBXZSBu
ZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGlu
Z19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2NvcGUgcmVzb2x1dGlvbi4KIAot
ICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0
QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgIGF1dG8gY2xlYXJJZk5lZWRlZCA9IFsmXSAoR2V0
QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhLCBBU0NJSUxpdGVyYWwgb3BOYW1lKSB7Cisg
ICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJ
RCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRT
dHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFj
Y2Vzcy4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YSk7CisgICAgICAgICAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyAiLCBvcE5hbWUs
ICIgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1v
ZGVNZXRhZGF0YSk7CisgICAgICAgIH07CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgY2xlYXJJ
Zk5lZWRlZChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG9wZW4iX3MpOworICAg
ICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0Pihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVhcklmTmVlZGVkKG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG5leHQiX3MpOworICAgICAgICAgICAgY2xl
YXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLCAiaXRlcmF0b3IgbmV4dCJf
cyk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlk
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVhcklmTmVlZGVkKG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLCAiZ2V0IGJ5IGlkIl9zKTsKICAgICAgICAgfSk7CiAKICAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsKQEAgLTEzMjYsOSArMTM1NCwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTElu
dElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAgICAg
ICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWly
LmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAg
ICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7
CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRD
YWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAg
ICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRh
ZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTElu
dCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRC
eUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMp
Lm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9y
IG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBk
b24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRh
IGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4u
CisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hl
KG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENh
Y2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
OwpAQCAtMzA0MSw2ICszMDg3LDExIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRW
YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvCiAKICN1bmRl
ZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIHJldHVybiAmdmFs
dWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0
aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworICAgIGNhc2Ugb3BfaXRlcmF0b3Jf
bmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9w
SXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQo
KSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggMjJl
NzZiMTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRjZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNj
ZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwxMiArMzksMjQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlm
IChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2Zp
bGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChh
dXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKIAog
ICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAjdW5k
ZWYgVklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9y
T3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEu
bV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9p
dGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0
UHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBm
dW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1
bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRh
ZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9ICAgCiAKIH0K
IApAQCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUo
Y29uc3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJU0lUMQogI3VuZGVmIFZJU0lUMgorCisg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwor
ICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBhY2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2
NzdhMjg4YzIuLjIyMmViMTk1ZDEzMDYxOTc3MDZhZmQyNmI0ODFmMzYxMjczNzI5MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtODYs
NiArODYsMzYgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAgICBjYXNlIG9wX2dldF9ieV92
YWw6CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAK
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0KTsKKyAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEo
cHJvZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBi
YWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2FkLgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDM5CisgICAgICAgIGlmIChtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAg
ICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAg
c3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1
cmVJRDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0
YWRhdGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9p
bnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgeworICAgICAgICAgICAgaWYgKG1ldGFk
YXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7Cisg
ICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVy
dHlOYW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUpOworICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlk
TW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3Zh
bHVlTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWRl
bnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAppbmRleCAwODVh
ZThkMTk5NzZiODg2ZjAwMTlmODVmYTY3YjAyYmUxNGNkYTVlLi4zZDcwY2Q1NDNlY2ZhZTkwMjI1
MDI5NjAxYTBkNDA1ZWM2NzFiMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMzIsNyArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3Ry
dWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IDo6SlNDOjpPcGNvZGVJ
RDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aENo
ZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRI
X0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0
ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9CWVRF
Q09ERV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mQnl0ZWNvZGVz
V2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhKTsKICAgICBz
dGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9IG9wX3dpZGUxNjsKICAgICBzdGF0aWMg
Y29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IG9wX3dpZGUzMjsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7
CkBAIC00MSw3ICs0Myw5IEBAIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAKIHN0cnVjdCBXYXNt
T3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IFdhc21PcGNvZGVJRDsKKyAgICBz
dGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRz
ID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9XQVNNX1dJVEhfQ0hFQ0tQT0lOVFMp
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0
YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX1dBU01fV0lUSF9NRVRBREFU
QSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8
PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBP
cGNvZGVJRCB3aWRlMTYgPSB3YXNtX3dpZGUxNjsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29k
ZUlEIHdpZGUzMiA9IHdhc21fd2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5z
aWduZWQqIG9wY29kZUxlbmd0aHMgPSB3YXNtT3Bjb2RlTGVuZ3RoczsKQEAgLTk4LDEyICsxMDIs
MjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFycm93KCktPnRlbXBsYXRlIG9wY29kZUlE
PFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBPcGNvZGVTaXplIHdpZHRoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChpc1dpZGUzMjxUcmFpdHM+KCkpCisgICAgICAgICAgICBy
ZXR1cm4gT3Bjb2RlU2l6ZTo6V2lkZTMyOworICAgICAgICByZXR1cm4gaXNXaWRlMTY8VHJhaXRz
PigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6TmFycm93OworICAgIH0KKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGJvb2wg
aGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0
cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGE7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgYm9vbCBo
YXNDaGVja3BvaW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJh
aXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50czsKKyAgICB9
CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBp
bnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7CkBAIC0xMzcsNiArMTU1LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6
ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CisgICAgVCBhc0tub3du
V2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKChpczxULCBUcmFpdHM+KCkpKTsK
KyAgICAgICAgcmV0dXJuIFQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB0eXBlbmFtZSBUeXBlQnlT
aXplPHdpZHRoPjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0aCA9PSBPcGNvZGVTaXplOjpO
YXJyb3cgPyAxIDogMikpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFt
ZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBUKiBjYXN0KCkKICAgICB7CkBAIC0xNjEs
NyArMTg2LDcgQEAgcHVibGljOgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNXaWRlMTY8VHJh
aXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNv
ZGVTaXplOjpXaWRlMTY+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRl
MTY+Kj4odGhpcyArIDEpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9
IEpTT3Bjb2RlVHJhaXRzPgpAQCAtMTY5LDE0ICsxOTQsMTYgQEAgcHVibGljOgogICAgIHsKIAog
ICAgICAgICBBU1NFUlQoaXNXaWRlMzI8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4oYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4odGhpcyArIDEpOwogICAgIH0KIH07CiAK
IHN0cnVjdCBJbnN0cnVjdGlvbiA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248T3Bjb2RlSUQ+IHsK
IH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnN0cnVjdGlvbikgPT0gMSwgIlNvIHBvaW50ZXIg
bWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogc3RydWN0IFdhc21JbnN0YW5jZSA6
IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2Vy
dChzaXplb2YoV2FzbUluc3RhbmNlKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1l
IGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MmQ2OTE5MzFjNmM3OTQ4ZTU1N2U0ZjU2OTIzYWUzNDkwZmViOWU5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRh
ZGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xh
c3MgSXRlcmF0aW9uTW9kZSA6IHVpbnQ4X3QgeworICAgIEdlbmVyaWMgPSAxIDw8IDAsCisgICAg
RmFzdEFycmF5ID0gMSA8PCAxLAorfTsKKworY29uc3RleHByIHVpbnQ4X3QgbnVtYmVyT2ZJdGVy
YXRpb25Nb2RlcyA9IDI7CisKK09WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NM
QVNTX1dJVEhfSU5URVJHUkFMUyhJdGVyYXRpb25Nb2RlKTsKKworc3RydWN0IEl0ZXJhdGlvbk1v
ZGVNZXRhZGF0YSB7CisgICAgdWludDhfdCBzZWVuTW9kZXMgeyAwIH07CisgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoZGVjbHR5cGUoc2Vlbk1vZGVzKSkgPT0gc2l6ZW9mKEl0ZXJhdGlvbk1vZGUp
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCAyZDE0M2I5Y2Y2NzQzMDVk
NDBjOTFlYjBhZTM1MTMzMTI1Njk0NDFmLi5iYmUxZjY3ZmZiZWZlOGU4YmIxMzY3ZWI2YzdlZDY3
Y2JhYThhYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNjAsMTQgKzYwLDMxIEBAIHZvaWQgTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBj
b25zdCBGCiAgICAgfQogCiAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBtX293bmVyLT5pbnN0cnVj
dGlvbnMoKS5hdChtX2J5dGVjb2RlT2Zmc2V0LmdldCgpKTsKLSAgICBjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEobV9vd25lci5nZXQo
KSkpOworICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKKyAgICBjYXNlIG9w
X2dldF9ieV9pZDoKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+
YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIGNs
ZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1l
dGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSk7
CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEubV9kb25lTW9kZU1ldGFk
YXRhKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX3ZhbHVlTW9k
ZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
fQogCi12b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSkKK3Zv
aWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxM
SW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIC8v
IEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFsdWUuCi0gICAgbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CisgICAgbWV0YWRhdGEu
Y2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmgKaW5kZXggMjIwZmZmM2UzYmY1NDM0MWU5NjFjODJkZjhjNGU4YzkwMDA3MzRiZS4uMWQ1
OTU3ZWZmODEwOTJhMWRhYmRlZTUwMjVjYWM1ZTZmMzg2NzgyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAotICAgIHN0YXRpYyB2b2lk
IGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYpOworICAgIHN0YXRp
YyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0QnlJZE1vZGVNZXRhZGF0YSYpOwogCiAg
ICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAppbmRleCAxODUx
YjYzYzdjYTZhZWYyZmIzNmJmMmY4N2U5MmExOWUwZDQwYzE4Li5hYTg4NTlhZGQ2Mjg2MGZmZGFk
YjRkMjIyODdjMzRiMDdjZTViMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRX
aWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKG0KICAgICBt
YWNybyhPcFRhaWxDYWxsKSBcCiAgICAgbWFjcm8oT3BDYWxsRXZhbCkgXAogICAgIG1hY3JvKE9w
Q29uc3RydWN0KSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck9wZW4pIFwKKyAgICBtYWNybyhPcEl0
ZXJhdG9yTmV4dCkgXAorCiAKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmlu
ZGV4IDVkYjE4YzY0ODJkNzZkNGZhN2I0NmU5OGI5Zjk3MDBkYzM4NjMwZjQuLjk0NjU4YjA5NmJm
MTkzYzg3Y2ZkNzFhOWY1YmRlMTVmNjEzMzJhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xMjAsNiArMTIwLDE2IEBAIGlubGlu
ZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2lubGluZSBib29sIGlzU3VidHlwZVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISh2YWx1ZSAmIH5j
YXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKK2lubGluZSBib29sIHNwZWN1bGF0aW9uQ29udGFpbnMo
U3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIGNhdGVnb3J5KQoreworICAgIHJl
dHVybiAhISh2YWx1ZSAmIGNhdGVnb3J5KSAmJiB2YWx1ZTsKK30KKwogaW5saW5lIGJvb2wgaXND
ZWxsU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuICEhKHZh
bHVlICYgU3BlY0NlbGwpICYmICEodmFsdWUgJiB+U3BlY0NlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmluZGV4IDk2MTBkY2U1Y2RiYzNlYzA5
Y2UzM2IxZDZiY2M0YjNmZjhhNmMzYzguLmU5YmY5NTMxZjdiYTU5NTczMTEwZTMxYTdhNDRjZDIy
OGI3NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBl
clNhbXBsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmgKQEAgLTQ4LDYgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfc3VwZXJTYW1w
bGVyQ291bnQtLTsKICAgICB9CiAKKyAgICB2b2lkIHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fZG9TYW1wbGUpOworICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CisgICAg
ICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rv
U2FtcGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNkMzYyY2FjMTlkNDkzOTg5NDc3N2Jl
ZGE3YzBhYzJkNjM2MDYzZi4uOGZlZGU2MmI1MzBlYmQxMDFmZWRhNjFhYmFiOTQ5YTNmM2IzNTli
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwMTYsMTQgKzQwMTYsMTUgQEAgYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29uc3QgVmFyaWFibGUm
IHZhcmlhYmxlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNz
aW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUs
IFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4
cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29w
Tm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQogewogICAgIGJvb2wgaXNGb3JB
d2FpdCA9IGZvckxvb3BOb2RlID8gZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQoKSA6IGZhbHNlOwot
ICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNGb3JBd2FpdCAmJiBpc0FzeW5jRnVuY3Rpb25Q
YXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CisgICAgYXV0byBzaG91bGRFbWl0QXdhaXQgPSBpc0Zv
ckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOworICAgIEFTU0VSVCghaXNG
b3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKTsKIAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5v
ZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
dGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihzdWJqZWN0LmdldCgp
LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0
b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKHN1YmplY3Qu
Z2V0KCksIG5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4
dCk7CiAKICAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKQEAgLTQxMzAsNyAr
NDEzMSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIH0KIAogICAgICAgICB7
Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdl
dCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDog
RW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1
ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUsIHNob3VsZEVt
aXRBd2FpdCk7CiAKICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCBsb29wRG9uZS5n
ZXQoKSk7CiAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00MTQzLDcgKzQxNDQsMTQ1IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIHBvcEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKCk7CiAg
ICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgewogICAgICAgICAgICAgLy8gSXRlcmF0b3JD
bG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93LgotICAgICAgICAgICAgZW1p
dEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9yQXdhaXQgPyBFbWl0QXdh
aXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOworICAgICAgICB9
CisgICAgfQorICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7Cit9CisKKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lk
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSog
Zm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKK3sKKyAgICBpZiAo
IU9wdGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNpY3MoKSB8fCBpczMyQml0KCkgfHwgKGZvckxv
b3BOb2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkpKSB7CisgICAgICAgIGVtaXRHZW5l
cmljRW51bWVyYXRpb24obm9kZSwgc3ViamVjdE5vZGUsIGNhbGxCYWNrLCBmb3JMb29wTm9kZSwg
Zm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYWJsZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXROb2RlKGl0
ZXJhYmxlLmdldCgpLCBzdWJqZWN0Tm9kZSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRl
cmF0b3JTeW1ib2wgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmFibGUuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IG5leHRPckluZGV4ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0
ZXJhdG9yID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBu
dWxscHRyLCAwKTsKKyAgICBtb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGl0ZXJhYmxlLmdldCgp
KTsKKyAgICBlbWl0SXRlcmF0b3JPcGVuKGl0ZXJhdG9yLmdldCgpLCBuZXh0T3JJbmRleC5nZXQo
KSwgaXRlcmF0b3JTeW1ib2wuZ2V0KCksIGFyZ3MsIG5vZGUpOworCisgICAgUmVmPExhYmVsPiBs
b29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiB0cnlTdGFydExhYmVsID0gbmV3
TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlWaWFUaHJvd0xhYmVsID0gbmV3TGFiZWwo
KTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExh
YmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGVuZENhdGNoTGFi
ZWwgPSBuZXdMYWJlbCgpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVt
cG9yYXJ5KCk7CisgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisg
ICAgLy8gUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yJ3MgbGlmZXRpbWUgbXVzdCBiZSBsb25n
ZXIgdGhhbiBJdGVyYXRvckNsb3NlQ29udGV4dC4KKyAgICBGaW5hbGx5Q29udGV4dCBmaW5hbGx5
Q29udGV4dCgqdGhpcywgZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICBwdXNoRmluYWxseUNvbnRy
b2xGbG93U2NvcGUoZmluYWxseUNvbnRleHQpOworCisgICAgeworICAgICAgICBSZWY8TGFiZWxT
Y29wZT4gc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOworCisgICAgICAg
IFJlZjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdExhYmVsKGxv
b3BTdGFydC5nZXQoKSk7CisgICAgICAgIGVtaXRMYWJlbCgqc2NvcGUtPmNvbnRpbnVlVGFyZ2V0
KCkpOworICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICBpZiAoZm9yTG9vcE5vZGUp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZvckxvb3BOb2RlLT5pc0Zvck9mTm9kZSgp
KTsKKyAgICAgICAgICAgIHByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlv
bihmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgIGVtaXREZWJ1
Z0hvb2soZm9yTG9vcE5vZGUtPmxleHByKCkpOworICAgICAgICB9CisKKyAgICAgICAgeworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRvbmUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAg
ICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3MoKnRoaXMsIG51bGxwdHIsIDApOworICAgICAg
ICAgICAgbW92ZShuZXh0QXJncy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworCisg
ICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBpdGVy
YWJsZS5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIG5leHRBcmdzLCBub2RlKTsKKyAgICAgICAg
ICAgIGVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsKKyAgICAgICAgVHJ5
RGF0YSogdHJ5RGF0YSA9IHB1c2hUcnkodHJ5U3RhcnRMYWJlbC5nZXQoKSwgZmluYWxseVZpYVRo
cm93TGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworICAgICAg
ICBjYWxsQmFjaygqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgICAgICBlbWl0SnVtcChsb29wU3Rh
cnQuZ2V0KCkpOworCisgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGFicnVw
dCBjb21wbGV0aW9ucy4KKyAgICAgICAgeworICAgICAgICAgICAgLy8gRmluYWxseSBibG9jayBm
b3IgdGhlIGVudW1lcmF0aW9uLgorICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlWaWFUaHJv
d0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHBvcFRyeSh0cnlEYXRhLCBmaW5hbGx5VmlhVGhy
b3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gZmluYWxseUJvZHlMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmluYWxseUV4
Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisKKyAgICAgICAgICAgIGVtaXRPdXRP
ZkxpbmVGaW5hbGx5SGFuZGxlcihmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdpc3Rl
cigpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIHRyeURhdGEpOwor
ICAgICAgICAgICAgbW92ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlD
b250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgZW1pdEp1bXAo
ZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5
TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgbW92ZUVtcHR5VmFsdWUoZmluYWxseUV4Y2VwdGlv
blJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgLy8gRmluYWxseSBmYWxsIHRocm91Z2gg
Y2FzZS4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5Qm9keUxhYmVsLmdldCgpKTsKKyAg
ICAgICAgICAgIHJlc3RvcmVTY29wZVJlZ2lzdGVyKCk7CisKKyAgICAgICAgICAgIFJlZjxMYWJl
bD4gZmluYWxseURvbmUgPSBuZXdMYWJlbCgpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9y
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5n
ZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1
cm5DYWxsVHJ5U3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgZW1pdExhYmVsKHJldHVy
bkNhbGxUcnlTdGFydC5nZXQoKSk7CisgICAgICAgICAgICBUcnlEYXRhKiByZXR1cm5DYWxsVHJ5
RGF0YSA9IHB1c2hUcnkocmV0dXJuQ2FsbFRyeVN0YXJ0LmdldCgpLCBjYXRjaExhYmVsLmdldCgp
LCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRDYXRjaCk7CisKKyAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1vdmUo
cmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAg
ICAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFy
dCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgp
KSwgZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKworICAgICAg
ICAgICAgZW1pdExhYmVsKGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRGaW5h
bGx5Q29tcGxldGlvbihmaW5hbGx5Q29udGV4dCwgZW5kQ2F0Y2hMYWJlbC5nZXQoKSk7CisKKyAg
ICAgICAgICAgIHBvcFRyeShyZXR1cm5DYWxsVHJ5RGF0YSwgZmluYWxseURvbmUuZ2V0KCkpOwor
CisgICAgICAgICAgICAvLyBDYXRjaCBibG9jayBmb3IgZXhjZXB0aW9ucyB0aGF0IG1heSBiZSB0
aHJvd24gd2hpbGUgY2FsbGluZyB0aGUgcmV0dXJuCisgICAgICAgICAgICAvLyBoYW5kbGVyIGlu
IHRoZSBlbnVtZXJhdGlvbiBmaW5hbGx5IGJsb2NrLiBUaGUgb25seSByZWFzb24gd2UgbmVlZCB0
aGlzCisgICAgICAgICAgICAvLyBjYXRjaCBibG9jayBpcyBiZWNhdXNlIGlmIGVudGVyZWQgdGhl
IGFib3ZlIGZpbmFsbHkgYmxvY2sgZHVlIHRvIGEgdGhyb3duCisgICAgICAgICAgICAvLyBleGNl
cHRpb24sIHRoZW4gd2Ugd2FudCB0byByZS10aHJvdyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIG9u
IGV4aXRpbmcKKyAgICAgICAgICAgIC8vIHRoZSBmaW5hbGx5IGJsb2NrLiBPdGhlcndpc2UsIHdl
J2xsIGxldCBhbnkgbmV3IGV4Y2VwdGlvbiBwYXNzIHRocm91Z2guCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgICAgICAgICAgZW1pdE91dE9mTGluZUZpbmFsbHlIYW5kbGVyKGV4Y2VwdGlv
blJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCks
IHJldHVybkNhbGxUcnlEYXRhKTsKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEg
c3ludGhlc2l6ZWQgY2F0Y2ggYmxvY2sgYW5kIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbmV2ZXIgbmVl
ZAorICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUgYW55IHN5bWJvbHMgZnJvbSB0aGUgc2Nv
cGUsIHdlIGNhbiBza2lwIHJlc3RvcmluZyB0aGUgc2NvcGUKKyAgICAgICAgICAgICAgICAvLyBy
ZWdpc3RlciBoZXJlLgorCisgICAgICAgICAgICAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNFbXB0eShu
ZXdUZW1wb3JhcnkoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKSwgdGhyb3dMYWJl
bC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbW92ZShleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwg
ZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgICAgIGVtaXRM
YWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0VGhyb3coZXhjZXB0
aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKGVuZENhdGNo
TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYm9vbCBi
cmVha0xhYmVsSXNCb3VuZCA9IHNjb3BlLT5icmVha1RhcmdldE1heUJlQm91bmQoKTsKKyAgICAg
ICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKQorICAgICAgICAgICAgZW1pdExhYmVsKHNjb3BlLT5i
cmVha1RhcmdldCgpKTsKKyAgICAgICAgcG9wRmluYWxseUNvbnRyb2xGbG93U2NvcGUoKTsKKyAg
ICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7CisgICAgICAgICAgICAvLyBJdGVyYXRvckNs
b3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9sIGZsb3cuCisgICAgICAgICAgICBlbWl0
SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIEVtaXRBd2FpdDo6Tm8p
OwogICAgICAgICB9CiAgICAgfQogICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7CkBAIC00
MjY1LDU2ICs0NDA0LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0Vt
cHR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogICAgIE9wSXNFbXB0eTo6ZW1p
dCh0aGlzLCBkc3QsIHNyYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KLSAgICAKLVJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQpCi17Ci0gICAgewot
ICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAg
ICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICAg
ICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1
bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQo
KSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgICAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1p
dEF3YWl0OjpZZXMpCi0gICAgICAgICAgICBlbWl0QXdhaXQoZHN0KTsKLSAgICB9Ci0gICAgewot
ICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgIGVt
aXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2Jq
ZWN0LmdldCgpKTsKLSAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQg
aW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKLSAgICAgICAgZW1pdExhYmVsKHR5cGVJ
c09iamVjdC5nZXQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lz
dGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKLXsKLSAg
ICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwg
MSk7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Ip
OwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUp
OwotICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
bmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotICAgIH0KLQotICAgIHJldHVybiBkc3Q7
Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVy
SUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3
YWl0IGRvRW1pdEF3YWl0KQotewotICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7Ci0g
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwotICAgIGVt
aXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9k
LmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBu
ZXdUZW1wb3JhcnkoKTsKLSAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywg
bnVsbHB0cik7Ci0gICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJh
dG9yKTsKLSAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotCi0gICAg
aWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICBlbWl0QXdhaXQodmFs
dWUuZ2V0KCkpOwotCi0gICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFy
eSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwotICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Ci0gICAgZW1p
dExhYmVsKGRvbmUuZ2V0KCkpOwotfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoSW5k
ZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5k
ZXhSZWdpc3RlcikKIHsKQEAgLTQ1NTUsNyArNDY0NCwzNSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiAgICAgbW92ZSh2YWx1ZSwgZ2VuZXJh
dG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVuKFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgUmVnaXN0ZXJJRCog
c3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBjb25zdCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZy
YW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6
ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7ICsraSkKKyAg
ICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CisKKyAgICBpZiAoc2hvdWxk
RW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJl
c3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBlbWl0RXhwcmVzc2lvbkluZm8obm9k
ZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICBP
cEl0ZXJhdG9yT3Blbjo6ZW1pdCh0aGlzLCBpdGVyYXRvciwgbmV4dE9ySW5kZXgsIHN5bWJvbEl0
ZXJhdG9yLCBpdGVyYWJsZS50aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUuc3RhY2tPZmZzZXQoKSk7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJ
RCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0ZXJhYmxlLCBSZWdpc3Rl
cklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYgaXRlcmF0b3IsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwg
ZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsgKytpKQor
ICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFyeSgpKTsKKworICAgIGlmIChzaG91
bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBlbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlRXhw
cmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhu
b2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAg
IE9wSXRlcmF0b3JOZXh0OjplbWl0KHRoaXMsIGRvbmUsIHZhbHVlLCBpdGVyYWJsZSwgbmV4dE9y
SW5kZXgsIGl0ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5zdGFja09mZnNldCgpKTsK
K30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0
b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQog
ewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKICAgICBl
bWl0Q2FsbEl0ZXJhdG9yKGl0ZXJhdG9yLmdldCgpLCBhcmd1bWVudCwgbm9kZSk7CkBAIC00NTYz
LDYgKzQ2ODAsNTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVy
YXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXgKICAgICByZXR1cm4gaXRlcmF0
b3IuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwg
RW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBu
ZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1l
dGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBu
b2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7
CisKKyAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAgICAg
ICAgZW1pdEF3YWl0KGRzdCk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVmPExhYmVsPiB0eXBl
SXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmpl
Y3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgICAgIGVt
aXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiJfcyk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgIH0K
KyAgICByZXR1cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIHsKKyAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgbW92
ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIG1vdmUo
bmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRD
YWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBu
b2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVn
Z2FibGVDYWxsOjpObyk7CisgICAgfQorCisgICAgcmV0dXJuIGRzdDsKK30KKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1p
dEF3YWl0KQoreworICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBp
dGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAgIGVtaXRKdW1wSWZU
cnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwg
ZG9uZS5nZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7
CisgICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAg
ICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgp
LCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgaWYgKGRvRW1p
dEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAgICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkp
OworCisgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1
ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOworICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgZW1pdExhYmVsKGRv
bmUuZ2V0KCkpOworfQorCisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5
SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuYXN5bmNJdGVyYXRv
clN5bWJvbCk7CkBAIC00NTc1LDcgKzQ3NDMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YQog
ICAgIGVtaXRKdW1wKGFzeW5jSXRlcmF0b3JGb3VuZC5nZXQoKSk7CiAgICAgZW1pdExhYmVsKGFz
eW5jSXRlcmF0b3JOb3RGb3VuZC5nZXQoKSk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29t
bW9uSXRlcmF0b3IgPSBlbWl0R2V0SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb21tb25JdGVyYXRvciA9IGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoYXJn
dW1lbnQsIG5vZGUpOwogICAgIG1vdmUoaXRlcmF0b3IuZ2V0KCksIGNvbW1vbkl0ZXJhdG9yLmdl
dCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CkBA
IC00NjA0LDcgKzQ3NzIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
bGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogewogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOwogICAgIHsKLSAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5jSXRlcmF0b3IoYXJndW1lbnQs
IG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpB
c3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5jSXRlcmF0b3IoYXJndW1lbnQsIG5v
ZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICAgICAgUmVmPExh
YmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00NjQyLDcgKzQ4MTAsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmRmFsc2UoZW1p
dElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQoKSksIHRocm93TWV0
aG9kRm91bmQuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgICAgIEVtaXRBd2FpdCBlbWl0QXdh
aXRJbkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87Ci0gICAg
ICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBl
bWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOworICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0
b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGVtaXRBd2FpdEluSXRlcmF0b3JD
bG9zZSk7CiAKICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJEZWxlZ2F0
ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC4iX3MpOwogCkBAIC00
NzAzLDcgKzQ4NzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVn
YXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAg
ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwg
aXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgIGVtaXRJdGVy
YXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBp
dGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOwogCiAgICAgICAgICAgICBlbWl0TGFi
ZWwoYnJhbmNoT25SZXN1bHQuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDUzNGNkODI4YWFj
M2QxNDBiNGY0NmM4Njg3NjgwOTE0ZTBkZTMyNS4uNmI3MDhlOTZhYjE0NjBkYTZhMGFlMGNiOTUz
NjhhNzlkY2Y4ZWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODI4LDYgKzgyOCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJRCog
bmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3RlciwKICAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdp
c3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9z
aXRpb24mKTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3RO
b2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9v
cFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAgICAgICAgIHZvaWQgZW1pdEVudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBz
dWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIsIFJlZ2lzdGVySUQq
IGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXBsYXRlTm9kZSop
OwpAQCAtODk4LDkgKzg5OSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdElzRGVyaXZlZEFycmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7
IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIERlcml2ZWRBcnJheVR5cGUpOyB9
CiAgICAgICAgIHZvaWQgZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUoUmVnaXN0ZXJJRCogdmFs
dWUsIGNvbnN0IFN0cmluZyYgZXJyb3IpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVy
YXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3Rl
cklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEpTQzo6
RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRN
ZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwotICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckNs
b3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJh
dG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIFJl
Z2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBpdGVyYWJsZSwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JOZXh0
KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBpdGVyYWJs
ZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMmIGl0ZXJhdG9yLCBjb25z
dCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVy
YXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwg
UmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
LCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZh
bHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CisgICAgICAgIHZvaWQg
ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7CiAK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0
LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKIApAQCAtOTUwLDkgKzk1Nyw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXNoQ2F0Y2hTY29wZShWYXJpYWJsZUVu
dmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBvcENhdGNoU2NvcGUoVmFyaWFibGVFbnZp
cm9ubWVudCYpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJdGVyYXRvcihSZWdpc3Rl
cklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7
Ci0KICAgICAgICAgdm9pZCBlbWl0QXdhaXQoUmVnaXN0ZXJJRCopOwogICAgICAgICB2b2lkIGVt
aXRHZXRTY29wZSgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFdpdGhTY29wZShSZWdp
c3RlcklEKiBvYmplY3RTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDRmZGI0ZGQ1NGQ0OTJmOTBkMmQ3MjFm
ZDdkYWMxMmZmN2QyZjg1MC4uMmIxNWNhYTQ3MTNhODg1NjVjNGNkMDk1MjZmOTBjMjQ1ZjYzYTAw
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtNDU3Miw3ICs0NTcyLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpi
aW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBpZiAobV90YXJnZXRQYXR0ZXJucy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCB0
aGlzKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRv
ci5nZXQoKSwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1ODgsNyArNDU4
OCw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CiAKICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgp
LCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2Qu
Z2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMo
KS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgp
LCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCku
dmFsdWUpOwpAQCAtNDYyNCw3ICs0NjI0LDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5k
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOwogCiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4
dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgp
LCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9u
ZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRl
cmF0aW9uRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFs
dWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVlKTsK
QEAgLTQ2NDIsNyArNDY0Miw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKIAogICAgIFJlZjxM
YWJlbD4gaXRlcmF0b3JDbG9zZWQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBnZW5lcmF0
b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0b3JDbG9zZWQuZ2V0KCkpOwotICAg
IGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAg
Z2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRvckNsb3NlZC5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCAwYTRhMTFmOWI0MGU2YjEzYzU5NjQyMjhlNDExMjg5ZjFkOWVl
ODY2Li4xOGRhZTAwNGM3MjJjZDZmZGNmODkxMmJjNWM0MjEzYTQzMWIyNDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC00Mzk4LDEwICs0Mzk4LDggQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAgICAgICAgICAgICAgIGZ1bmN0
b3IoZm9yTm9kZShub2RlKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9
IG1fc3RhdGUubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3RvcihtX3N0
YXRlLmFyZ3VtZW50KGkpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5udW1iZXJPZkxv
Y2FscygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUubG9jYWwoaSkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSBtX3N0YXRlLnNpemUoKTsgaS0tOykKKyAgICAgICAgZnVuY3RvcihtX3N0
YXRlLmF0SW5kZXgoaSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlw
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJh
Y3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0
YXRlLmgKaW5kZXggODk3YzcwZGZmYmEwNjZiNjQ5Y2FmZGNjMWVmMDkzMzc2ODEwNGQxMy4uNDM4
ZTE2ZGU4NTk1OTI1NGQ5NTU3MjFiNmYwOGRiOTU4MTRmZDhmNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKQEAgLTEzNywxMSAr
MTM3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKGVkZ2Uubm9kZSgp
KTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxv
Y2stPnZhbHVlc0F0VGFpbC5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50
cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX2Js
b2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2lnbmVkIG51bWJl
ck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZlRt
cHMoKTsgfQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVy
biBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYg
b3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5v
cGVyYW5kKG9wZXJhbmQpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaW5kZXgpOyB9CiAgICAgQWJz
dHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1
ZXNBdFRhaWwuYXJndW1lbnQoaW5kZXgpOyB9CisgICAgQWJzdHJhY3RWYWx1ZSYgdG1wKHNpemVf
dCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLnRtcChpbmRleCk7IH0KICAg
ICAKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDA5OTdiYWIwNTI1MjY0
ZTZmMTY0ODU0MjQyZDk0Y2UzYjU3ZTM2ZGMuLmNkMjY0MmU5NTRlZWY4ZmY2YjFkNjI4NjcxZjNm
M2YxZThkMzUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgi
CiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
KyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURl
Zi5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Q2FsbExpbmtTdGF0dXMuaCIKQEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
SGVscGVyIGZvciBtaW4gYW5kIG1heC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotICAgIGJvb2wgaGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVU
eXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZU1p
bk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIAogICAgIHZvaWQgcmVmaW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYs
IE5vZGUqIGNhbGxUYXJnZXQpOwogICAgIC8vIEJsb2NrcyBjYW4gZWl0aGVyIGJlIHRhcmdldGFi
bGUgKGkuZS4gaW4gdGhlIG1fYmxvY2tMaW5raW5nVGFyZ2V0cyBvZiBvbmUgSW5saW5lU3RhY2tF
bnRyeSkgd2l0aCBhIHdlbGwtZGVmaW5lZCBieXRlY29kZUJlZ2luLApAQCAtMTc0LDcgKzE3NSw3
IEBAIHByaXZhdGU6CiAgICAgLy8gSGFuZGxlIGNhbGxzLiBUaGlzIHJlc29sdmVzIGlzc3VlcyBz
dXJyb3VuZGluZyBpbmxpbmluZyBhbmQgaW50cmluc2ljcy4KICAgICBlbnVtIFRlcm1pbmFsaXR5
IHsgVGVybWluYWwsIE5vblRlcm1pbmFsIH07CiAgICAgVGVybWluYWxpdHkgaGFuZGxlQ2FsbCgK
LSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxG
cmFtZTo6S2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgICAgICBPcGVyYW5kIHJl
c3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25TaXplLAogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMsCiAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxP
cD4KQEAgLTE4OCwyNyArMTg5LDI3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVSZWN1cnNp
dmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBlbWl0RnVuY3Rpb25DaGVja0lmTmVlZGVkKTsKICAgICB1bnNpZ25lZCBpbmxpbmluZ0Nv
c3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5n
IGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgog
ICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxz
ZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRsZVZhcmFyZ3NJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlz
QXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJn
dW1lbnRzT2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7Cisg
ICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJh
bmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmly
dHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3Vt
ZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kKTsKICAgICB1bnNpZ25lZCBnZXRJbmxpbmluZ0JhbGFuY2UoY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBlbnVtIGNsYXNzIENh
bGxPcHRpbWl6YXRpb25SZXN1bHQgeyBPcHRpbWl6ZWRUb0p1bXAsIElubGluZWQsIERpZE5vdGhp
bmcgfTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxWYXJpYW50KE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmlu
Z0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVj
a0NhbGxlZSk7Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtT
dGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgs
IE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxWYXJpYW50
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCBy
ZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdC
YWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tD
YWxsZWUpOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGlu
dCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUg
Y2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgdm9pZCBpbmxpbmVD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFy
aWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgdm9pZCBpbmxpbmVDYWxsKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBS
ZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBj
YWxsLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50
cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVy
YW5kIHJlc3VsdCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVE
T01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29s
IGhhbmRsZUludHJpbnNpY0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwg
Tm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAg
Ym9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2Rl
KiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNv
bnN0cnVjdG9yKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJh
eVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5k
bGVUeXBlZEFycmF5Q29uc3RydWN0b3IoT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24q
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlw
ZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUNvbnN0YW50SW50
ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUNvbnN0
YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSogaGFuZGxlUHV0QnlP
ZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIE5v
ZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwg
Tm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIE5v
ZGVUeXBlID0gR2V0QnlPZmZzZXQpOwotICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05vZGUs
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwor
ICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBjb25zdCBHZXRCeUlk
VmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZU1vZHVsZU5hbWVzcGFjZUxv
YWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIEdl
dEJ5U3RhdHVzKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgpAQCAtMzE4LDE1
ICszMTksMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGdldExvY2FsT3JUbXAob3BlcmFu
ZCk7CiAgICAgfQogCi0gICAgTm9kZSogZ2V0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAg
IE5vZGUqIGdldChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAob3BlcmFuZC5p
c0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBvcGVy
YW5kLnRvQ29uc3RhbnRJbmRleCgpOworICAgICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJbmRl
eCA9IG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkudG9Db25zdGFudEluZGV4KCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBvbGRTaXplID0gbV9jb25zdGFudHMuc2l6ZSgpOwogICAgICAgICAgICAg
aWYgKGNvbnN0YW50SW5kZXggPj0gb2xkU2l6ZSB8fCAhbV9jb25zdGFudHNbY29uc3RhbnRJbmRl
eF0pIHsKICAgICAgICAgICAgICAgICBjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jayA9ICptX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jazsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gY29kZUJsb2NrLmdldENvbnN0YW50KG9wZXJhbmQpOwotICAgICAgICAgICAgICAgIFNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gPSBjb2RlQmxvY2su
Y29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3BlcmFuZCk7CisgICAgICAgICAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5kLnZpcnR1YWxS
ZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291
cmNlQ29kZVJlcHJlc2VudGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICAgICAgICAgIGlm
IChjb25zdGFudEluZGV4ID49IG9sZFNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb25z
dGFudHMuZ3Jvdyhjb25zdGFudEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG9sZFNpemU7IGkgPCBtX2NvbnN0YW50cy5zaXplKCk7ICsraSkKQEAgLTM0
NywxMCArMzQ4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkg
ewogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUoKS0+aXNDbG9zdXJlQ2FsbCkgewog
ICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGlubGluZUNhbGxGcmFtZSgpLT5j
YWxsZWVDb25zdGFudCgpOwotICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID09
IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZCA9PSBW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHdlYWtKU0NvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpIHsK
KyAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90OjpjYWxsZWUpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHNvbWUgY29uc3Rh
bnQtZm9sZGluZyBoZXJlIGJlY2F1c2UgdGhpcyBlbmFibGVzIENyZWF0ZVRoaXMgZm9sZGluZy4g
Tm90ZQogICAgICAgICAgICAgLy8gdGhhdCB3ZSBkb24ndCBoYXZlIHN1Y2ggd2F0Y2hwb2ludC1i
YXNlZCBmb2xkaW5nIGZvciBpbmxpbmVkIHVzZXMgb2YgQ2FsbGVlLCBzaW5jZSBpbiB0aGF0CiAg
ICAgICAgICAgICAvLyBjYXNlIGlmIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmdsZXRvbiB0aGVuIHdl
IGFscmVhZHkga25vdyBpdC4KQEAgLTQxMCw3ICs0MTEsNyBAQCBwcml2YXRlOgogICAgICAgICBt
X3NldExvY2FsUXVldWUuc2hyaW5rKDApOwogICAgIH0KIAotICAgIE5vZGUqIHNldChWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNl
dCkKKyAgICBOb2RlKiBzZXQoT3BlcmFuZCBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBz
ZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldERpcmVjdChtX2lu
bGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCksIHZhbHVlLCBzZXRNb2RlKTsKICAg
ICB9CkBAIC02OTEsMTUgKzY5MiwyMCBAQCBwcml2YXRlOgogICAgICAgICBmbHVzaEZvclRlcm1p
bmFsKCk7CiAgICAgfQogCisgICAgTm9kZSoganNDb25zdGFudChGcm96ZW5WYWx1ZSogY29uc3Rh
bnRWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9w
SW5mbyhjb25zdGFudFZhbHVlKSk7CisgICAgfQorCiAgICAgLy8gQXNzdW1lcyB0aGF0IHRoZSBj
b25zdGFudCBzaG91bGQgYmUgc3Ryb25nbHkgbWFya2VkLgogICAgIE5vZGUqIGpzQ29uc3RhbnQo
SlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgo
SlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplU3Ryb25nKGNvbnN0YW50VmFsdWUpKSk7
CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplU3Ryb25nKGNvbnN0YW50
VmFsdWUpKTsKICAgICB9CiAKICAgICBOb2RlKiB3ZWFrSlNDb25zdGFudChKU1ZhbHVlIGNvbnN0
YW50VmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBP
cEluZm8obV9ncmFwaC5mcmVlemUoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIGpz
Q29uc3RhbnQobV9ncmFwaC5mcmVlemUoY29uc3RhbnRWYWx1ZSkpOwogICAgIH0KIAogICAgIC8v
IEhlbHBlciBmdW5jdGlvbnMgdG8gZ2V0L3NldCB0aGUgdGhpcyB2YWx1ZS4KQEAgLTg1MCw3ICs4
NTYsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9k
ZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgT3Bl
cmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGlu
dCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CkBAIC05NTks
NyArOTY1LDM3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UHJlZGljdGlv
bihtX2N1cnJlbnRJbmRleCk7CiAgICAgfQotICAgIAorCisgICAgLy8gRklYTUU6IFRoaXMgaXNu
J3QgcXVpdGUgYSB0cnVlIGJvdHRvbSB2YWx1ZSBmb3IgZXhhbXBsZSBhbnkgb2JqZWN0IHNwZWN1
bGF0aW9uIHdpbGwgbm93IGJlIE9iamVjdHxPdGhlciBhcyB0aGlzIHJldHVybnMgbnVsbC4KKyAg
ICAvLyBXZSBzaG91bGQgZml4IHRoaXMgd2hlbiB3ZSBjYW4gYWxsb2NhdGUgb24gdGhlIENvbXBp
bGVyIHRocmVhZC4KKyAgICBGcm96ZW5WYWx1ZSogYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHNwZWMpCisgICAgeworICAgICAgICAvLyBJdCBwcm9iYWJseSBk
b2Vzbid0IG1hdHRlciB3aGF0IHdlIHJldHVybiBoZXJlLgorICAgICAgICBpZiAoc3BlYyA9PSBT
cGVjTm9uZSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKCkpOwor
CisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNPdGhlcikpCisgICAg
ICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisgICAgICAgIGlmIChz
cGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNCb29sZWFuKSkKKyAgICAgICAgICAgIHJldHVy
biBtX2dyYXBoLmZyZWV6ZShqc0Jvb2xlYW4odHJ1ZSkpOworCisgICAgICAgIGlmIChzcGVjdWxh
dGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNGdWxsTnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBt
X2dyYXBoLmZyZWV6ZShqc051bWJlcigwKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29u
dGFpbnMoc3BlYywgU3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVl
emUobV92bS0+YmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworCisgICAgICAgIGlmIChzcGVjdWxh
dGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkKKyAgICAgICAgICAg
IHJldHVybiBtX2dyYXBoLmZyZWV6ZShtX3ZtLT5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7
CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY0NlbGxPdGhlciB8
IFNwZWNPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVsbCgp
KTsKKworICAgICAgICBBU1NFUlQoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjRW1wdHkp
KTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoKSk7CisgICAgfQorCiAg
ICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZShBcnJheTo6QWN0aW9uIGFjdGlvbikKICAgICB7CiAg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrOwpAQCAtMTE3NCw3ICsxMjEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gT3B0aW9u
YWw6IGEgY29udGludWF0aW9uIGJsb2NrIGZvciByZXR1cm5zIHRvIGp1bXAgdG8uIEl0IGlzIHNl
dCBieSBlYXJseSByZXR1cm5zIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogICAgICAgICBCYXNpY0Js
b2NrKiBtX2NvbnRpbnVhdGlvbkJsb2NrOwogCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX3Jl
dHVyblZhbHVlOworICAgICAgICBPcGVyYW5kIG1fcmV0dXJuVmFsdWU7CiAgICAgICAgIAogICAg
ICAgICAvLyBTcGVjdWxhdGlvbnMgYWJvdXQgdmFyaWFibGUgdHlwZXMgY29sbGVjdGVkIGZyb20g
dGhlIHByb2ZpbGVkIGNvZGUgYmxvY2ssCiAgICAgICAgIC8vIHdoaWNoIGFyZSBiYXNlZCBvbiBP
U1IgZXhpdCBwcm9maWxlcyB0aGF0IHBhc3QgREZHIGNvbXBpbGF0aW9ucyBvZiB0aGlzCkBAIC0x
MTk0LDcgKzEyMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ29kZUJsb2NrKiwKICAgICAg
ICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICAgICAgICAgIEpTRnVuY3Rpb24q
IGNhbGxlZSwgLy8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHJldHVyblZhbHVlVlIsCisgICAgICAgICAgICBPcGVyYW5kIHJldHVy
blZhbHVlLAogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0
LAogICAgICAgICAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAg
ICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLApAQCAtMTI2OSw2ICsxMzA1LDcgQEAgQmFzaWNCbG9j
ayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKQogICAgIFJlZjxC
YXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jayhCeXRlY29kZUluZGV4
KCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgbV9udW1UbXBzLCAxKSk7CiAgICAgQmFz
aWNCbG9jayogYmxvY2tQdHIgPSBibG9jay5wdHIoKTsKICAgICBtX2dyYXBoLmFwcGVuZEJsb2Nr
KFdURk1vdmUoYmxvY2spKTsKKyAgICBWRVJCT1NFX0xPRygiQWRkaW5nIG5ldyB1bnRhcmdldGFi
bGUgYmxvY2s6ICIsIGJsb2NrUHRyLT5pbmRleCwgIlxuIik7CiAgICAgcmV0dXJuIGJsb2NrUHRy
OwogfQogCkBAIC0xMzAxLDggKzEzMzgsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CiBC
eXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7Ci0gICAgTm9kZSogY2FsbFRhcmdl
dCA9IGdldChieXRlY29kZS5tX2NhbGxlZSk7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0
YXRpY19jYXN0PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBOb2RlKiBjYWxsVGFyZ2V0ID0g
Z2V0KGNhbGxlZUZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7Cisg
ICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJl
Z2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkpOwog
CiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJy
ZW50Q29kZU9yaWdpbigpLApAQCAtMTMxMCw4ICsxMzQ3LDggQEAgQnl0ZUNvZGVQYXJzZXI6OlRl
cm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBw
YywgTm8KIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5saW5lQ2FsbEZyYW1l
OjpraW5kRm9yKGNhbGxNb2RlKTsKIAotICAgIHJldHVybiBoYW5kbGVDYWxsKGJ5dGVjb2RlLm1f
ZHN0LCBvcCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKLSAgICAgICAgYnl0ZWNvZGUu
bV9hcmdjLCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7
CisgICAgcmV0dXJuIGhhbmRsZUNhbGwoZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fY3VycmVu
dEluZGV4LmNoZWNrcG9pbnQoKSwgSklUVHlwZTo6REZHSklUKSwgb3AsIGtpbmQsIHBjLT5zaXpl
KCksIGNhbGxUYXJnZXQsCisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5
dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpLCByZWdpc3Rlck9mZnNldCwgY2Fs
bExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBj
YWxsVGFyZ2V0KQpAQCAtMTMyMSw3ICsxMzU4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVm
aW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGwK
IH0KIAogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
YWxsKAotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgIE9wZXJhbmQg
cmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVk
IGluc3RydWN0aW9uU2l6ZSwKICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwKICAgICBDYWxsTGlua1N0YXR1cyBj
YWxsTGlua1N0YXR1cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKQEAgLTE2MzcsNyAr
MTY3NCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlh
bnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6Omlu
bGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFu
dCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9u
QmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBjb25zdCBJ
bnN0cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVjdGlv
bjsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGlu
ZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwpAQCAtMTY3MSw3ICsxNzA4
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EKICAgICBzaXplX3QgYXJndW1lbnRQb3NpdGlv
blN0YXJ0ID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUoKTsKIAogICAgIGlmIChy
ZXN1bHQuaXNWYWxpZCgpKQotICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQocmVzdWx0KS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgcmVzdWx0ID0gbV9p
bmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCk7CiAKICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3Vy
ZUNhbGwoKSkgewpAQCAtMTgyMyw3ICsxODYwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EK
ICAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IHNhdmVkQ3VycmVudEluc3RydWN0aW9uOwogfQog
Ci1CeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVn
aXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVj
b2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayog
Y29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQorQnl0ZUNvZGVQYXJz
ZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJp
YW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNp
Z25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9v
bCBuZWVkc1RvQ2hlY2tDYWxsZWUpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICBDb25zaWRlcmlu
ZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIApAQCAtMTkwMCw3ICsxOTM3LDcgQEAgQnl0ZUNv
ZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNh
bGxWYXJpYW50KE5vZGUqIGMKICAgICByZXR1cm4gQ2FsbE9wdGltaXphdGlvblJlc3VsdDo6SW5s
aW5lZDsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAorYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVy
YW5kIHJlc3VsdCwKICAgICBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGlu
dCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgVmlydHVh
bFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsCiAg
ICAgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKQEAgLTIwNDQs
NyArMjA4MSw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjpnZXRJbmxpbmluZ0JhbGFuY2Uo
Y29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzCiB9CiAKIEJ5dGVDb2RlUGFyc2Vy
OjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygK
LSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAorICAgIE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAog
ICAgIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAg
ICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgQnl0ZWNvZGVJbmRleCBuZXh0
SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCkBAIC0yMjIwLDcgKzIyNTcsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVN
aW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKQogewogICAgIEFTU0VSVChvcCA9PSBBcml0aE1pbiB8fCBvcCA9PSBBcml0aE1heCk7
CiAKQEAgLTIyNTAsNyArMjI4Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1h
eChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50
cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljIGludHJpbnNpYywgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsK
ICAgICBWRVJCT1NFX0xPRygiICAgICAgIFRoZSBpbnRyaW5zaWMgaXMgIiwgaW50cmluc2ljLCAi
XG4iKTsKIApAQCAtMjM4OSwyNyArMjQyNiwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQog
ICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOiB7CiAgICAgICAgICAgICBpbnNlcnRD
aGVja3MoKTsKIAotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kOwotICAgICAgICAgICAg
c3dpdGNoIChpbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5z
aWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWM6Ci0gICAgICAg
ICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJyYXlLZXlzSW50cmluc2ljOgotICAgICAgICAgICAg
Y2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRl
cmF0aW9uS2luZDo6S2V5czsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQXJyYXlFbnRyaWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5RW50
cmllc0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6RW50
cmllczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9wdGlvbmFsPEl0ZXJhdGlvbktp
bmQ+IGtpbmQgPSBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhpbnRyaW5zaWMpOworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoISFraW5kKTsKIAogICAgICAgICAgICAgLy8gQWRkIHRoZSBj
b25zdGFudCBiZWZvcmUgZXhpdCBiZWNvbWVzIGludmFsaWQgYmVjYXVzZSB3ZSBtYXkgd2FudCB0
byBpbnNlcnQgKHJlZHVuZGFudCkgY2hlY2tzIG9uIGl0IGluIEZpeHVwLgotICAgICAgICAgICAg
Tm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90
PihraW5kKSkpOworICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVt
YmVyKHN0YXRpY19jYXN0PHVpbnQzMl90Pigqa2luZCkpKTsKIAogICAgICAgICAgICAgLy8gV2Ug
ZG9uJ3QgaGF2ZSBhbiBleGlzdGluZyBlcnJvciBzdHJpbmcuCiAgICAgICAgICAgICB1bnNpZ25l
ZCBlcnJvclN0cmluZ0luZGV4ID0gVUlOVDMyX01BWDsKQEAgLTM2NDcsNyArMzY2OCw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJn
ZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWdu
YXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJl
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KQogewogICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxp
bnQ+KDEgKyBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNjY2LDcgKzM2ODcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRD
YWxsKE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCiAKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgc3dpdGNoICh2YXJpYW50Lmlu
dHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewpA
QCAtMzc4MCw3ICszODAxLDcgQEAgc3RhdGljIHZvaWQgYmxlc3NDYWxsRE9NR2V0dGVyKE5vZGUq
IG5vZGUpCiAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiB9CiAK
LWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCitib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0
IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlh
bnQuZG9tQXR0cmlidXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM4NTksNyArMzg4
MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVzcGFjZUxvYWQoVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0
b3IoCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rp
b24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5j
dGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKICAgICBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlIHR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcykKIHsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGUpKQpAQCAtMzkxNiw3
ICszOTM3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVj
dG9yKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAotICAgIE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlv
biwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5k
IHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwK
ICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgSGFuZGxpbmcgY29uc3RhbnQg
aW50ZXJuYWwgZnVuY3Rpb24gIiwgSlNWYWx1ZShmdW5jdGlvbiksICJcbiIpOwpAQCAtNjYwNCwy
MCArNjYyNSw0MjcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwog
ICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOiB7CiAgICAgICAgICAgICBoYW5kbGVW
YXJhcmdzQ2FsbDxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29uc3Ry
dWN0VmFyYXJncywgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7CiAgICAgICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhh
bmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBjYWxsZWUsIHRyYXNo
ZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2Nv
bnN0cnVjdF92YXJhcmdzKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgY2Fz
ZSBvcF9jYWxsX2V2YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wQ2FsbEV2YWw+KCk7CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJPZmZz
ZXQgPSAtYnl0ZWNvZGUubV9hcmd2OwogICAgICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2Rz
dCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1f
Y2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigp
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KLSAg
ICAgICAgICAgIAorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+
KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBzZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJh
dGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZS
ZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQoc2Vlbk1vZGVzKTsKKyAgICAgICAgICAgIEFT
U0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9IG51bWJlck9mSXRlcmF0aW9uTW9kZXMpOwor
ICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNlID0gZmFsc2U7CisKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAgICAgICAgQmFz
aWNCbG9jayogZ2VuZXJpY0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGNvbnRpbnVhdGlvbiA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAg
ICAgQnl0ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisKKyAgICAgICAg
ICAgIE5vZGUqIHN5bWJvbEl0ZXJhdG9yID0gZ2V0RGlyZWN0KGJ5dGVjb2RlLm1fc3ltYm9sSXRl
cmF0b3IpOworICAgICAgICAgICAgYXV0byYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dFNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgp
OworCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5
ICYmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29uZGl0aW9u
cyB3ZSBuZWVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNo
cG9pbnRzKCkuYWRkTGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOwor
CisgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rp
b24gPSBtX2dyYXBoLmZyZWV6ZShnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JGdW5jdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdN
b2RlcyA9PSAxKQorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJ
bmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RB
cnJheUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAg
ICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSoga25vd25JdGVyRnVuY3Rpb24gPSBhZGRUb0dyYXBoKENvbXBh
cmVFcVB0ciwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVy
YXRvcik7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzQXJyYXkgPSBhZGRUb0dyYXBoKElz
Q2VsbFdpdGhUeXBlLCBPcEluZm8oQXJyYXlUeXBlKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUp
KTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFw
aC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRh
a2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKworICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBhbmRSZXN1bHQgPSBhZGRUb0dyYXBoKEFyaXRoQml0QW5k
LCBpc0FycmF5LCBrbm93bkl0ZXJGdW5jdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
V2Uga25vdyB0aGUgYml0IGFuZCBjYW5ub3QgaGF2ZSBlZmZlY3RzIHNvIGl0J3Mgb2sgdG8gZXhp
dCBoZXJlLgorICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhbmRSZXN1bHQpOworICAgICAgICAg
ICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJD
YWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgYnJh
bmNoIGFib3ZlIG1heSBoYXZlIG1hZGUgZXhpdCBpbnZhbGlkIGJ1dCBpdCdzIGFjdHVhbGx5IG9r
LgorICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0
YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25LaW5kOjpWYWx1ZXMp
KSk7CisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0FycmF5
SXRlcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRl
cmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwgZ2V0KGJ5dGVjb2RlLm1f
aXRlcmFibGUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6S2lu
ZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5t
X2l0ZXJhdG9yLCBpdGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9u
ZXh0LCBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3Vy
IHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3
ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0
cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NT
ZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5m
byhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4
OworCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykg
eworICAgICAgICAgICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGdlbmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGdlbmVyaWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFnZW5l
cmF0ZWRDYXNlKTsKKworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0g
aGFuZGxlQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxs
TW9kZTo6UmVndWxhcik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5hbGl0
eSwgdGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAgICAgIHByb2dyZXNz
VG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBn
ZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90
T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2so
KTsKKyAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2Jy
YW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFu
Y2hUYXJnZXQoaXNPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90
VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3Qs
IGl0ZXJhdG9yKSk7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
Q2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0g
TGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFj
ZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZv
ID0gT3BJbmZvKG1fZ3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29u
c3RhbnQsIGluZm8pOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGlj
RXJyb3IsIE9wSW5mbyhFcnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CisgICAg
ICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0g
aXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24o
KTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1faXRl
cmF0b3IpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBuZXh0SW1wbCA9IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPm5leHQuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShuZXh0SW1wbCk7CisK
KyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJ
ZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudElu
c3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0
QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworCisgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9uZXh0LCBwcmVkaWN0aW9u
LCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KG5leHRJbXBsKSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxl
bmd0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRv
bid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4
dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29k
ZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1Nl
dExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9w
SW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5h
bCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7
CisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9uZXh0LCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNl
dCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2Ug
bW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRl
eCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1
Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8o
Y29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNs
ZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX29wZW4p
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4
dD4oKTsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRl
cmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlJlbWFpbmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAg
QVNTRVJUKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7
CisgICAgICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAg
Qnl0ZWNvZGVJbmRleCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1
dG8mIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFy
cmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGdlbmVyaWNCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIGlm
IChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8v
IEZpcnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJl
Y3RuZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHko
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBp
ZiAobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGhhc05leHQgPSBhZGRUb0dyYXBoKElzRW1wdHksIGdldChieXRlY29kZS5tX25leHQpKTsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVC
bG9jaygpOworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9
IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFu
Y2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJs
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hU
YXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFu
Y2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaGFzTmV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBOb2RlKiBp
dGVyYXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSwgaXRlcmF0b3IpOworCisgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJs
ZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGRv
TG9hZEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpz
TnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFw
aChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJ
dGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgaXRlcmF0b3Ip
OworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVT
dHJpY3RFcSwgaW5kZXgsIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNo
RGF0YSogaXNEb25lQnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAg
ICAgICAgICAgICAgICAgICBpc0RvbmVCcmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChp
c0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlzRG9uZUJyYW5jaERhdGEtPm5vdFRh
a2VuID0gQnJhbmNoVGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oaXNEb25lQnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAg
ICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFk
YXRhLm1faXRlcmFibGVQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgYXV0
byBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5v
dERvbmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwg
T3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRl
eCkpLCBPcEluZm8oU3BlY0ludDMyT25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhYmxlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmFi
bGUpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBidXR0ZXJmbHkgPSBhZGRUb0dyYXBoKEdl
dEJ1dHRlcmZseSwgaXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGgg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
aXRlcmFibGUsIGJ1dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzRG9uZSA9
IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgaW5kZXgsIGxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgLy8gVGhlIGFib3ZlIGNvbXBhcmUgZG9lc24ndCBw
cm9kdWNlIGVmZmVjdHMgc2luY2Ugd2Uga25vdyBpbmRleCBhbmQgbGVuZ3RoIGFyZSBpbnQzMnMu
CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAg
ICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRk
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0
KGlzRG9uZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4g
PSBCcmFuY2hUYXJnZXQoZG9Mb2FkQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBpc0RvbmUpOworICAgICAgICAgICAgICAg
ICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGRvTG9hZEJsb2Nr
OworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8o
U3BlY0ludDMyT25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIG9uZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSkpOworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQsIGlu
ZGV4LCBvbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZmFsc2VOb2RlID0ganNDb25z
dGFudChqc0Jvb2xlYW4oZmFsc2UpKTsKKworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBjb3VsZCBjb25zaWRlciBtYWtpbmcgdGhpcyBub3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5
IHVzZXMgdGhyZWUgY2hpbGQKKyAgICAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCisgICAgICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODQxOTIKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1f
aXRlcmFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoaW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3Ig
cHJvcGVydHkgc3RvcmFnZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0QnlWYWwgPSBh
ZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3Jk
KCkpLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNv
ZGUubV92YWx1ZSwgZ2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kb25lLCBmYWxzZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dElu
dGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9y
OjpGaWVsZDo6SW5kZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBuZXdJbmRleCk7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQg
dG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2Rl
LgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9j
dXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1
ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRp
bnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gUm9sbCBiYWNrIHRoZSBjaGVja3Bv
aW50LgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc0Rv
bmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogdHJ1ZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbih0cnVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGRvbmVJbmRleCA9IGpzQ29uc3RhbnQoanNOdW1iZXIo
LTEpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYm90dG9tTm9kZSA9IGpzQ29uc3RhbnQo
Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24pKTsKKworICAgICAgICAg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tTm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIHRydWVOb2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0
ZXJhdG9yKSwgZG9uZUluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0
IGxvY2Fscy4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUlu
ZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExv
Y2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5m
byhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0g
c3RhcnRJbmRleDsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2Fj
aGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5h
bGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck5leHQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2Fs
bCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVy
bWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBw
cm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJs
b2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgT3BlcmFuZCBuZXh0UmVz
dWx0ID0gT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yUmVzdWx0ID0gZ2V0
KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRh
ID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5j
aERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAgICAgICAg
ICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNo
RGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yUmVzdWx0KSk7CisgICAgICAgICAg
ICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2Jq
ZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAg
ICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmlu
ZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJf
cyk7CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1fZ3JhcGgubV9s
YXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8pOworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5mbyhFcnJvclR5
cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNo
Rm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRv
IHZhbHVlUHJlZGljaXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJ
bmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7
CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2NrOwor
ICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBib3R0b21WYWx1ZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVNYXRjaGlu
Z1NwZWN1bGF0aW9uKHZhbHVlUHJlZGljaXRpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBiYXNlID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBk
b25lSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygp
LmVuc3VyZShkb25lSW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBl
ID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bj
b2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVN
YXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29k
ZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2Rl
Lm1fZG9uZSwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcihkb25lSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3Rh
dHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYSB2
YWx1ZSBmb3IgbV92YWx1ZSBzbyB3ZSBkb24ndCB0aGluaworICAgICAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBw
cm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hE
YXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGNvbnRpbnVhdGlvbik7
CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0
KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBP
cEluZm8oYnJhbmNoRGF0YSksIGdldChieXRlY29kZS5tX2RvbmUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3REb25lQmxv
Y2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byogdmFsdWVJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpLmVuc3VyZSh2YWx1ZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vz
c1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAg
ICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJ
ZChieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZVByZWRpY2l0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZhbHVlSW1wbCksIGlkZW50aWZp
ZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAg
ICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWdlbmVyYXRlZENhc2UpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBq
c0NvbnN0YW50KEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9T
UkV4aXQpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCByZXN1bHQpOwor
ICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUsIHJlc3VsdCk7CisKKyAgICAgICAg
ICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdl
dCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZz
ZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4
aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAg
ICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBmbHVz
aEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0
aW9uOworICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfaXRlcmF0b3JfbmV4dCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2puZXFf
cHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEpuZXFQdHI+KCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9
IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRD
b25zdGFudChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyKSk7CkBAIC03MTA3LDcgKzc1MzUsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgLy8gbG9hZHMgZnJvbSB0aGUgc2NvcGUgcmVnaXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291
bGQgcHJldmVudCB0aGUgREZHIGZyb20gdHJhY2tpbmcgdGhlCiAgICAgICAgICAgICAvLyBieXRl
Y29kZS1sZXZlbCBsaXZlbmVzcyBvZiB0aGUgc2NvcGUgcmVnaXN0ZXIuCiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFNjb3BlPigpOwotICAg
ICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisgICAg
ICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSkpOwogICAgICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICAgICAgaWYgKEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rp
b24qPigqbV92bSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gd2Vha0pTQ29uc3RhbnQoZnVu
Y3Rpb24tPnNjb3BlKCkpOwpAQCAtNzQ4Niw3ICs3OTE0LDcgQEAgQnl0ZUNvZGVQYXJzZXI6Oklu
bGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssCiAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSwgLy8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAgIFZpcnR1YWxSZWdpc3Rl
ciByZXR1cm5WYWx1ZVZSLAorICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwKQEAgLTc0OTUsNyArNzky
Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KAogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKHBy
b2ZpbGVkQmxvY2spCiAgICAgLCBtX2NvbnRpbnVhdGlvbkJsb2NrKGNvbnRpbnVhdGlvbkJsb2Nr
KQotICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZVZSKQorICAgICwgbV9yZXR1cm5WYWx1
ZShyZXR1cm5WYWx1ZSkKICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0
YWNrVG9wKQogewogICAgIHsKQEAgLTc1NjEsNyArNzk4OSw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAvLyBNYWNoaW5lIGNv
ZGUgYmxvY2sgY2FzZS4KICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBieXRlQ29kZVBhcnNl
ci0+bV9jb2RlQmxvY2spOwogICAgICAgICBBU1NFUlQoIWNhbGxlZSk7Ci0gICAgICAgIEFTU0VS
VCghcmV0dXJuVmFsdWVWUi5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVl
LmlzVmFsaWQoKSk7CiAgICAgICAgIEFTU0VSVCghaW5saW5lQ2FsbEZyYW1lU3RhcnQuaXNWYWxp
ZCgpKTsKIAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IDA7CkBAIC03OTc2LDcgKzg0MDQs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogCiAgICAgICAgICAgICAgICAgYXV0byBub2RlQW5kSW5k
ZXggPSBibG9jay0+ZmluZFRlcm1pbmFsKCk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobm9kZUFuZEluZGV4Lm5vZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUpOworICAgICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZUFuZEluZGV4Lm5vZGUsIG5vZGVBbmRJbmRleC5u
b2RlLT5vcCgpID09IFVucmVhY2hhYmxlKTsKICAgICAgICAgICAgICAgICBibG9jay0+cmVzaXpl
KG5vZGVBbmRJbmRleC5pbmRleCArIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2lt
cGxpZmljYXRpb25QaGFzZS5jcHAKaW5kZXggZTdmNmU3NjI0NjY5YjMwMWY1YTAyMDQ4YzI1ZDQ4
MTVjM2ExMzM5ZC4uNjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJh
c2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCkKKyAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayog
YmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2lu
LCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAgICAgICBOb2RlKiBsaXZlbmVzc05vZGUgPSBq
ZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAg
ICBpZiAoIWxpdmVuZXNzTm9kZSkKQEAgLTMwMiwxMSArMzAyLDkgQEAgcHJpdmF0ZToKICAgICAK
ICAgICB2b2lkIGpldHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpl
dHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4pCiAgICAgewotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRI
ZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxp
dmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxz
KCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRC
bG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7Ci0g
ICAgICAgIAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+
dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2
ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7CisKICAgICAgICAgZml4
SmV0dGlzb25lZFByZWRlY2Vzc29ycyhibG9jaywgamV0dGlzb25lZEJsb2NrKTsKICAgICB9CiAg
ICAgCkBAIC0zNTIsMTEgKzM1MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBUaW1lIHRv
IGluc2VydCBnaG9zdGllcyBmb3IgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBrZXB0IGFsaXZlIGlu
IGNhc2Ugd2UgT1NSCiAgICAgICAgICAgICAvLyBleGl0IHByaW9yIHRvIGhpdHRpbmcgdGhlIGZp
cnN0QmxvY2sncyB0ZXJtaW5hbCwgYW5kIGVuZCB1cCBnb2luZyBkb3duIGEKICAgICAgICAgICAg
IC8vIGRpZmZlcmVudCBwYXRoIHRoYW4gc2Vjb25kQmxvY2suCi0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVy
YW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4s
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZl
KGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3Vu
ZGFyeU5vZGVPcmlnaW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmRG
b3JJbmRleChpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2Vjb25kQmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBhNmNjN2RlY2E3
MDI0ODhmOGUxYzJhMGI2NzBiZjk5Zi4uNjAwMzMyZjE5MGZmOGI0MDQyY2Q1NDJhYjk1YjUwNTM2
YWQ3YTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMjc0LDYgKzI3NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2Fz
ZSBvcF9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jl
c3RfbGVuZ3RoOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX25leHQ6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAg
Y2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDoKICAgICBjYXNlIG9wX3B1dF90b19zY29w
ZToKQEAgLTMxMSw2ICszMTMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ug
Y2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lOgogICAgIGNh
c2UgY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNhc2UgaGFuZGxlVW5jYXVn
aHRFeGNlcHRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbjoK
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3Bf
Y2FsbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0
aW9uOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWE0ZGVjZGEw
YzJkNzM2ODdlZmNmMzg4Yjg0ODJmYjBlYzY0N2M0Zi4uZGJjODMxYzJlYmUwODZmODczNjZhN2U1
NGEzNWU1OTNhOWIwNzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0yNDExLDcgKzI0MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBJZGVudGl0eVdpdGhQcm9maWxlOiB7Ci0gICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRl
bnRpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAppbmRleCBiZjQzNTBjNGNkMTdlM2Q1MDA2NjM4
ZjU1YWFjMzVhNTY1Mjk5NGExLi5kOWM5NzQyOGZkNmFlNWVhNTA2ZDA1NzI2NzMwMjBkZDFhZmYx
MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoYmVmb3JlSW5saW5lQ2FsbEZy
YW1lKTsKICAgICAgICAgaWYgKGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpIHsK
ICAgICAgICAgICAgIEFTU0VSVChiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSAh
PSBhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpKTsKLSAgICAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5i
eXRlY29kZUluZGV4KCkub2Zmc2V0KCksICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBp
dCBzaG91bGQgY2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vycm91bmRp
bmcgYnl0ZWNvZGVzLiIpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUu
Ynl0ZWNvZGVJbmRleCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQo
KSB8fCBub2RlQWZ0ZXItPm9wKCkgPT0gRXhpdE9LIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBJbnZh
bGlkYXRpb25Qb2ludCwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNob3VsZCBj
aGFuZ2UgdGhlIGZvckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBieXRlY29k
ZXMuIik7CiAKICAgICAgICAgICAgIGF1dG8gbGl2ZUJlZm9yZSA9IHRtcExpdmVuZXNzRm9yQ2hl
Y2twb2ludCgqY29kZUJsb2NrLCBiZWZvcmUuYnl0ZWNvZGVJbmRleCgpKTsKICAgICAgICAgICAg
IGF1dG8gbGl2ZUFmdGVyID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGFm
dGVyLmJ5dGVjb2RlSW5kZXgoKSk7CkBAIC0xMDIsOCArMTAyLDYgQEAgdm9pZCBmb3JBbGxLaWxs
ZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRl
ciwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIWFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCksICJUcmFuc2l0aW9uaW5nIGFj
cm9zcyBhIGNoZWNrcG9pbnQgYnV0IGJlZm9yZSBhbmQgYWZ0ZXIgZG9uJ3Qgc2hhcmUgYW4gaW5s
aW5lQ2FsbEZyYW1lLiIpOwotCiAgICAgLy8gRGV0ZWN0IGtpbGxzIHRoZSBzdXBlciBjb25zZXJ2
YXRpdmUgd2F5OiBpdCBpcyBraWxsZWQgaWYgaXQgd2FzIGxpdmUgYmVmb3JlIGFuZCBkZWFkIGFm
dGVyLgogICAgIEJpdFZlY3RvciBsaXZlQWZ0ZXIgPSBncmFwaC5sb2NhbHNBbmRUbXBzTGl2ZUlu
Qnl0ZWNvZGUoYWZ0ZXIpOwogICAgIHVuc2lnbmVkIG51bUxvY2FscyA9IGdyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggMjAyZDIy
NTA1M2ZhOWRmYmU1YzIzYzY0YmNmOGJlMzg0ZTNlNzY1NC4uN2NjMzRhZTJkMGQ0ZTVmODQ4ZTY5
NTczMDI0OTJjMTIxZDcxZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKEJhc2ljQmxvY2sqIGJhc2ljQmxv
Y2spCiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICBB
U1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gYmFz
aWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNp
Y0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52
YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhl
YWQubnVtYmVyT2ZUbXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1w
cygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1w
cygpID09IGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CiAKICAg
ICBtX2Fic3RyYWN0VmFsdWVzLnJlc2l6ZSgpOwogCkBAIC0xNjEsNiArMTY0LDEwIEBAIHZvaWQg
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgICAgICBlbnRyeXBvaW50
LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZlRtcHMo
KTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQudG1wKGkpLmNs
ZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwudG1wKGkpLmNsZWFy
KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9n
cmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CkBAIC0xNzUsMTMgKzE4Miw5IEBAIHZvaWQg
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICBibG9jay0+Y2ZhVGhp
bmtzU2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFT
dHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKICAgICAg
ICAgYmxvY2stPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVX
YXRjaGVkOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhl
YWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRU
YWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewot
ICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAg
ICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWRbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGJs
b2NrLT52YWx1ZXNBdFRhaWxbaV0uY2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM5
LDcgKzI0Miw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQog
ICAgICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOiB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFsdWUgZnJvbSBo
ZWFkIHRvIHRhaWwuCi0gICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSB2YXJpYWJsZUF0KGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGF0SW5kZXgoaW5kZXgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAt
MzA0LDcgKzMwNyw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2so
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gdmFyaWFibGVBdChpKTsKKyAg
ICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0gPSBhdEluZGV4KGkpOwogICAgICAgICB9
CiAKICAgICAgICAgZm9yIChOb2RlQWJzdHJhY3RWYWx1ZVBhaXImIHZhbHVlQXRUYWlsIDogYmxv
Y2stPnNzYS0+dmFsdWVzQXRUYWlsKQpAQCAtMzQzLDYgKzM0Niw3IEBAIGJvb2wgSW5QbGFjZUFi
c3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAg
ICAgICBkYXRhTG9nKCIgICBNZXJnaW5nIGZyb20gIiwgcG9pbnRlckR1bXAoZnJvbSksICIgdG8g
IiwgcG9pbnRlckR1bXAodG8pLCAiXG4iKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mQXJndW1lbnRzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9j
YWxzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NF
UlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IHRvLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZUbXBzKCkpOwogICAgIAogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwog
ICAgIApAQCAtMzUyLDE0ICszNTYsOSBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJn
ZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAKICAgICBzd2l0Y2ggKG1f
Z3JhcGgubV9mb3JtKSB7CiAgICAgY2FzZSBUaHJlYWRlZENQUzogewotICAgICAgICBmb3IgKHNp
emVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJl
ck9mQXJndW1lbnRzKCk7ICsrYXJndW1lbnQpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUm
IGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7Ci0gICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9u
LCBmcm9tLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpLCB0by0+dmFyaWFibGVzQXRI
ZWFkLmFyZ3VtZW50KGFyZ3VtZW50KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFy
Z3VtZW50KSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90IGxvY2Fs
ID0gMDsgbG9jYWwgPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgKyts
b2NhbCkgewotICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFs
dWVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJp
YWJsZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5sb2NhbChs
b2NhbCksIHRvLT52YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpLCBmcm9tLT52YXJpYWJsZXNB
dFRhaWwubG9jYWwobG9jYWwpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5hdChpbmRleCk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3Rp
bmF0aW9uLCBmcm9tLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpLCB0by0+dmFyaWFibGVzQXRIZWFk
LmF0KGluZGV4KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmF0KGluZGV4KSk7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDE4NjVlNmExZWZmYzNkYWFlZmU1ODRj
YTg2MmM0OWJjMzY4NTg1MDAuLmM1ZDAyNjg3M2UwMTBkMDdmMzgxMWM2YzRmZWY1NjZlMWNhNzBm
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmgKQEAgLTE1OCwxMCArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGVy
YW5kczxBYnN0cmFjdFZhbHVlPiYgdmFyaWFibGVzRm9yRGVidWdnaW5nKCk7CiAKKyAgICB1bnNp
Z25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1i
ZXJPZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7
IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5zaWduZWQgbnVt
YmVyT2ZUbXBzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZUbXBzKCk7IH0K
ICAgICAKLSAgICBBYnN0cmFjdFZhbHVlJiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkKKyAgICBB
YnN0cmFjdFZhbHVlJiBhdEluZGV4KHNpemVfdCBpbmRleCkKICAgICB7CiAgICAgICAgIGFjdGl2
YXRlVmFyaWFibGVJZk5lY2Vzc2FyeShpbmRleCk7CiAgICAgICAgIHJldHVybiBmYXN0Rm9yd2Fy
ZChtX3ZhcmlhYmxlc1tpbmRleF0pOwpAQCAtMTY5LDE3ICsxNzEsMTcgQEAgcHVibGljOgogCiAg
ICAgQWJzdHJhY3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewotICAgICAg
ICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOwor
ICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkp
OwogICAgIH0KICAgICAKICAgICBBYnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpCiAg
ICAgewotICAgICAgICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGlu
ZGV4KSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5k
ZXgpKTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGlu
ZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMuYXJndW1l
bnRJbmRleChpbmRleCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5hcmd1
bWVudEluZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIC8vIENhbGwgdGhpcyBiZWZvcmUg
YmVnaW5uaW5nIENGQSB0byBpbml0aWFsaXplIHRoZSBhYnN0cmFjdCB2YWx1ZXMgb2YKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAppbmRleCBmNWVlZjJmM2RmNzIx
MjlhODM4Yzc2ODZlMjZiOTYwYjUwZjU4MWVlLi43YTMzNjY2YWE3MWExZjY2NmM5NGIyOGI2NDQ3
NDg0ZDY3YmJiN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1
ZS5oCkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGF6eUpTVmFsdWUgbmV3
U3RyaW5nKEdyYXBoJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBMYXppbmVzc0tpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtub3duVmFsdWUgPyBTcGVjQnl0ZWNvZGVU
b3AgOiBTcGVjU3RyaW5nOyB9CiAgICAgCiAgICAgRnJvemVuVmFsdWUqIHRyeUdldFZhbHVlKEdy
YXBoJikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cAppbmRleCBhODUyZGJkZDliOTM3MGQ2ZGU2NTNjNWE0ODg3MTE3MDBlOGI4NzliLi41MjIzNGI0
YTVkM2Y2OTc2YzJmYTk5ODE2ZGNlMTEwNjgxMDU0ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTQ4LDExICs0OCwxMiBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNW
YWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZh
bHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVu
c2lnbmVkIHJlY292ZXJ5SW5kZXgpCitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpT
VmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2
YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1
bnNpZ25lZCByZWNvdmVyeUluZGV4LCB1bnNpZ25lZCBkZmdJUkluZGV4KQogICAgIDogT1NSRXhp
dEJhc2Uoa2luZCwgaml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGlj
LCBqaXQtPm1fb3JpZ2luLndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1
ZVNvdXJjZSkKICAgICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fcmVj
b3ZlcnlJbmRleChyZWNvdmVyeUluZGV4KQorICAgICwgbV9kZmdJUkluZGV4KGRmZ0lSSW5kZXgp
CiAgICAgLCBtX3N0cmVhbUluZGV4KHN0cmVhbUluZGV4KQogewogICAgIGJvb2wgY2FuRXhpdCA9
IGppdC0+bV9vcmlnaW4uZXhpdE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAppbmRleCA5ZTliY2VhNDgxYzFkNjg3Nzk3MmYyNTlkNjJjMWEyMzAwYjJiMTYxLi44Y2U4Yjky
MDc5YWY3NTI5OTcwM2YxN2ZkZGFlMmZlYzNiOWMyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSosIHZvaWQqLCB2
b2lkCiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0
aXZlIHBhdGggYnkKIC8vIGdvaW5nIGludG8gYmFzZWxpbmUgY29kZS4KIHN0cnVjdCBPU1JFeGl0
IDogcHVibGljIE9TUkV4aXRCYXNlIHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291
cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2ln
bmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOworICAg
IE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJl
Y292ZXJ5SW5kZXggPSBVSU5UX01BWCwgdW5zaWduZWQgZGZnSVJJbmRleCA9IFVJTlRfTUFYKTsK
IAogICAgIGZyaWVuZCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQo
Q2FsbEZyYW1lKik7CiAKQEAgLTE1OSw2ICsxNTksNyBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1Ymxp
YyBPU1JFeGl0QmFzZSB7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVl
UHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWdu
ZWQgbV9kZmdJUkluZGV4OwogCiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PiBjb2RlTG9jYXRpb25Gb3JSZXBhdGNoKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCAxZGYz
OTQzMjQxZDVhZjc5MzE5OGVmOWM3MTI3M2U3NThhMGEyMjZhLi4wODVkYzUzMGIzYmMzNzlmYjRm
M2U2MDkxY2I1YzY1MjAyNzU4N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xNTksOSArMTU5LDE1IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihu
YW1lKSAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rp
b24uaXNXaWRlMzIoKSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5h
bWUjI19yZXR1cm5fbG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4o
bmFtZSMjX3JldHVybl9sb2NhdGlvbikpKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNh
bGxLaW5kKSB7Ci0gICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgotICAgICAgICAg
ICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAg
Y2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6IHsKKyAgICAgICAgICAgIGlmIChjYWxsSW5zdHJ1
Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9jYWxsKQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQg
PSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgICAgICBlbHNlIGlmIChj
YWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICAg
ICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3Jfb3Bl
bik7CisgICAgICAgICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBv
cF9pdGVyYXRvcl9uZXh0KQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRV
Uk5fTE9DQVRJT04ob3BfaXRlcmF0b3JfbmV4dCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0OgogICAgICAgICAg
ICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3QpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yMzksNiArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sKICAgICAgICAgfQogICAgIH0KIAorICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKICAgICByZXR1
cm4ganVtcFRhcmdldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMTAwM2VkNWZk
M2ZiYzM4MTYyYzg5MmIzNGM4NDdiOTI3NjgzZmFlLi42ZTA5MGEzOGJmYzA5NDc1YTdkN2JkNTkx
ZTI1MWEzZTkzNDY4NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTEwMSw2ICsxMTAx
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jaGlsZDEoKS0+bWVy
Z2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIExhenlKU0Nv
bnN0YW50OiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmxhenlK
U1ZhbHVlKCkuc3BlY3VsYXRlZFR5cGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIENhbGxTdHJpbmdD
b25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBUb1N0cmluZzoKQEAgLTEzMDUsNyArMTMxMSw2IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAg
ICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6CiAgICAgICAgIGNh
c2UgQ2FsbERPTTogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2
aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uCiAgICAgICAgICAgICBERkdfQ1JB
U0gobV9ncmFwaCwgbV9jdXJyZW50Tm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSBkdXJpbmcgcHJlZGlj
dGlvbiBwcm9wYWdhdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcAppbmRleCAwZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiLi45YWU5
ODA0Yzc1Yjk1ZWM1NjFlZDJmMWE1MmI5ZGVjOThjODQ1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBkYXRhTG9nRigiKSA9PSAoJXMgPSAiLCAjcmlnaHQpOyBcCiAgICAgICAgICAgICBk
YXRhTG9nKHJpZ2h0KTsgXAogICAgICAgICAgICAgZGF0YUxvZ0YoIikgKCVzOiVkKS5cbiIsIF9f
RklMRV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgICAgIGRhdGFMb2coIlxuXG5cbiIpOyBcCisg
ICAgICAgICAgICBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG51bGxwdHIpLT5kdW1wQnl0
ZWNvZGUoKTsgXAogICAgICAgICAgICAgZHVtcEdyYXBoSWZBcHByb3ByaWF0ZSgpOyBcCiAgICAg
ICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RG
X1BSRVRUWV9GVU5DVElPTiwgI2xlZnQgIiA9PSAiICNyaWdodCk7IFwKICAgICAgICAgICAgIENS
QVNIKCk7IFwKQEAgLTU2OCw2ICs1NzAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wZXJh
bmRzPHNpemVfdD4gZ2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFi
bGVzQXRIZWFkKTsKICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4gc2V0TG9jYWxQb3NpdGlv
bnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgICAgIAor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgoT3BlcmFu
ZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKSB8fCBibG9j
ay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQorICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFy
aWFibGVzQXRUYWlsLnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKS0+YWNj
ZXNzZXNTdGFjayhtX2dyYXBoKSk7CisKKyAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0aW9u
cy50bXAoaSkgPSBub3RTZXQ7CisgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMudG1w
KGkpID0gbm90U2V0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkg
ewogICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQo
aSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayht
X2dyYXBoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVk
Q1BTKQpAQCAtNzE2LDYgKzcyNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9mb3JtID09IExvYWRTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIAorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFi
bGVzQXRIZWFkLm51bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGVja09w
ZXJhbmQoCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0
TG9jYWxQb3NpdGlvbnMsIE9wZXJhbmQ6OnRtcChpKSk7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCiAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3Np
dGlvbnMsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CkBAIC05
NDQsNyArOTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tPcGVyYW5kKAogICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jaywgT3BlcmFuZHM8c2l6ZV90PiYgZ2V0TG9jYWxQb3NpdGlvbnMs
Ci0gICAgICAgIE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCkKKyAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlv
bnMsIE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChnZXRMb2NhbFBvc2l0aW9u
cy5vcGVyYW5kKG9wZXJhbmQpID09IG5vdFNldCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggNGE4YjFlNTgxNDQxZmRhNjg3NmU2
NTJjOTg0NjAxYTJiM2I3OWQzNC4uOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEw
YzgzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzNyw2ICsx
MzcsNyBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCiAjaW5jbHVk
ZSAiR2V0QnlWYWxIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRl
ICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRl
ICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgppbmRleCA3Y2QxNWQzMTVkNjM5MGFi
YTI2MzVlOTYzNTlmODkwZTJlYjcxYTk1Li5jMDc3NWQ4ZTFiMTA1MDJkZjAxYTc0YWYwYzZkZWI0
YTg3NWNjNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01l
dGFkYXRhLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEu
cmIKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgTWV0YWRhdGEKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTWV0YWRhdGEpOwogCiAgICAgcHVibGljOgorICAgICAgICAje29wLm9wY29kZUlE
fQogICAgICAgICBNZXRhZGF0YShjb25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29w
IiBpZiBpbml0c30pI3tpbml0c30geyB9CiAKICN7ZmllbGRzfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCmluZGV4IDliNWVlOTA5NmVlNzFiMWIwZDNlZDdmN2Nk
MThkYjA2ZmNiMzVmY2YuLjdmNDMwMmQ4ODJlZjZmMzU5NTc2NzdlZGNmMDQ5ZDMyNmY5NjQ0MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTUzLDcg
KzUzLDE3IEBAIGNsYXNzIFNlY3Rpb24KICAgZW5kCiAKICAgZGVmIHNvcnQhCi0gICAgICBAb3Bj
b2RlcyA9IEBvcGNvZGVzLnNvcnQgeyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFk
YXRhLmVtcHR5PyA/IDAgOiAxIDogLTEgfQorICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0
IHsgfGEsIGJ8CisgICAgICAgICAgcmVzdWx0ID0gbmlsCisgICAgICAgICAgaWYgYS5jaGVja3Bv
aW50cyBvciBiLmNoZWNrcG9pbnRzCisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMgd2l0
aCBjaGVja3BvaW50cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3thLm5hbWV9IiBpZiBhLmNoZWNr
cG9pbnRzIGFuZCBhLm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNv
ZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7Yi5uYW1lfSIgaWYg
Yi5jaGVja3BvaW50cyBhbmQgYi5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmVzdWx0
ID0gYS5jaGVja3BvaW50cyA/IGIuY2hlY2twb2ludHMgPyAwIDogLTEgOiAxCisgICAgICAgICAg
ZWxzaWYKKyAgICAgICAgICAgICAgcmVzdWx0ID0gYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFk
YXRhLmVtcHR5PyA/IDAgOiAxIDogLTEgCisgICAgICAgICAgZW5kCisgICAgICAgICAgcmVzdWx0
CisgICAgICB9CiAgICAgICBAb3Bjb2Rlcy5lYWNoKCY6Y3JlYXRlX2lkISkKICAgZW5kCiAKQEAg
LTczLDYgKzgzLDE5IEBAIGNsYXNzIFNlY3Rpb24KICAgICAgIGVuZAogCiAgICAgICBpZiBjb25m
aWdbOmVtaXRfaW5fc3RydWN0c19maWxlXQorICAgICAgICAgIGkgPSAwCisgICAgICAgICAgd2hp
bGUgdHJ1ZQorICAgICAgICAgICAgICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50cworICAgICAg
ICAgICAgICAgICAgcHJpbnQoIkZPVU5EIFRIRSBOVU1CRVIgT0YgQ0hFQ0tQT0lOVFMgQU5EIEkn
TSBQUklOVElORyBJVCBJTlRPIFRIRSBGSUxFIFdJTkRPV1MhIikKKyAgICAgICAgICAgICAgICAg
IG91dCA8PCAiXG4iCisgICAgICAgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgTlVNQkVSX09G
XyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVudF19X1dJVEhfQ0hFQ0tQT0lOVFMgI3tpfVxu
IgorICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAg
ICAgICAgaSArPSAxCisgICAgICAgICAgZW5kCisgICAgICAgICAgb3V0IDw8ICJcbiIKKwogICAg
ICAgICAgIG91dC53cml0ZSgiI2RlZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9fbmFtZV9j
b21wb25lbnRdfV9NRVRBREFUQV9TSVpFKG1hY3JvKSBcXFxuIikKICAgICAgICAgICBpID0gMAog
ICAgICAgICAgIHdoaWxlIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2
MWI4OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmLi44YjNhMjM4YTRkYWYxZmM2Nzkx
NDBkOGJiZWM3NzA5Yjg1NjhiYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0y
NjEsNyArMjYxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBtX2xhYmVsc1ttX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCldID0gbGFiZWwoKTsKIAogICAgICAg
ICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBK
SVQgZW1pdHRpbmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAo
bG9uZylkZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklU
IGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxv
bmcpZGVidWdPZmZzZXQoKSk7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKQEAgLTQzOCw2ICs0MzgsOSBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfaW50ZXJu
YWxfZmllbGQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfaW50ZXJuYWxfZmllbGQpCiAKKyAg
ICAgICAgREVGSU5FX09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9PUChvcF9p
dGVyYXRvcl9uZXh0KQorCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklO
RV9PUChvcF9yc2hpZnQpCiAgICAgICAgIERFRklORV9PUChvcF91bnNpZ25lZCkKQEAgLTUyNSw3
ICs1MjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAg
ICAgcmFyZUNhc2VQcm9maWxlID0gJnJhcmVDYXNlUHJvZmlsZXMuYXQoYnl0ZWNvZGVDb3VudEhh
dmluZ1Nsb3dDYXNlKTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAg
ICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5
dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBt
X2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAg
ICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5z
ZXRGb3JCeXRlY29kZVNsb3dQYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7
CkBAIC01ODksNiArNTkyLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3RvX3Njb3BlKQogCisgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
aXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh1bnNpZ25l
ZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5jKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfU0xPV19PUChkZWMpCkBAIC02MjYsOCArNjMyLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiQXQgIiwgZmlyc3RUbywgIiBzbG93OiAiLCBpdGVyIC0gbV9z
bG93Q2FzZXMuYmVnaW4oKSwgIlxuIik7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9N
RVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUbyAhPSBpdGVyLT50bywg
Ik5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUbyA9PSAoaXRlciAtIDEpLT50bywg
IlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwg
Zmlyc3RUby5vZmZzZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMg
bGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoZmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwg
IlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBhZGQzMihU
cnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcygmcmFyZUNhc2VQcm9maWxlLT5tX2NvdW50
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxMTgyYWEwNzI5YTI3
NDkxMDA0ZjQ1ZTFlYTZhYzEuLjgzYWUxYTdiNjk4ZDY5MzNkYmI4YTAzNzE5MDQ5ZWMyMjU4MThm
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk3LDYgKzI5Nyw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygp
OwogCisgICAgICAgIHZvaWQgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0
SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CisKICAgICAgICAgdm9pZCBhZGRTbG93
Q2FzZShKdW1wKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYpOwog
ICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKCk7CkBAIC02NzYsNiArNjc5LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsK
IAorICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0
IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRT
aGlmdFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKQEAgLTkxMSw2ICs5MTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAg
VmVjdG9yPExhYmVsPiBtX2xhYmVsczsKKyAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBM
YWJlbD4gbV9jaGVja3BvaW50TGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVy
YXRvcj4gbV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBt
X2dldEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4g
bV9nZXRCeUlkc1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5k
ZXggZTFlNTY1ZGM1MjQ5ZjZhY2ZkYWEyNGJmZmI0NDcxZmZjYjIwYjg2Ni4uMDI2MTQ3NmU5NmEx
OGE5OTA1MThkMDg3ZTQ5ZDEzNDQ1NzI2ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKEpTVkFMVUU2NCkKICNpbmNsdWRl
ICJKSVQuaCIKIAorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgorI2luY2x1ZGUgIkNh
Y2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCkBAIC00
Miw4ICs0NCw4IEBACiAjaW5jbHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUuaCIKICNpbmNsdWRlICJT
dGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUg
PHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29k
ZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCk7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCksIHJlZ1QwKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC02MSwyMCArNjMsMjEgQEAgc3RkOjplbmFibGVfaWZf
dDwKICwgdm9pZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBD
YWxsTGlua0luZm8qKQogeworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnQgPSBtX2J5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgIGludCBhcmdDb3VudCA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOwor
ICAgIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
c0ZvcihieXRlY29kZSwgY2hlY2twb2ludCk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0
YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNo
ZWNrcG9pbnQpKTsKIAogICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRF
bWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFs
UmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVk
aW5nVGhpcygwKSksIHJlZ1QwKTsKICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxs
KHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9j
YWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgp
KTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQcm9maWxlRm9yKG1ldGFkYXRhLCBjaGVj
a3BvaW50KS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxp
bmsodGhpcyk7CiAgICAgfQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNl
dCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJh
bWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0b3JlMzIoVHJ1c3RlZElt
bTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwor
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyksIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZz
ZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIH0KIAogCkBAIC0yMDcsNyArMjEwLDcg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9w
OjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwot
ICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5tX2NhbGxlZTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpKTsKIAogICAgIC8qIENhbGxlciBhbHdheXM6CiAgICAgICAgIC0gVXBkYXRl
cyBjYWxsRnJhbWVSZWdpc3RlciB0byBjYWxsZWUgY2FsbEZyYW1lLgpAQCAtMjM0LDkgKzIzNyw4
IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
YWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogICAgIHN0b3JlNjQocmVnVDAs
IEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKIAotICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKSB7CisgICAgaWYgKGNv
bXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBE
YXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBKdW1wIHNsb3dD
YXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09mTGlua2Vk
RnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CkBAIC0zODAsNiArMzgyLDE4
NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxP
cENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgewor
ICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFy
cm93OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3c7CisgICAgICAgIGNhc2Ug
V2lkZTE2OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTY7CisgICAgICAgIGNh
c2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzI7CisgICAgICAg
IGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9
KSgpOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3Ry
dWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5
RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90
PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJh
dG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2tw
b2ludFJlYWNoZWQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoaXRlcmF0b3IpIGlzIGluIHJlZ1Qw
CisKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZ2bSgpLnByb3BlcnR5TmFtZXMtPm5l
eHQ7CisgICAgCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKKworICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlJZHMu
YXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X25leHQpOworCisgICAgZmFzdENhc2UubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0
cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dU
b0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigp
OworICAgIFZpcnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKKyAgICBV
bmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgp
OworCisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJ
bmRleCsrXTsKKyAgICAKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1Qw
LCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50
KS5yYXdCaXRzKCkpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgp
IHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNl
IE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93OworICAgICAgICBj
YXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2OworICAgICAg
ICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyOworICAg
ICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgfSkoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCBy
ZWdUMCk7CisgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHkocmVnVDApOwor
ICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9u
LCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1
bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86
OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVy
YXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKKyAg
ICBvcjgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWMpKSwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNl
ZW5Nb2RlcykpOworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9u
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAg
Ly8gY2FsbCByZXN1bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09iamVjdCkgaW4gcmVnVDAKKworICAg
IEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVn
VDI7CisgICAgR1BSUmVnIGRvbmVHUFIgPSByZWdUMTsKKyAgICAvLyBpdGVyUmVzdWx0R1BSIHdp
bGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0IGdldCBieSBpZCBiZWxvdy4KKyAgICBtb3ZlKHZh
bHVlR1BSLCBpdGVyUmVzdWx0R1BSKTsKKworICAgIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKGl0ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNl
cnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAg
ICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBs
KCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0
QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kb25lLCBk
b25lR1BSKTsKKyAgICAgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICB9CisKKworICAgIHsK
KyAgICAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNo
MiA9IHJlZ1QzOworICAgICAgICBjb25zdCBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IGZhbHNlOworICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNo
SWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwg
ZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJv
cGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOworCisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGlu
ayh0aGlzKTsKKyAgICB9CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5l
eHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7CisgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgR1BSUmVnIGl0
ZXJSZXN1bHRHUFIgPSByZWdUMjsKKworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwor
ICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJh
bmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChi
cmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsK
KyAgICAgICAgCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAg
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0
ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihk
b25lVlJlZywgcmVnVDEpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fdmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50
KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0KKworICAgIHsgICAK
KyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHZhbHVlVlJlZyA9IGJ5dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0
R1BSID0gcmVnVDA7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisK
KyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAg
ICB9CisKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IDkwNjk2
Y2JlYzEwZTM5M2I5OTcwZjBlYjIwMTE4ZDIxOTc0YzM1MjUuLmQxNDBhYWM5YmUyZDU0MDNkMWJj
MGQ5OTEyYWU5ZTEwNWY4MGQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAKQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxT
bG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUK
ICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQorewor
ICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKKyAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAppbmRleCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUxYmEyNzU2NTUzM2Y0Li4y
N2E1N2Y0ZWUzNjE2NGFjZThlMzlmMzY4Y2U3NjViZjE1ZGRmYzdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1
ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTA1LDcgKzEwNyw3IEBAIEFM
V0FZU19JTkxJTkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENhbGwoQ29kZVB0cjxOb1B0
clRhZz4gdGFyZ2V0KQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJh
bWUoKQogewotICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KS5iaXRzKCk7CisgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhh
dCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9wIGNh
bGwgZnJhbWUgb24KQEAgLTE4Myw2ICsxODUsMjUgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6
aGFzQW55U2xvd0Nhc2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5PiYgc2xvd0Nhc2VzLCBWZWN0b3IK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6Y2hlY2twb2ludFJlYWNo
ZWQoKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBt
ZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRp
b24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRl
eCA9IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fY2hlY2twb2ludExh
YmVscy5hZGQobV9ieXRlY29kZUluZGV4LCBsYWJlbCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1w
U2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wIGp1bXApCit7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQg
ZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXgg
aXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKworICAg
IGF1dG8gaXRlciA9IG1fY2hlY2twb2ludExhYmVscy5maW5kKG1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgQVNTRVJUKGl0ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxzLmVuZCgpKTsKKyAgICBqdW1wLmxp
bmtUbyhpdGVyLT52YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFk
ZFNsb3dDYXNlKEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4KTsgLy8g
VGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdl
bmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldC4KQEAgLTMxOSw3ICszNDAs
NyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoTWV0YWRhdGEmIG1l
dGFkYXRhKQogewogICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICByZXR1
cm47Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YS5tX3Byb2ZpbGUpOworICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBtX2J5dGVj
b2RlSW5kZXguY2hlY2twb2ludCgpKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGlu
Z1R5cGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2FlMTUwY2M2NjEwNzYyYmFjYzhiZTQyMjA3
M2FhZDY0YWIzMTE5MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMzZGZiYmYwZTMzNjBkMzZmNTVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMzQs
NiArMTM0LDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZs
b3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgQVNTRVJUKHZtLnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93KTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRo
cm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3Qu
Il9zKTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNr
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRl
eCA4ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1Li45ZmNjNDFkZWM0NTgy
Yzk2NTI5MjM2NTVkYThmMzAyNjk1ZGY3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJh
bWUoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5k
bGVFeGNlcHRpb24oVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqKSBXVEZf
SU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3Vs
dElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IoQ29kZUJsb2NrKikgV1RG
X0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNr
KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggOGRlYTdmMjc4ZTc2NjJlNTAzMTRjZWI5
YjA4MzM5Zjg3YmZkYTQ5Ny4uNjg2ODllODMzODMzYjE1NmRmYzgwOWQwMTJhMDc5NjcxYzRmNzc5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVByb2ZpbGVGb3Iu
aCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNp
ZGVTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKQEAgLTgyLDYg
KzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7IFwKICAgICBW
TSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsgXAorICAgIGRhdGFMb2dMbklmKExMSU5UX1RSQUNJTkcgJiYgT3B0
aW9uczo6dHJhY2VMTEludFNsb3dQYXRoKCksICJDYWxsaW5nIHNsb3cgcGF0aCAiLCBXVEZfUFJF
VFRZX0ZVTkNUSU9OKTsgXAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pCiAKICNpZm5kZWYgTkRFQlVHCkBAIC02OTMsNyArNjk1LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiB9CiAKIAotc3RhdGljIHZvaWQg
c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBPcEdl
dEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90
JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyB2b2lkIHNldHVwR2V0QnlJ
ZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgR2V0QnlJZE1vZGVNZXRh
ZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
Q2VsbC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3NDMsMzkgQEAgc3RhdGljIHZvaWQg
c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBDb2QKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29k
ZUJsb2NrLT5tX2xvY2spOwogICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCi0gICAgICAgICAg
ICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90
LnNsb3RCYXNlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1
Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICB2
bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi0KLUxMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRC
eUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgTExJTlRfQkVH
SU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9iYXNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpHZXQpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9i
amVjdCwgaWRlbnQsIHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGNh
bGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7Ci0gICAgCisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCiAgICAgaWYgKCFMTElOVF9B
TFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAg
ICYmIHNsb3QuaXNDYWNoZWFibGUoKQogICAgICAgICAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKICAg
ICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAobWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6
RGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0
cnVjdHVyZUlEID0gbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpVbnNldDoKLSAgICAg
ICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0
TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlByb3RvTG9hZDoKLSAgICAgICAgICAgICAgICBvbGRT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0
dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5wcm90b0xv
YWRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IDA7CkBAIC03OTksMzUg
Kzc5NiwxMDMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAg
ICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUp
IHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOwogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNh
Y2hlLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRN
b2RlV2l0aG91dENhY2hlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1v
ZGVXaXRob3V0Q2FjaGUoKTsKIAogICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBl
IGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAgICBtZXRhZGF0
YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgICAgIAogICAgICAgICAgICAgaWYg
KHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmICFzdHJ1Y3R1cmUt
Pm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5p
ZCgpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2Rl
LmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgbWV0
YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAg
ICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRP
ZmZzZXQoKTsKICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2sp
OwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkg
eworICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRD
YWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xv
dEJhc2UoKSAhPSBiYXNlVmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICgh
KC0tbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAgICAgICAgICAgICAgIHNl
dHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGdsb2JhbE9iamVjdCwgdm0sIGNvZGVCbG9jaywgcGMs
IG1ldGFkYXRhLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYm
IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7CiAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAg
ICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwotICAg
ICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJv
ZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKKyAgICAgICAgICAg
IG1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShi
YXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAgICAgICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQogCi0gICAgTExJTlRfUFJPRklM
RV9WQUxVRShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsK
KworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
KTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KTsKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQoreworICAg
IExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JP
cGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1faXRlcmF0b3IpOworICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9y
bUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKTsKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JO
ZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KTsKKyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFs
dWUgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0J3Mg
Z29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgUmVnaXN0ZXImIGRv
bmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworCisg
ICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiJfcykpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZt
LnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZG9uZVJlZ2lzdGVyID0gcmVzdWx0OworICAg
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNbMF0g
PSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSk7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJ
dGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOworICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJl
dHVybiB2YWx1ZSB0bXAgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0aGlzIGJ5dGVj
b2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIFJlZ2lzdGVyJiB2YWx1
ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAg
IEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKKworICAg
IEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9i
YWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRh
dGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgdmFsdWVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fdmFsdWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworICAgIExMSU5UX0VORCgpOworfQorCisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE1NjMsNyArMTYyOCw3IEBA
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJh
bWUsIENvZGVTcGVjaWFsaXphdGlvbktpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IDApCiB7CiAg
ICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCkBAIC0x
NTcxLDE2ICsxNjM2LDE2IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgLy8gLSBJZiBw
b3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KICAgICAvLyAtIFJldHVybiBh
IHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBm
cmFtZS4KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV9jYWxsZWUpOworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBjYWxsZWVGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkp
OwogICAgIAotICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBieXRlY29k
ZS5tX2FyZ3Y7CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAtIHN0YWNr
T2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpOwogICAg
IAotICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhieXRlY29k
ZS5tX2FyZ2MpOworICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludEluZGV4
KSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2Fs
bGVyRnJhbWUoY2FsbEZyYW1lKTsKICAgICAKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwg
a2luZCwgY2FsbGVlQXNWYWx1ZSwgJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvKTsKKyAgICByZXR1
cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmY2FsbExpbmtJ
bmZvRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsKIH0KIAogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2NhbGwpCkBAIC0xNjA0LDYgKzE2NjksMjggQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCkKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcENvbnN0
cnVjdD4oKSwgQ29kZUZvckNvbnN0cnVjdCkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGlu
ZyBzbG93IG9wZW5fY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+
KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCkpOworfQorCitMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8vICAg
IGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfY2FsbCIpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+
YXM8T3BJdGVyYXRvck5leHQ+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0
ZU5leHQpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVf
Zm9yX3ZhcmFyZ3MpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTE5OTAsNiArMjA3Nyw0NCBA
QCBzdGF0aWMgdm9pZCBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdAogICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRl
Y29kZS5tX2RzdCkgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yT3Bl
bkNoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck9wZW4mIGJ5dGVjb2RlKQoreworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9y
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKTsK
KyAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBKU1ZhbHVlIG5l
eHQgPSBpdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpID0gbmV4dDsKK30KKworc3RhdGljIHZvaWQgaGFu
ZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJhdG9yTmV4dCYgYnl0ZWNv
ZGUsIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlJiBzaWRlU3RhdGUpCit7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnRJ
bmRleCA9IHNpZGVTdGF0ZS5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKKworICAgIGF1dG8m
IHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7
CisgICAgYXV0byBpdGVyYXRvclJlc3VsdE9iamVjdCA9IHNpZGVTdGF0ZS50bXBzW09wSXRlcmF0
b3JOZXh0OjpuZXh0UmVzdWx0XTsKKyAgICBhdXRvIG5leHQgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCk7ICAgIAorCisgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKG5leHQsICJXZSBzaG91bGQgbm90IE9TUiBleGl0IHRvIGEgY2hlY2twb2lu
dCBmb3IgZmFzdCBjYXNlcy4iKTsKKworICAgIGF1dG8mIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworICAgIGlmIChjaGVja3BvaW50SW5kZXgg
PT0gT3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAgICAgZG9uZVJlZ2lzdGVyID0gaXRl
cmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+ZG9u
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQor
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChkb25lUmVnaXN0ZXIuanNWYWx1ZSgpLnRv
Qm9vbGVhbihnbG9iYWxPYmplY3QpKQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0ganNVbmRlZmlu
ZWQoKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9i
amVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSk7Cit9CisKIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiBwYykKIHsKICAgICBSRUxFQVNF
X0FTU0VSVCghY29kZUJsb2NrLT52bSgpLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7CkBAIC0y
MDY2LDYgKzIxOTEsMTUgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRo
X2NoZWNrcG9pbnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAgICAgaGFuZGxl
VmFyYXJnc0NoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BU
YWlsQ2FsbFZhcmFyZ3M+KCksICpzaWRlU3RhdGUuZ2V0KCkpOwogICAgICAgICBicmVhazsKIAor
ICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBoYW5kbGVJdGVyYXRvck9wZW5D
aGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JP
cGVuPigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4
dDogeworICAgICAgICBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCAqc2lkZVN0YXRlLmdldCgp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTAzLDYgKzIyMzcs
MTIgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNDZWxsKiBjZWxsKQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwp
OwogfQogCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92YWx1ZShFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBkYXRhTG9nTG4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7Cit9CisKIGV4
dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50X2NyYXNoKCkKIHsKICAg
ICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjZGFmYTRmOTNjM2E5ZjA5ODA1NzFjODE3
NjdjMWEuLmY5YTM0ZGFiMzZkOWZhNTI3NTZhMTk4YjJkNzRmNzUyYzUzOGFjMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTEwMzIsNyArMTAzMiw3IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNv
ZGVOYW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmlu
ZVdpZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAotbWFjcm8gY2FsbFRhcmdldEZ1bmN0
aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2Fs
bFB0clRhZykKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gs
IGNhbGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAg
ICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVsc2UKQEAgLTEwNDUsMTEgKzEwNDUs
MTEgQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFAKICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVy
IExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKICAgICAgICAgIyBjcmFz
aGVzLgogICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAogICAgIGRlZmluZU9TUkV4aXRSZXR1
cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNh
bGwoKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gp
CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3JvIHByZXBhcmVG
b3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCkBA
IC0xMTE3LDcgKzExMTcsMTEgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVt
cDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFn
CiBlbmQKIAotbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK21hY3JvIHNsb3dQYXRoRm9y
Q29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVw
YXJlQ2FsbCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3Bh
dGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbENhbGxTbG93UGF0aCgKICAgICAg
ICAgc2xvd1BhdGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIwIGFuZCByMQpAQCAtMTEyNiw3ICsx
MTMwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXIKICAgICAgICAgICAgIG1vdmUgY2FsbGVl
RnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQs
IFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2Fs
bFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRp
c3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1
bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJU
YWcpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0yMDE2LDcgKzIwMjAsNyBAQCBtYWNybyBkb0Nh
bGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGZyYW1l
U2xvd1BhdGgsIHNsbwogICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVyRnJhbWVBbmRQQ1NpemUs
IHNwCiAgICAgICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisg
ICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
ZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVuZAogCiAKQEAgLTIwNzksNyArMjA4
Myw3IEBAIGVuZCkKICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5l
ZC4KIAogX2xsaW50X29wX2NhbGxfZXZhbDoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xv
d1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAogICAgICAg
ICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0yMDg4LDcgKzIwOTIsNyBAQCBfbGxp
bnRfb3BfY2FsbF9ldmFsOgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9sbGlu
dF9vcF9jYWxsX2V2YWxfd2lkZTE2OgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0
aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCiAgICAgICAgIHdp
ZGUxNiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwOTcsNyArMjEwMSw3IEBAIF9sbGludF9v
cF9jYWxsX2V2YWxfd2lkZTE2OgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIF9s
bGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93
UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCiAgICAgICAg
IHdpZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIxMDcsNyArMjExMSw3IEBAIF9sbGlu
dF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogCiAKIGNvbW1vbk9wKGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50LCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KHNpemUsIE9wQ2FsbEV2YWwsIG1hY3JvICgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwg
T3BDYWxsRXZhbCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8gKCkKICAgICAgICAgZGlzcGF0Y2hP
cChzaXplLCBvcF9jYWxsX2V2YWwpCiAgICAgZW5kKQogZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRl
eCA4MTg5MWMyMmU2MTgzYzgwNDJhYmRmY2U4ZDQzOTExYWY0MWY2NTRhLi43NGM0ODBkZjIxMjE3
MTY1NTBjNWZkNGYwODQ0YWIxMTA4ZmRjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjcsNyAr
NjcsNyBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFk
YXRhLCBkaXNwYXRjaCwgZm4pCiAgICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAogICAgICAgICBt
ZXRhZGF0YSh0NSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQ1LCB0
MSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUs
IHQxLCB0MCkKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCkBAIC03NywxNiArNzcsMTcgQEAgZW5kCiAKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxs
aW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1t
YWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFj
cm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJd
LCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MykKKyAgICBnZXQoc2l6
ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQzKQogICAgIHN0b3JlaSByMSwg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMpCi0gICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQogICAgIGRpc3BhdGNoKCkK
KwogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbikKQEAgLTYzMiw5ICs2MzMsOSBAQCBtYWNy
byB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVl
RmllbGROYW1lKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKK21hY3JvIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQogICAgIHN0b3Jl
aSB0YWcsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFRh
Z09mZnNldFttZXRhZGF0YV0KLSAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KKyAg
ICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUl
Lm1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCiBlbmQKIAogCkBAIC0xMzc4LDcg
KzEzNzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0
QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGxvYWRpIE9wR2V0QnlJZERp
cmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWREaXJlY3QsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwg
bV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRE
aXJlY3RTbG93OgpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQK
ICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cK
ICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRN
b2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkK
KyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAg
cmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgpAQCAtMTQxMyw3ICsxNDE0
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0
ZXJmbHlbdDNdLCB0MAogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGlu
Z0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwg
Lm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgSW50MzJUYWcs
IHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFn
LCB0MCkKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CkBAIC0x
NDIxLDcgKzE0MjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRC
eUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpIE9wR2V0
QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0s
IHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcs
IHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNd
LCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgVW5k
ZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUs
IFVuZGVmaW5lZFRhZywgMCkKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRC
eUlkRGVmYXVsdDoKQEAgLTE0MzAsNyArMTQzMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
CiAgICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLmNhY2hlZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQx
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAg
ICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE0NDAsNyArMTQ0MSw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0
dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0
MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIxLCByMCkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIx
LCByMCkKIAogZW5kKQpAQCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1bHRQYXlsb2Fk
LCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQog
ICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1MjcsNyArMTUyOCw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0
Y2gzCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhd
CiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4
XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNo
MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0
Y2gzLCBzY3JhdGNoMikKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTcyLDcg
KzE1NzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWws
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9wR2V0QnlWYWxOb3RFbXB0eToK
ICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwg
dDIsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0Miwg
dDEpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAt
MTU4NSw3ICsxNTg2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2lu
dDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6
ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQy
LCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDIsIHIx
LCByMCkKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xOTU3LDEwICsxOTU4LDEwIEBA
IG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBw
cmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBU
YWdPZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCiAgICAgICAgIHByZXBhcmVDYWxsKCVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5j
dGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBK
U0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNF
bnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwo
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBh
cmVDYWxsKQorICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxs
KQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjg4LDcgKzIyODksNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9t
U2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21T
Y29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAg
IGVuZAogCkBAIC0yMjk3LDcgKzIyOTgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9m
cm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAg
ICAgICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3QwXSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQx
LCB0MikKICAgICBlbmQKIApAQCAtMjMwNSw3ICsyMzA2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRb
dDVdLCB0MwogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBU
YWdPZmZzZXRbdDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1l
bnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4o
dDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTk0LDYgKzI1OTUsMTUgQEAgbGxpbnRPcFdpdGhSZXR1
cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGMKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogZW5kKQogCitsbGludE9wKG9wX2l0
ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkK
KyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKKyAg
ICBicmVhaworZW5kKQorCitsbGludE9wKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFi
ZWwob3BfaXRlcmF0b3JfbmV4dCwgc2l6ZSkKKyAgICBicmVhaworZW5kKQogCiBsbGludE9wV2l0
aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwgdDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCmluZGV4IGFlMmUzNzczZmZkY2M0MDY3NGM3YWFjMGMxZDRmZTZjZDBmYjc4NTkuLjg2MTM2
ZTg1N2M5Zjc4MjJiMjQ0NmM2MjZiZmRjN2EzZGZiYjJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02OCwy
NiArNjgsMjYgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBt
ZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92
ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCB0MSwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBz
dG9yZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5k
CiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB2YWx1ZSkKLSAg
ICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVj
a2V0c1ttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVO
YW1lLCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFkYXRhXQogZW5kCiAKICMgQWZ0
ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMg
YXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2Fk
UEMoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6
bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBtX2RzdCwgdDEpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJl
Z2lzdGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNp
emUsIG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgcjApCiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTEzNDAsNyArMTM0MCw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0
U2xvdwogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwg
dDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0
QnlJZERpcmVjdFNsb3c6CkBAIC0xMzQ4LDUzICsxMzQ4LDU5IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKKyMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCittYWNybyBwZXJm
b3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJv
ZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0
YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEu
bW9kZVt0Ml0sIHQxCi0gICAgZ2V0KG1fYmFzZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkYiAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKIAogLm9w
R2V0QnlJZERlZmF1bHQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6RGVm
YXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEu
ZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0
QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEu
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0
Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zm
c2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAp
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAK
IC5vcEdldEJ5SWRQcm90b0xvYWQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9k
ZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKICAgICBsb2FkaSBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9k
ZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MwotICAgIGJpbmVxIHQz
LCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9t
b2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQotICAgIGxvYWRw
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVk
U2xvdFt0Ml0sIHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1l
dGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCisgICAgYmluZXEg
dDMsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
bW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3Rv
TG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAg
ICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNv
bnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1v
dmUgdDMsIHQwCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1l
dGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCi0gICAgYnRp
eiB0MCwgSXNBcnJheSwgLm9wR2V0QnlJZFNsb3cKLSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBl
TWFzaywgLm9wR2V0QnlJZFNsb3cKKyAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwg
dDAsIHQyLCB0NSkKKyAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKKyAgICBidGl6IHQw
LCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09i
amVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAK
LSAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdworICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJl
bAogICAgIG9ycSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIs
IHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6
Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEg
dDAsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBW
YWx1ZVVuZGVmaW5lZCkKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQw
LCB0MSwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkKQogICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkK
IAorZW5kCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jh
c2UsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9w
R2V0QnlJZFNsb3cpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVN
ZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVy
bikKKwogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Z2V0X2J5X2lkKQogICAgIGRpc3BhdGNoKCkKQEAgLTE0MDIsNyArMTQwOCw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhp
dFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTQ5
Nyw3ICsxNTAzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBtYWNybyBmaW5pc2hH
ZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAg
ICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQK
IApAQCAtMTU1OCw3ICsxNTY0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogLm9wR2V0
QnlWYWxEb25lOgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9m
aWxlLCB0NSwgdDIpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9y
YWdlOgpAQCAtMTU3MSw3ICsxNTc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vc3JS
ZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5
X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIHQ1LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0
NSwgcjApCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xOTQ4LDYgKzE5NTQsMzAgQEAgbWFj
cm8gYXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAuZG9uZToKIGVuZAog
CittYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgcHJlcGFyZUNhbGwsIHNpemUsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykKKyAgICBtZXRhZGF0YSh0NSwgdDApCisgICAgZ2V0Q2FsbGVl
KHQwKQorCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCisgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxs
U2xvdworCisgICAgZ2V0QXJndW1lbnRTdGFydCh0MykKKyAgICBsc2hpZnRpIDMsIHQzCisgICAg
bmVncCB0MworICAgIGFkZHAgY2ZyLCB0MworICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQorICAg
IGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKQorICAgIHN0b3JlUEMoKQorICAgIHN0
b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQor
ICAgIG1vdmUgdDMsIHNwCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNF
bnRyeVB0clRhZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNo
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVU
YXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZv
ckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQK
KwogbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3Qs
IHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTE5NTYsMjQgKzE5ODYsMTkgQEAg
bWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHBy
ZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBmaWVsZE5hbWUsIGRzdCkKICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAotICAgICAgICBnZXQo
bV9jYWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIK
LSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCi0gICAgICAgIGJx
bmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fYXJndiwgdDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMKLSAgICAgICAgbmVncCB0MwotICAg
ICAgICBhZGRwIGNmciwgdDMKLSAgICAgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCi0gICAgICAg
IGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQyKQotICAgICAgICBzdG9yZVBDKCkK
LSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRP
ZmZzZXRbdDNdCi0gICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0
NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlv
bihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0Vu
dHJ5UHRyVGFnKQotCi0gICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFy
ZUNhbGwpCisgICAgICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgICAgICBnZXQobV9j
YWxsZWUsIHQwKQorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBnZXRBcmd1bWVudFN0YXJ0
KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIGRzdCkK
KyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRDb3VudChkc3QpCisgICAg
ICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCBkc3QpCisgICAgICAgIGVu
ZAorCisgICAgICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVj
dCwgbV9wcm9maWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50KQogICAgIGVu
ZCkKIGVuZAogCkBAIC0yMjc2LDcgKzIzMDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Ywog
ICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1l
dGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
dDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwg
dDUsIHQyKQogICAgICAgICByZXR1cm4odDIpCiAgICAgZW5kCiAKQEAgLTIyODQsMTQgKzIzMDks
MTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2Nv
cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2Nv
cGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAog
ICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3Bl
LCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAg
bWFjcm8gZ2V0Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRh
ZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1l
bnRfdmFyaWFibGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgdDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1f
cHJvZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAgLTI1NTEs
NyArMjU3Niw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV9jb250cm9sX2Zsb3cs
IE9wUHJvZmlsZUNvbnRyb2xGbG93LCBtYWNybyAoc2l6ZSwKICAgICBkaXNwYXRjaCgpCiBlbmQp
CiAKLQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5n
dGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAx
LCB0MApAQCAtMjU2Nyw2ICsyNTkxLDE0NyBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVz
dF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5k
KQogCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9w
ZW4sIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1l
dGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQ
YXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBm
YXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXpl
KGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxP
cCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFz
c2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhw
ciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3Bh
dGNoKCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVj
a3BvaW50KCkKKyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQKKyAgICBlbmQKKworICAgIG1hY3Jv
IGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAg
ZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAg
ICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBl
bmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAg
ICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9v
cGVuLCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCwgT3BJdGVyYXRvck9wZW4s
IG1faXRlcmF0b3JQcm9maWxlLCBtX2l0ZXJhdG9yLCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIHNp
emUsIGdvdG9HZXRCeUlkQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1l
bnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQorCisu
Z2V0QnlJZFN0YXJ0OgorICAgIG1hY3JvIHN0b3JlTmV4dEFuZERpc3BhdGNoKHZhbHVlKQorICAg
ICAgICBtb3ZlIHZhbHVlLCB0MgorICAgICAgICBnZXQobV9uZXh0LCB0MSkKKyAgICAgICAgc3Rv
cmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAg
bG9hZFZhcmlhYmxlKGdldCwgbV9pdGVyYXRvciwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxN
YXNrLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93CisgICAgcGVyZm9ybUdldEJ5SURI
ZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRl
cmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5k
RGlzcGF0Y2gpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKKyAgICBkaXNw
YXRjaCgpCisKK2VuZCkKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBP
cEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX25leHQsIHQwKQorICAgIGJ0cW56IHQwLCB0
MCwgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8g
ZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFz
dF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxT
bG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFj
cm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlf
ZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBm
YXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBX
ZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFz
dCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywg
Lml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck5leHRHZW5l
cmljOgorICAgIG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0
RG9uZVN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBn
ZXQobV9uZXh0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGlu
Z1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck5leHQsIG1fc3Rh
Y2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5n
VGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgICMgVXNl
IG1fdmFsdWUgc2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUgdG8gaXQg
bGF0ZXIuCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9uZXh0LCBfbGxpbnRfc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQsIG1fbmV4dFJlc3VsdFByb2ZpbGUs
IG1fdmFsdWUsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldERvbmVDaGVja3Bv
aW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwg
Z2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXREb25lU3RhcnQ6CisgICAgbWFj
cm8gc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFsdWUpCisgICAgICAgICMgdXNlIHQw
IGJlY2F1c2UgcGVyZm9ybUdldEJ5SURIZWxwZXIgdXN1YWxseSBwdXRzIHRoZSBkb25lVmFsdWUg
dGhlcmUgYW5kIG9mZmxpbmVhc20gd2lsbCBlbGlkZSB0aGUgc2VsZiBtb3ZlLgorICAgICAgICBt
b3ZlIGRvbmVWYWx1ZSwgdDAKKyAgICAgICAgZ2V0KG1fZG9uZSwgdDEpCisgICAgICAgIHN0b3Jl
cSB0MCwgW2NmciwgdDEsIDhdCisgICAgICAgIGptcCAuZ2V0VmFsdWVTdGFydAorICAgIGVuZAor
CisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICBidHFueiB0Mywgbm90
Q2VsbE1hc2ssIC5nZXREb25lU2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0
b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywg
c2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xv
dzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9k
b25lKQorICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90
cmFtcG9saW5lKQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDApCisKKyAgICAjIHN0
b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUgZG9uZVZhbHVlIGludG8gdDAKKy5nZXRW
YWx1ZVN0YXJ0OgorICAgICMgQnJhbmNoIHRvIHNsb3cgaWYgbm90IG1pc2MgcHJpbWl0aXZlLgor
ICAgIGJ0cW56IHQwLCB+MHhmLCAuZ2V0VmFsdWVTbG93CisgICAgYnRpeiB0MCwgMHgxLCAubm90
RG9uZQorICAgIGRpc3BhdGNoKCkKKworLm5vdERvbmU6CisgICAgbWFjcm8gc3RvcmVWYWx1ZUFu
ZERpc3BhdGNoKHYpCisgICAgICAgIG1vdmUgdiwgdDIKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQx
KQorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgICAgICBjaGVja1N0YWNrUG9p
bnRlckFsaWdubWVudCh0MCwgMHhiYWRkYjAxZSkKKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVu
ZAorCisgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lk
IGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4KKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3Zh
bHVlLCB0MykKKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJl
c3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJl
Zm9yZS4KKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1v
ZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRh
LCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0
Y2goKQorZW5kKQorCisKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQs
IE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
ICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2Jhc2UsIHQxKQogICAgIGdldHUoc2l6ZSwgT3BHZXRJ
bnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYgppbmRleCA4ZDc2NzExNmMwNTRlNWVhNjY0ZWY0MDYyYzU2ZjI2
MDVlMGQ4YjQ1Li41ODlhZTBlMGYzZWQzNGI2NjFlODU2MmJjYTI5ODAyZWMxMGU1YjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCkBAIC02Mjks
NyArNjI5LDcgQEAgZW5kCiAKIGNsYXNzIE5vZGUKICAgICBkZWYgdmFsaWRhdGUKLSAgICAgICAg
cmFpc2UgIlVucmVzb2x2ZWQgI3tkdW1wfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAg
ICByYWlzZSAiVW5yZXNvbHZlZCAnI3tkdW1wfScgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAg
ICBlbmQKICAgICAKICAgICBkZWYgdmFsaWRhdGVDaGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjhkZTk2NTU4MmY3
ZDkxMjcxMzM3ZDU0MzE5MDNlODMxOGMyNmY0Ny4uOTNlN2U3MzYwMWJmNzNlN2RhZDc1NGVhYmMx
NTYzZDhhMGU4NzEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSXRlcmF0b3JP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
QEAgLTE1Myw4ICsxNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFJFVFVSTl9QUk9G
SUxFRCh2YWx1ZV9fKSBcCiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHZhbHVlX18sIFBST0ZJ
TEVfVkFMVUUocmV0dXJuVmFsdWVfXykpCiAKLSNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZSkg
ZG8geyBcCi0gICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9wcm9maWxlLm1f
YnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyNkZWZpbmUgUFJPRklMRV9W
QUxVRSh2YWx1ZV9fKSBcCisgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUp
CisKKyNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAor
ICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0
c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAog
c3RhdGljIHZvaWQgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpAQCAtOTY1LDYgKzk2OSwxMjgg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKQogICAgIFJFVFVSTihqc0Jvb2xl
YW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKSk7CiB9CiAKK3RlbXBsYXRlPE9w
Y29kZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywg
dm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgLy8gRG9uJ3Qgc2V0IFBDOyB3ZSBjYW4ndCB0aHJv
dyBhbmQgaXQncyByZWxhdGl2ZWx5IHNsb3cuCisgICAgQkVHSU5fTk9fU0VUX1BDKCk7CisKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yT3Blbiwgd2lkdGg+
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yT3Bl
bjo6TWV0YWRhdGEqPihtZXRhZGF0YVB0cik7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IEdFVF9D
KGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKTsKKyAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0
ZXJhYmxlLCBtX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9
IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBhdXRvJiBp
dGVyYXRvciA9IEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKworICAgIGF1dG8gcHJlcGFyZUZv
ckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5h
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBUaGlz
IGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3Rp
bGwgdmFsaWQuCisgICAgICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICBp
ZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
TW9kZTo6R2VuZXJpYzsgCisKKyAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvckZ1bmN0aW9uKCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFdl
IHNob3VsZCBiZSBnb29kIHRvIGdvLgorICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFk
YXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwg
SXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgICAgICBHRVQoYnl0ZWNvZGUubV9uZXh0KSA9
IEpTVmFsdWUoKTsKKyAgICAgICAgYXV0byogaXRlcmF0ZWRPYmplY3QgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihpdGVyYWJsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGl0ZXJhdG9yID0gSlNBcnJh
eUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVy
ZSgpLCBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgfQor
ICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclBy
b2ZpbGUpOworICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgIH07
CisKKyAgICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7CisgICAgICAgIGlm
IChwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5KQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgfQorCisgICAgLy8gUmV0
dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRh
Lm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRh
ZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVy
aWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1
cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sK
KyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMs
IG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwordGVt
cGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRl
cmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck5leHQsIHdpZHRoPigpOworICAg
IGF1dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck5leHQ6Ok1ldGFk
YXRhKj4obWV0YWRhdGFQdHIpOworCisgICAgQVNTRVJUKCFHRVQoYnl0ZWNvZGUubV9uZXh0KS5q
c1ZhbHVlKCkpOworICAgIEpTT2JqZWN0KiBpdGVyYXRvciA9IGpzQ2FzdDxKU09iamVjdCo+KEdF
VChieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCkpOzsKKyAgICBKU0NlbGwqIGl0ZXJhYmxl
ID0gR0VUKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKKyAgICBpZiAo
YXV0byBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwg
aXRlcmF0b3IpKSB7CisgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0Fy
cmF5Kj4odm0sIGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVBy
b2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKworICAgICAg
ICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5t
X2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsK
KyAgICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmll
bGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOworICAgICAgICAgICAgaW50NjRfdCBp
bmRleCA9IGluZGV4U2xvdC5nZXQoKS5hc0FueUludCgpOworICAgICAgICAgICAgQVNTRVJUKDAg
PD0gaW5kZXggJiYgaW5kZXggPD0gbWF4U2FmZUludGVnZXIoKSk7CisKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWU7CisgICAgICAgICAgICBib29sIGRvbmUgPSBpbmRleCA9PSAtMSB8fCBpbmRl
eCA+PSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV9kb25lKSA9
IGpzQm9vbGVhbihkb25lKTsKKyAgICAgICAgICAgIGlmICghZG9uZSkgeworICAgICAgICAgICAg
ICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlz
IGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChpbmRl
eCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IGFycmF5LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmRleCkpOworICAgICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgICAgICAgICAg
ICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIG1fdmFsdWVQcm9maWxlKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUg
YmVjYXVzZSB3ZSBrbm93IHRoaXMgaXMgYSBwcmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5k
ZXhTbG90LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoLTEpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFsdWU7CisgICAgICAg
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVy
YXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0
cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vl
bk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRp
b25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1
cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sK
KyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMs
IG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4
dF90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMihD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0
YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMzI+KGNhbGxG
cmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV92YWwpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4ZGI1ZjU1OGZhNzg1
MDRjYWIwOTY0M2M2MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRjZDhiMmVlMGEzOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
QEAgLTI0Niw2ICsyNDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29i
amVjdF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rp
b24pOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CisvLyBTTE9XX1BBVEhfSElEREVO
X0RFQ0woaXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpAQCAtMjgzLDYg
KzI4NSwxOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRo
X3NwcmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZm
ZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwogCit0ZW1wbGF0
ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBp
dGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywg
dm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRI
IGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
U0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFt
ZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCit0ZW1wbGF0ZTxP
cGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVy
YXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9p
ZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0
ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSosIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSos
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1c2luZyBTbG93UGF0
aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShDYWxsRnJhbWUqLCBj
b25zdCBJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDM1MzU5MDkwNDkxY2UwYWZkY2Q4
YmJiNGY4NzViYjM4MThjMjJkM2UuLjY4NzRlYzc5MDM3NThjZjlkZjQ0MzlhNjIzOTA2MWNmMjcw
NTg5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApA
QCAtMzMwLDYgKzMzMCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBp
bnRyaW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktp
bmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCit7Cisg
ICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgor
ICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvbktpbmQ6OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICBjYXNl
IFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6
S2V5czsKKyAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJy
YXlFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6RW50cmll
czsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KK30K
KworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJkN2Q4YWMyMDU0
MmU4YThkN2UxOGM0MmJhZTkuLjcxYmEzYWFkMzU5Njk1NmFmYzJkMGFiZmM2ZmQxZGUxN2FmMWVk
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xODcs
NiArMTg3LDggQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBEYXRhVmlld1NldEZs
b2F0NjQsCiB9OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvcklu
dHJpbnNpYyhJbnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNp
Yyk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJi
OThhOTY4N2VjNjA5Li40ZmQwYTExNjUyNWNkYzUzMmE1M2QwYjhiNWFjYjUzMzg3YThkYmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApA
QCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0
ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBr
aW5kKTsKKyAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtp
bmQpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVk
T2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsKKyAgICB9CiAg
ICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBT
dHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0
ODFlZC4uZDMwMmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBmZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1LDYgKzIyNSw3IEBA
IHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBib29sIGlzQ2FsbGFi
bGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlwZSYsIENhbGxE
YXRhJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7CiAgICAgYm9v
bCBpc0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCmluZGV4IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFkODBhZjcuLjYyZjlk
MjRmMTVkMDcyNDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODI3LDYgKzgyNywx
MyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29uc3QKICAgICBy
ZXR1cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc0NhbGxhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1bnVzZWRUeXBlOwor
ICAgIENhbGxEYXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFibGUodm0sIHVudXNl
ZFR5cGUsIHVudXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NhbGxhYmxl
KFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpIGNvbnN0CiB7
CiAgICAgaWYgKCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgK
aW5kZXggZThiMjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzExYi4uYjI1MDM1Njlj
ODQyMjU2MDExNDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8ganNDYXN0KEpTVmFs
dWUgZnJvbSkKIC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmluZSBGT1JfRUFDSF9K
U19EWU5BTUlDX0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAgIG1hY3JvKEpTSW1t
dXRhYmxlQnV0dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlwZSwgSlNUeXBl
OjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0FycmF5SXRlcmF0b3Is
IEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBl
KSBcCiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9y
VHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0
LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9i
amVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBc
CiAgICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpK
U0Z1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50
ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUpIFwKICAgICBt
YWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBl
KSBcCisgICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5
cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZm
ZXIsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSkgXAog
ICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlUeXBlLCBMYXN0VHlw
ZWRBcnJheVR5cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6SlNQcm9taXNlVHlw
ZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMjZhYTBkN2M2ZWRmYTYzZTNjOGZmNjIw
OGY2MjVmNTcwMzY4NzNmMC4uMTE3M2FhMDg4ZGNiNzZjMDRmZTRiNWZjMGIxYTQ5MzkzMzkxZTc4
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtNTU5LDEwICs1NTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CiAg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25l
ciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgYXJyYXlQcm90
b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKICAgICAgICAgfSk7Ci0gICAgbV9hcnJheVBy
b3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnZh
bHVlcy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2lj
KSk7Ci0gICAgICAgIH0pOworICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnNldCh2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52
YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNp
YykpOwogCiAgICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAgLTE3NDksNyAr
MTc0Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24u
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5j
dGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVu
Y3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1
bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMmMyOGU4YmY2Y2E0ZTczYjU2Y2RhMzc3NGIyMTc2NDcx
YTlmMDUxMy4uMGFjZGZhZWQ5ZTlhZGZjMjM4YWI3YzIzNDJlMzU0OTMwYWE2OTIzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTks
NyArMjk5LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNG
dW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247Ci0gICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1
ZXNGdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFs
dWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9u
PiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVu
Y3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwpAQCAtNjA4
LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90
b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlz
KTsgfQorICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlv
biogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNh
cGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CkBAIC02MTksNiArNjE5LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIG51bWJl
clByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG9Ub1N0
cmluZ0Z1bmN0aW9uLmdldEluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9CiAgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9
CiAgICAgSlNGdW5jdGlvbiogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdDsKKyAgICBK
U0Z1bmN0aW9uKiBhcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKTsgfQogICAgIEpTT2JqZWN0KiByZWdF
eHBQcm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJv
dG9TeW1ib2xSZXBsYWNlLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0ds
b2JhbEdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2Rl
R2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAppbmRleCA5OTY5NGQwMTI3YmFlMWNlYTVjZjYzZmE5Y2RkOTc3MDAwY2I3YWE0Li5mYjQw
ZmM5NTA3NmFjNTBhMGEzOTRmNThjNTNlYjFjYmRiMDZmYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTExOSw2ICsxMTksOCBAQCBjb25zdGV4
cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5z
aWduZWQsIHNoYWRvd0NoaWNrZW5Mb2dTaXplLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTWF4VGFpbERlbGV0ZWRGcmFtZXNTaXplLCAxMjgs
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKKyAgICB2KEJvb2wsIHVzZUl0ZXJhdGlvbkludHJp
bnNpY3MsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKICAgICB2KEJvb2wsIHVzZU9T
TG9nLCBmYWxzZSwgTm9ybWFsLCAiTG9nIGRhdGFMb2coKXMgdG8gb3NfbG9nIGluc3RlYWQgb2Yg
c3RkZXJyIikgXAogICAgIC8qIGR1bXBEaXNhc3NlbWJseSBpbXBsaWVzIGR1bXBERkdEaXNhc3Nl
bWJseS4gKi8gXAogICAgIHYoQm9vbCwgZHVtcERpc2Fzc2VtYmx5LCBmYWxzZSwgTm9ybWFsLCAi
ZHVtcHMgZGlzYXNzZW1ibHkgb2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24gY29tcGlsYXRp
b24iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRl
eCA3NjRhZDA2NWFjMDExZTMzYzMyMzhjZDlkYTk1MzljMTU4MzkyM2U1Li45YzJjZTdhZmFlNmUz
OGU3YTYwODAyNmY1MTc3MTEwZTNjODU1NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNjgsNiArMTI2OCw4IEBAIHZvaWQgU3RydWN0dXJl
OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBj
b25zdAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBCcmllZihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBD
U3RyaW5nJiBzdHJpbmcpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIlIiwgc3RyaW5nLCAiOiIs
IGNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIGlmIChpbmRleGluZ1R5cGUoKSAmIEluZGV4
aW5nU2hhcGVNYXNrKQorICAgICAgICBvdXQucHJpbnQoIiwiLCBJbmRleGluZ1R5cGVEdW1wKGlu
ZGV4aW5nVHlwZSgpKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wQ29udGV4dEhlYWRlcihQ
cmludFN0cmVhbSYgb3V0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396611</attachid>
            <date>2020-04-15 20:33:10 -0700</date>
            <delta_ts>2020-04-15 21:05:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415203309.patch</filename>
            <type>text/plain</type>
            <size>236278</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWI4MmNiMDE2NTFlMjY5OTFkYmNmN2M3YTUxMDRhNTJlZTRmODdhLi5iN2Y1MzFlY2JlZjQwNzZk
YWQ0MDZjMjA4ODljNjkzMDM1Yjc4NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTggQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5n
L1BoYW50b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikg
Um9sbGluZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dp
dGNoaW5nIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwgZWFjaCB2
YXJpYWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpvcjgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTgpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAg
ICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwOgorICAgICAgICAoSlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZv
cik6CisgICAgICAgIChKU0M6OmFycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVl
UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAg
ICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZv
cik6CisgICAgICAgIChKU0M6OmNhbGxlZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVy
c0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRy
eUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToK
KyAgICAgICAgKiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QmFzZUluc3RydWN0aW9uOjp3aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5z
dHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dXBlclNhbXBsZXIuaC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xl
YXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRh
aW5zKToKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6
U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2VuZXJpY0VudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNF
bXB0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVu
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JHZW5lcmljQ2xvc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlTWluTWF4KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2lt
cGxpZmljYXRpb25QaGFzZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Zm9yQWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZU
bXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJ
bmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpT
VmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9y
L01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mp
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBG
cmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y2hlY2twb2ludFJlYWNoZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBl
Q2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVJdGVyYXRvck9w
ZW5DaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yTmV4dENo
ZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX2NoZWNrcG9pbnRfb3Ny
X2V4aXQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfZHVtcF92YWx1ZSk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93
KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X25hcnJvdyk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2
KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9JbnRyaW5z
aWMuY3BwOgorICAgICAgICAoSlNDOjppbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyk6CisgICAg
ICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJs
ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAy
MDIwLTA0LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogYWRkIGEgU3RlcCBuZXh0IHRoYXQgc3RlcHMgYnkgZXhw
cmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjUwMTlmZDkwNTcxOGI1
YTMyY2YyNmFlMzcyNGI4ZTE4MWNjMjhlLi5kZjQyN2RmNWEwMjc1OTMzYjQ5Nzc0ZGM3ZTEwMjY3
NWI3MGQwODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMyw2ICsxMTAz
LDggQEAKIAkJNTNDNEY2NkIyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M0RjY2QTIx
QjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsKIAkJNTNDNkZFRUYx
RThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkwMEIxODQyNSAvKiBX
YXNtT3Bjb2RlT3JpZ2luLmggKi87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAvKiBX
YXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi87IH07CisJCTUz
RDM1NDk5MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1NDk3MjQwRDg4QUQwMDg5
NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAw
QUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJh
dGlvbk1vZGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0
NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNF
MUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMg
LyogSlNWYWx1ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07
CkBAIC0zODE0LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2Fz
bU9wY29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
YXNtT3Bjb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTcz
MDcxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2Zp
bGVGb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVQcm9maWxl
Rm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4MjQwRDg4QUQwMDg5
NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCeXRlY29kZVVzZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBC
M1dhc21BZGRyZXNzVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNX
YXNtQWRkcmVzc1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNENDQ0REQxREFGMDlBMDAwQjkyNzg0IC8qIEIzV2Fz
bUFkZHJlc3NWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBC
M1dhc21BZGRyZXNzVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFMUY4RjcyMTU0NzE0OTAwMDFEREJDIC8q
IEpTVmFsdWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFs
dWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDggKzgyMjUs
MTAgQEAKIAkJCQlDMkZDQUUwRTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcCAqLywKIAkJCQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmggKi8sCiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKKwkJCQk1M0QzNTQ5NzI0MEQ4OEFE
MDA4OTUwREQgLyogQnl0ZWNvZGVQcm9maWxlRm9yLmggKi8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUzRDI2NDJBMUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNEMzU0OTgyNDBEODhB
RDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JF
MDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJDMDI0MUEwRThDMDBC
NjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUg
LyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJCTE0Q0MzQkExMjEz
OEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIy
MTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMx
QzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICov
LAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEu
aCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywK
IAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZC
NTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywK
QEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5
dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0Qzcz
NSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2
RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVQ
cm9maWxlRm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNEYyMTkxOEIzRTE2
NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4ODVFMTExODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MTEs
NiArOTcyMCw3IEBACiAJCQkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNwYWNl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8q
IElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2RDU2MUQ1OTEyRkEw
MDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Q0MUVDOTIz
QzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRl
cmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBjODQ3ZmM3ZGY1
ODZhYWQ2Zjg1MDcwODMzY2JmNWJhNWViZWYwZWM4Li4xNTM5N2U4YjdmNDhhODRmYjI3ZjExZDJm
MTM3MWUwZTJhMzAxY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjg2LDYgKzY4NiwyMCBAQCBwdWJsaWM6
CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCisg
ICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2FsSW1tZWRp
YXRlOjpjcmVhdGUzMihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9y
cjwzMj4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9naWNhbEltbSk7Cisg
ICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWRN
ZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBvcjMyKGlt
bSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
bV9wdHIpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBvcjY0KGRlc3QsIHNyYywgZGVzdCk7
CkBAIC0xNjAzLDcgKzE2MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIo
c3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgdm9p
ZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgo
UmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgMCk7CkBAIC0xNjE4LDcgKzE2MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAg
fQogCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKKyAg
ICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92
YWx1ZSkpOwogICAgICAgICBpZiAoIWltbTgubV92YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDhj
Njk3OWJiOWIyZmRlYjA0Y2EwMjZlNzY2ZDIwOGI3M2EwNjNmMmUuLjJhMWRkZWRlZTM2ZGJlM2Nk
ZTU3MmY0ODYwNWE0NjRjODBiNmU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMjsK
ICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IxNjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6b3I4OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMjsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKQEAgLTk2LDYgKzk3LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgb3IxNihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKICAgICB9CiAKKyAg
ICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJl
Z2lzdGVyKCkpOworICAgICAgICBvcjgoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7
CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1f
cHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IGZiMzQ4YjkyZGQyNjIzYzA2NTFlZmQyZTRhOGMwZThk
ZTIzN2IyMDEuLjk0MjY1N2M2MmYwNzQ5Y2EwNWM0ZWVlNGQ2N2I5NWZlNjQ1NWQ5ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTIwNywx
MCArMjA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3V0T2ZCb3VuZHMoKSB7IG1fb3V0T2ZC
b3VuZHMgPSB0cnVlOyB9CiAgICAgYm9vbCogYWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVy
biAmbV9vdXRPZkJvdW5kczsgfQogICAgIAotICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9
IHN0cnVjdHVyZS0+aWQoKTsKLSAgICB9CisgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlSUQoU3Ry
dWN0dXJlSUQgc3RydWN0dXJlSUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJl
SUQ7IH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsg
bV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAKICAgICB2b2lkIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDFm
NTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIuLmUyODhhOTk3MjAwOGJjOTUy
OTdmNThhZjA5NTlkM2ZjZDk0MGRkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzQsNiArMzQsNyBAQCB0eXBlcyBbCiAgICAgOkdl
dEJ5VmFsSGlzdG9yeSwKICAgICA6R2V0UHV0SW5mbywKICAgICA6SW5kZXhpbmdUeXBlLAorICAg
IDpJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgOkpTQ2VsbCwKICAgICA6SlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQsCiAgICAgOkpTR2xvYmFsT2JqZWN0LApAQCAtMTE2Miw2ICsxMTYzLDU5
IEBAIG9wIDpnZXRfcmVzdF9sZW5ndGgsCiAgICAgICAgIG51bVBhcmFtZXRlcnNUb1NraXA6IHVu
c2lnbmVkLAogICAgIH0KIAorIyBTZW1hbnRpY2FsbHksIHRoaXMgaXMgaXRlcmF0b3IgPSBzeW1i
b2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0OworIyBGb3IgYnVpbHRp
biBpdGVyYXRvcnMsIGhvd2V2ZXIsIHRoaXMgaGFzIHNwZWNpYWwgYmVoYXZpb3Igd2hlcmUgbmV4
dCBiZWNvbWVzIHRoZSBlbXB0eSB2YWx1ZSwgd2hpY2gKKyMgaW5kaWNhdGVzIHRoYXQgd2UgYXJl
IGluIGEga25vd24gaXRlcmF0aW9uIG1vZGUgdG8gb3BfaXRlcmF0b3JfbmV4dC4KK29wIDppdGVy
YXRvcl9vcGVuLAorICAgIGFyZ3M6IHsKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzeW1ib2xJdGVyYXRv
cjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYWJsZTogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogewor
ICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAorICAgICAg
ICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgY2FsbExpbmtJbmZvOiBM
TEludENhbGxMaW5rSW5mbywKKyAgICAgICAgaXRlcmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgbmV4
dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICB9LAorICAgIGNoZWNrcG9pbnRzOiB7CisgICAg
ICAgIHN5bWJvbENhbGw6IG5pbCwKKyAgICAgICAgZ2V0TmV4dDogbmlsLAorICAgIH0KKworIyBT
ZW1hbnRpY2FsbHksIHRoaXMgaXMgbmV4dFJlc3VsdCA9IG5leHQuQGNhbGwoaXRlcmF0b3IpOyBk
b25lID0gbmV4dFJlc3VsdC5kb25lOyB2YWx1ZSA9IGRvbmUgPyB1bmRlZmluZWQgOiBuZXh0UmVz
dWx0LnZhbHVlOworb3AgOml0ZXJhdG9yX25leHQsCisgICAgYXJnczogeworICAgICAgICBkb25l
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIG5leHQ6IFZpcnR1YWxSZWdp
c3RlciwKKyAgICAgICAgaXRlcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc3RhY2tP
ZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgaXRlcmF0
aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAgaXRlcmFibGVQcm9m
aWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0lu
Zm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRv
bmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIGRvbmVQcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1l
dGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICB9LAorICAg
IHRtcHM6IHsKKyAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwKKyAgICB9LAorICAgIGNoZWNr
cG9pbnRzOiB7CisgICAgICAgIGNvbXB1dGVOZXh0OiBuaWwsCisgICAgICAgIGdldERvbmU6IG5p
bCwKKyAgICAgICAgZ2V0VmFsdWU6IG5pbCwKKyAgICB9CisKIG9wIDp5aWVsZCwKICAgICBhcmdz
OiB7CiAgICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLApAQCAtMTI5MCw2ICsxMzQ0
LDggQEAgb3AgOm9wX2dldF9ieV9pZF9yZXR1cm5fbG9jYXRpb24KIG9wIDpvcF9nZXRfYnlfdmFs
X3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV9pZF9yZXR1cm5fbG9jYXRpb24KIG9wIDpv
cF9wdXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX29wZW5fcmV0dXJu
X2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb24KIG9wIDp3YXNt
X2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNmVmZTBkOGZmNmM3OTg5NmFmZDAwZTIwY2M0Mjc3
OWQzYTRiMGM3Li5kNTg3ZWUwM2YyNmQ4ZGZiOTRkMDhkNDQyMDQwOGNhYzUwYTM4ZWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMjMxLDYgKzIzMSwxMyBAQCBCaXRtYXA8bWF4TnVtQ2hl
Y2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChjb25zdCBDb2RlQmxvY2smIGNv
ZGVCbG9jawogICAgICAgICAgICAgcmVzdWx0LnNldChPcENhbGxWYXJhcmdzOjphcmdDb3VudElu
Y2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIHJlc3VsdC5zZXQoT3BJdGVyYXRvck5leHQ6
Om5leHRSZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVQcm9maWxlRm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFhY2FjZjNiZmVkMTVj
NmMxN2NhYTZjYjFlOTU4MTI4ZDVkMmYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3IuaApAQCAtMCwwICsxLDE2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1
Y3RzLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGVGb3JJbXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3Bv
aW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgcmV0
dXJuICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK2Jvb2wgaGFzQXJyYXlQcm9maWxlRm9yKEJ5
dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7Cisg
ICAgcmV0dXJuIGFycmF5UHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitBcnJheVByb2ZpbGUm
IGFycmF5UHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hl
Y2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChoYXNBcnJheVByb2ZpbGVGb3IobWV0YWRhdGEs
IGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJldHVybiAqYXJyYXlQcm9maWxlRm9ySW1wbChtZXRh
ZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVN
ZXRhZGF0YT4KK1ZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1ldGFk
YXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIFVOVVNFRF9Q
QVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0
YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBzd2l0Y2ggKGNoZWNr
cG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiBy
ZXR1cm4gJm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0
b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAg
IGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAg
IH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0
ZXJhdG9yX25leHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAg
ICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTog
cmV0dXJuICZtZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JO
ZXh0OjpnZXRWYWx1ZTogcmV0dXJuICZtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAgICAgICAg
ZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSAKKyAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX3Byb2ZpbGU7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+Citib29sIGhhc1ZhbHVlUHJvZmlsZUZvcihCeXRl
Y29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAg
IHJldHVybiB2YWx1ZVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlJiB2
YWx1ZVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICBBU1NFUlQoaGFzVmFsdWVQcm9maWxlRm9yKG1ldGFkYXRhLCBj
aGVja3BvaW50SW5kZXgpKTsKKyAgICByZXR1cm4gKnZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRh
dGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgor
T3BlcmFuZCBkZXN0aW5hdGlvbkZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVk
IGNoZWNrcG9pbnRJbmRleCwgSklUVHlwZSB0eXBlID0gSklUVHlwZTo6Tm9uZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2Rl
OjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2tw
b2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJl
dHVybiBieXRlY29kZS5tX2l0ZXJhdG9yOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpn
ZXROZXh0OiByZXR1cm4gYnl0ZWNvZGUubV9uZXh0OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9y
X25leHQpIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2Fz
ZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHsKKyAgICAgICAgICAgIGlmICh0eXBlID09
IEpJVFR5cGU6OkRGR0pJVCB8fCB0eXBlID09IEpJVFR5cGU6OkRGR0pJVCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiBieXRlY29kZS5tX3ZhbHVlOyAvLyBXZSByZXVzZSB2YWx1ZSBhcyBh
IHRlbXAgYmVjYXVzZSBpdHMgZWl0aGVyIG5vdCB1c2VkIGluIHN1YnNlcXVlbnQgYnl0ZWNvZGVz
IG9yIHdyaXR0ZW4gYXMgdGhlIHRlbXAgb2JqZWN0IC4KKyAgICAgICAgfQorICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1cm4gYnl0ZWNvZGUubV9kb25lOworICAgICAg
ICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuIGJ5dGVjb2RlLm1fdmFsdWU7
CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVj
b2RlLm1fZHN0OworfQorCisvLyBDYWxsLWxpa2Ugb3Bjb2RlIGxvY2F0aW9ucworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBCeXRlY29kZT4KK1ZpcnR1YWxSZWdpc3RlciBjYWxsZWVGb3IoY29uc3QgQnl0
ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VE
X1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bj
b2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbikgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludElu
ZGV4ID09IE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVj
b2RlLm1fc3ltYm9sSXRlcmF0b3I7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6
Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrcG9p
bnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV9uZXh0OworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9j
YWxsZWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgordW5zaWduZWQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25l
ZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7
CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3Bl
bikgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JPcGVuOjpz
eW1ib2xDYWxsKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAo
Qnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX25leHQpIHsKKyAgICAgICAgQVNTRVJU
KGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpOworICAgICAg
ICByZXR1cm4gMTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fYXJnYzsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitwdHJkaWZmX3Qgc3RhY2tPZmZzZXRJ
blJlZ2lzdGVyc0ZvckNhbGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCB1bnNpZ25lZCBjaGVj
a3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAg
aWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3Blbikgewor
ICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xD
YWxsKTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0g
Ynl0ZWNvZGUubV9pdGVyYWJsZS5vZmZzZXQoKTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChC
eXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBBU1NFUlQo
Y2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7CisgICAgICAg
IHJldHVybiBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIGJ5dGVjb2RlLm1faXRl
cmF0b3Iub2Zmc2V0KCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2Fy
Z3Y7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitMTEludENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNp
Z25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRl
eCk7CisgICAgcmV0dXJuIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwCmluZGV4IDY3ZjJjZWMwYTgwZjBiODJmZmQyY2YwZjY5N2Y3MGUwZDU2MjZjMTMu
LmE1YTUwN2VkMmU5MmRjZWUzZmMxNTFiZGViMmE2MjcyNzNjMjI3NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjU5LDYg
KzI1OSw5IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVn
aXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAKICAgICBVU0VTKE9wWWllbGQsIGdl
bmVyYXRvciwgYXJndW1lbnQpCiAKKyAgICBVU0VTKE9wSXRlcmF0b3JPcGVuLCBzeW1ib2xJdGVy
YXRvciwgaXRlcmFibGUpCisgICAgVVNFUyhPcEl0ZXJhdG9yTmV4dCwgaXRlcmF0b3IsIG5leHQs
IGl0ZXJhYmxlKQorCiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQ6CiAgICAgICAg
IGhhbmRsZU5ld0FycmF5TGlrZShpbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheVdpdGhTcHJlYWQ+
KCkpOwogICAgICAgICByZXR1cm47CkBAIC00ODYsNiArNDg5LDkgQEAgdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnUKIAogICAgIERFRlMoT3BDYXRjaCwgZXhjZXB0aW9uLCB0aHJvd25WYWx1ZSkKIAor
ICAgIERFRlMoT3BJdGVyYXRvck9wZW4sIGl0ZXJhdG9yLCBuZXh0KQorICAgIERFRlMoT3BJdGVy
YXRvck5leHQsIGRvbmUsIHZhbHVlKQorCiAgICAgY2FzZSBvcF9lbnRlcjogewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1WYXJzOyBpLS07KQogICAgICAgICAgICAgZnVuY3Rvcih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IGQyOWY2MGU5NDI4MjI1OTE5NDc3Njg1NTdlYTg3
YTY1N2YyM2E2MGIuLjkxNWNjNjMxZGJkMjg0NWVlOTEzOGUxMzllYjY5ZTk2MzQxNzUxMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBA
IC00MCwxOCArNDAsMzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIENhbGxMaW5rSW5mbzo6Q2FsbFR5
cGUgQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihPcGNvZGVJRCBvcGNvZGVJRCkKIHsKLSAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCisgICAg
c3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CisgICAg
Y2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CisgICAgICAgIHJldHVybiBUYWls
Q2FsbFZhcmFyZ3M7ICAgICAgICAKKworICAgIGNhc2Ugb3BfY2FsbDoKKyAgICBjYXNlIG9wX2Nh
bGxfZXZhbDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9uZXh0OgogICAgICAgICByZXR1cm4gQ2FsbDsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2Fs
bF92YXJhcmdzKQorCisgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgICAgIHJldHVybiBD
YWxsVmFyYXJnczsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0KQorCisgICAgY2Fz
ZSBvcF9jb25zdHJ1Y3Q6CiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3Q7Ci0gICAgaWYgKG9wY29k
ZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzKQorCisgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFy
YXJnczoKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgaWYgKG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbCkKKworICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICByZXR1
cm4gVGFpbENhbGw7Ci0gICAgQVNTRVJUKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdz
IHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk7Ci0gICAgcmV0
dXJuIFRhaWxDYWxsVmFyYXJnczsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDYWxsOwog
fQogCiBDYWxsTGlua0luZm86OkNhbGxMaW5rSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCBmMTNkMTczNGEwMmM1OGEz
MjE3NTkyNWQyODg1NWEyYTI2MDAxODE4Li5iOTBmODI0NmZjNjExMTM3OGFlYmVmOTAyNTZmMTE1
ZWYxN2UzYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5jcHAKQEAgLTgxLDYgKzgxLDEzIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
CiAgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVj
dGlvbi0+YXM8T3BUYWlsQ2FsbD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5r
SW5mbzsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgICAg
ICBjYWxsTGlua0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFk
YXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIG9wX2l0ZXJhdG9yX25leHQ6CisgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlv
bi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlu
a0luZm87CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCAwNTNiMWI0NDkyMGI2YTg3ODE1N2U2MTYwYjY1M2U3YTRlNzMw
NGIyLi5kYzQ5YWYwZDUzZmIzNThkZjYyMWY0YzA0NjdhY2IxMGQwNDA3ODg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlRHVtcGVyLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJC
eXRlY29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNs
dWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC01
ODMsNiArNTg0LDIwIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJTksoT3BD
YXRjaCkKICAgICAgICAgTElOSyhPcFByb2ZpbGVDb250cm9sRmxvdykKIAorICAgICAgICBjYXNl
IG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BJ
dGVyYXRvck9wZW4pCisKKyAgICAgICAgICAgIG1fbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJv
ZmlsZXMgKz0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9w
SXRlcmF0b3JOZXh0KQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2Ugb3BfcmVzb2x2ZV9zY29wZTogewogICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFUQShP
cFJlc29sdmVTY29wZSkKIApAQCAtMTIyNCwxNCArMTIzOSwyNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDE4CiAgICAgICAgIC8vIFdlIG5lZWQg
dG8gYWRkIG9wdGltaXphdGlvbnMgZm9yIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1
bmNfZGVjbF9pbl9ldmFsIHRvIGRvIGxpbmsgdGltZSBzY29wZSByZXNvbHV0aW9uLgogCi0gICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlk
TW9kZTo6RGVmYXVsdCkKKyAgICAgICAgYXV0byBjbGVhcklmTmVlZGVkID0gWyZdIChHZXRCeUlk
TW9kZU1ldGFkYXRhJiBtb2RlTWV0YWRhdGEsIEFTQ0lJTGl0ZXJhbCBvcE5hbWUpIHsKKyAgICAg
ICAgICAgIGlmIChtb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwor
ICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtb2RlTWV0YWRhdGEuZGVm
YXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8
IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVj
dHVyZUlEKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNz
LiIpOwotICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhKTsKKyAgICAgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nICIsIG9wTmFtZSwgIiBM
TEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7CisgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobW9kZU1l
dGFkYXRhKTsKKyAgICAgICAgfTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRl
cmF0b3JPcGVuPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVhcklmTmVl
ZGVkKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCAiaXRlcmF0b3Igb3BlbiJfcyk7CisgICAgICAg
IH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEubV9k
b25lTW9kZU1ldGFkYXRhLCAiaXRlcmF0b3IgbmV4dCJfcyk7CisgICAgICAgICAgICBjbGVhcklm
TmVlZGVkKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEsICJpdGVyYXRvciBuZXh0Il9zKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEsICJnZXQgYnkgaWQiX3MpOwogICAgICAgICB9KTsKIAogICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZERpcmVjdD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewpAQCAtMTMyNiw5ICsxMzU0LDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5s
aW5lQ2FjaGVzKCkKICAgICAgICAgYXV0byBjbGVhciA9IFsmXSAoKSB7CiAgICAgICAgICAgICBh
dXRvJiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KHN0ZDo6Z2V0PDE+KHBhaXIua2V5
KSk7CiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQo
KTsKLSAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfZ2V0X2J5X2lkKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmlu
ZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICAgICAgTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hl
KGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEodGhpcykpOworICAgICAgICAg
ICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xl
YXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRh
KHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0
ZXJhdG9yIG9wZW4gcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRD
YWNoZShpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEodGhpcykubV9t
b2RlTWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgaXRlcmF0b3IgbmV4
dCBwcm9wZXJ0eSBhY2Nlc3MuIik7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0
IHJlYWxseSB3YW50IHRvIGNsZWFyIGJvdGggY2FjaGVzIGhlcmUgYnV0IGl0J3Mga2luZGEgYW5u
b3lpbmcgdG8gZmlndXJlIG91dCB3aGljaCBvbmUgdGhpcyBpcyByZWZlcnJpbmcgdG8uLi4KKyAg
ICAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
TmV4dD4oKS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0
YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUo
bWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBA
IC0zMDQxLDYgKzMwODcsMTEgQEAgVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnRyeUdldFZhbHVl
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY28KIAogI3VuZGVmIENB
U0UKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVBy
b2ZpbGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMp
LCBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0
OgorICAgICAgICByZXR1cm4gJnZhbHVlUHJvZmlsZUZvcihpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyksIGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsK
KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAppbmRleCAyMmU3NmIx
ODVlYjllYmE5N2RlOWJiMDgxZDY0MTg2YmY1NGNlNGFhLi41MzYyMjg5MDdlODRjNDkzM2NkMjkz
ZGYzNTAxN2JmNzlkZTc0ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKQEAgLTM5LDEyICszOSwyNCBAQCB2b2lkIENvZGVCbG9j
azo6Zm9yRWFjaFZhbHVlUHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogCiAgICAgaWYgKG1f
bWV0YWRhdGEpIHsKICNkZWZpbmUgVklTSVQoX19vcCkgXAotICAgIG1fbWV0YWRhdGEtPmZvckVh
Y2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwg
ZmFsc2UpOyB9KTsKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOwogCiAgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCiAKICN1bmRlZiBW
SVNJVAotICAgIH0KKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JPcGVu
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IAorICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0
ZXJhYmxlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJh
dG9yUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRQcm9m
aWxlLCBmYWxzZSk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMo
bWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyht
ZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRh
Lm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgIH0pOworICAgIH0gICAKIAogfQogCkBA
IC02OCw2ICs4MCwxMCBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25z
dCBGdW5jdG9yJiBmdW5jKQogCiAjdW5kZWYgVklTSVQxCiAjdW5kZWYgVklTSVQyCisKKyAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgeworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAg
ICAgIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeVN0YXR1cy5jcHAKaW5kZXggOTNmMjI3MGFjYTY1MmJmMTljMmM5NTU5MWVkYWU1MTY3N2Ey
ODhjMi4uMjIyZWIxOTVkMTMwNjE5NzcwNmFmZDI2YjQ4MWYzNjEyNzM3MjkxYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC04Niw2ICs4
NiwzNiBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoK
ICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKIAorICAg
IGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkgPT0gT3BJdGVyYXRvck9wZW46OmdldE5leHQpOworICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShwcm9m
aWxlZEJsb2NrKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBqdXN0IGJhaWwg
aWYgd2Ugc2VlIGEgZ2V0X2J5X2lkX3Byb3RvX2xvYWQuCisgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwMzkKKyAgICAgICAgaWYgKG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAg
ICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICBzdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlE
OworICAgICAgICBpZGVudGlmaWVyID0gJnZtLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBh
dXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0
YShwcm9maWxlZEJsb2NrKTsKKyAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgp
ID09IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7CisgICAgICAgICAgICBpZiAobWV0YWRhdGEu
bV9kb25lTW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAg
ICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5h
bWVzLT5kb25lOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSk7CisgICAgICAg
ICAgICBpZiAobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2Rl
OjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0
aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fdmFsdWVN
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZGVudGlm
aWVyID0gJnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IDA4NWFlOGQx
OTk3NmI4ODZmMDAxOWY4NWZhNjdiMDJiZTE0Y2RhNWUuLjNkNzBjZDU0M2VjZmFlOTAyMjUwMjk2
MDFhMGQ0MDVlYzY3MWIyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3Qg
SlNPcGNvZGVUcmFpdHMgewogICAgIHVzaW5nIE9wY29kZUlEID0gOjpKU0M6Ok9wY29kZUlEOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2tw
b2ludHMgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfQ0hF
Q0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29k
ZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX0JZVEVDT0RF
X1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29kZXNXaXRo
Q2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gb3Bfd2lkZTE2OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgT3Bjb2RlSUQgd2lkZTMyID0gb3Bfd2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSA6OkpTQzo6b3Bjb2RlTGVuZ3RoczsKQEAg
LTQxLDcgKzQzLDkgQEAgc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKIAogc3RydWN0IFdhc21PcGNv
ZGVUcmFpdHMgewogICAgIHVzaW5nIE9wY29kZUlEID0gV2FzbU9wY29kZUlEOworICAgIHN0YXRp
YyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPSBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09GX1dBU01fV0lUSF9DSEVDS1BPSU5UUyk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0
YSA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJfT0ZfV0FTTV9XSVRIX01FVEFEQVRBKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51
bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29k
ZUlEIHdpZGUxNiA9IHdhc21fd2lkZTE2OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQg
d2lkZTMyID0gd2FzbV93aWRlMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25l
ZCogb3Bjb2RlTGVuZ3RocyA9IHdhc21PcGNvZGVMZW5ndGhzOwpAQCAtOTgsMTIgKzEwMiwyNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJh
aXRzPigpID09IFRyYWl0czo6d2lkZTMyOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAgIE9wY29kZVNpemUgd2lkdGgoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkKKyAgICAgICAgICAgIHJldHVy
biBPcGNvZGVTaXplOjpXaWRlMzI7CisgICAgICAgIHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkg
PyBPcGNvZGVTaXplOjpXaWRlMTYgOiBPcGNvZGVTaXplOjpOYXJyb3c7CisgICAgfQorCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgYm9vbCBoYXNN
ZXRhZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigp
IDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YTsKICAgICB9CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBib29sIGhhc0No
ZWNrcG9pbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+
KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIGludCBz
aXplU2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsKQEAgLTEzNyw2ICsxNTUsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHRoaXMpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdp
ZHRoLCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBUIGFzS25vd25XaWR0
aCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAg
ICAgICByZXR1cm4gVChyZWludGVycHJldF9jYXN0PGNvbnN0IHR5cGVuYW1lIFR5cGVCeVNpemU8
d2lkdGg+Ojp1bnNpZ25lZFR5cGUqPih0aGlzICsgKHdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJv
dyA/IDEgOiAyKSkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRy
YWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIFQqIGNhc3QoKQogICAgIHsKQEAgLTE2MSw3ICsx
ODYsNyBAQCBwdWJsaWM6CiAgICAgewogCiAgICAgICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+
KCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNp
emU6OldpZGUxNj4qPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIDEpOworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4q
Pih0aGlzICsgMSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNP
cGNvZGVUcmFpdHM+CkBAIC0xNjksMTQgKzE5NCwxNiBAQCBwdWJsaWM6CiAgICAgewogCiAgICAg
ICAgIEFTU0VSVChpc1dpZGUzMjxUcmFpdHM+KCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUzMj4qPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih0aGlzKSArIDEpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBJbXBsPE9wY29kZVNpemU6OldpZGUzMj4qPih0aGlzICsgMSk7CiAgICAgfQogfTsKIAogc3Ry
dWN0IEluc3RydWN0aW9uIDogcHVibGljIEJhc2VJbnN0cnVjdGlvbjxPcGNvZGVJRD4gewogfTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKEluc3RydWN0aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRo
IGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwogCiBzdHJ1Y3QgV2FzbUluc3RhbmNlIDogcHVi
bGljIEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNp
emVvZihXYXNtSW5zdGFuY2UpID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMg
Ynl0ZSBtYXRoIik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkyZDY5MTkzMWM2Yzc5NDhlNTU3ZTRmNTY5MjNhZTM0OTBmZWI5ZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9kZU1ldGFkYXRh
LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBJ
dGVyYXRpb25Nb2RlIDogdWludDhfdCB7CisgICAgR2VuZXJpYyA9IDEgPDwgMCwKKyAgICBGYXN0
QXJyYXkgPSAxIDw8IDEsCit9OworCitjb25zdGV4cHIgdWludDhfdCBudW1iZXJPZkl0ZXJhdGlv
bk1vZGVzID0gMjsKKworT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1Nf
V0lUSF9JTlRFUkdSQUxTKEl0ZXJhdGlvbk1vZGUpOworCitzdHJ1Y3QgSXRlcmF0aW9uTW9kZU1l
dGFkYXRhIHsKKyAgICB1aW50OF90IHNlZW5Nb2RlcyB7IDAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihkZWNsdHlwZShzZWVuTW9kZXMpKSA9PSBzaXplb2YoSXRlcmF0aW9uTW9kZSkpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmluZGV4IDJkMTQzYjljZjY3NDMwNWQ0MGM5
MWViMGFlMzUxMzMxMjU2OTQ0MWYuLmJiZTFmNjdmZmJlZmU4ZThiYjEzNjdlYjZjN2VkNjdjYmFh
OGFiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwCkBAIC02MCwxNCArNjAsMzEgQEAgdm9pZCBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0
IEYKICAgICB9CiAKICAgICBhdXRvJiBpbnN0cnVjdGlvbiA9IG1fb3duZXItPmluc3RydWN0aW9u
cygpLmF0KG1fYnl0ZWNvZGVPZmZzZXQuZ2V0KCkpOwotICAgIGNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKSk7
CisgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgeworICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxP
cEdldEJ5SWQ+KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkubV9tb2RlTWV0YWRhdGEpOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAgICAgY2xlYXJM
TEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRh
dGEobV9vd25lci5nZXQoKSkubV9tb2RlTWV0YWRhdGEpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKTsKKyAg
ICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEp
OworICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0
YWRhdGEpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAK
LXZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVh
ckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6TWV0YWRhdGEmIG1ldGFkYXRhKQordm9pZCBM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAgLy8gS2Vl
cCBoaXRDb3VudEZvckxMSW50Q2FjaGluZyB2YWx1ZS4KLSAgICBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKKyAgICBtZXRhZGF0YS5jbGVh
clRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
aAppbmRleCAyMjBmZmYzZTNiZjU0MzQxZTk2MWM4MmRmOGM0ZThjOTAwMDczNGJlLi4xZDU5NTdl
ZmY4MTA5MmExZGFiZGVlNTAyNWNhYzVlNmYzODY3ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgaW5zdGFsbChWTSYpOwogCi0gICAgc3RhdGljIHZvaWQgY2xl
YXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJik7CisgICAgc3RhdGljIHZv
aWQgY2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFkYXRhJik7CiAKICAgICBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmluZGV4IDE4NTFiNjNj
N2NhNmFlZjJmYjM2YmYyZjg3ZTkyYTE5ZTBkNDBjMTguLmFhODg1OWFkZDYyODYwZmZkYWRiNGQy
MjI4N2MzNGIwN2NlNWIzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgKQEAgLTE0OCw2ICsxNDgsOSBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRo
Rm9yTWF4T3Bjb2RlTGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIobQogICAgIG1hY3Jv
KE9wVGFpbENhbGwpIFwKICAgICBtYWNybyhPcENhbGxFdmFsKSBcCiAgICAgbWFjcm8oT3BDb25z
dHJ1Y3QpIFwKKyAgICBtYWNybyhPcEl0ZXJhdG9yT3BlbikgXAorICAgIG1hY3JvKE9wSXRlcmF0
b3JOZXh0KSBcCisKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXgg
NWRiMThjNjQ4MmQ3NmQ0ZmE3YjQ2ZTk4YjlmOTcwMGRjMzg2MzBmNC4uOTQ2NThiMDk2YmYxOTNj
ODdjZmQ3MWE5ZjViZGUxNWY2MTMzMmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTEyMCw2ICsxMjAsMTYgQEAgaW5saW5lIGJv
b2wgaXNBbnlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAoraW5saW5lIGJvb2wgaXNTdWJ0eXBlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUs
IFNwZWN1bGF0ZWRUeXBlIGNhdGVnb3J5KQoreworICAgIHJldHVybiAhKHZhbHVlICYgfmNhdGVn
b3J5KSAmJiB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgc3BlY3VsYXRpb25Db250YWlucyhTcGVj
dWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7CisgICAgcmV0dXJu
ICEhKHZhbHVlICYgY2F0ZWdvcnkpICYmIHZhbHVlOworfQorCiBpbmxpbmUgYm9vbCBpc0NlbGxT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gISEodmFsdWUg
JiBTcGVjQ2VsbCkgJiYgISh2YWx1ZSAmIH5TcGVjQ2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKaW5kZXggOTYxMGRjZTVjZGJjM2VjMDljZTMz
YjFkNmJjYzRiM2ZmOGE2YzNjOC4uZTliZjk1MzFmN2JhNTk1NzMxMTBlMzFhN2E0NGNkMjI4Yjc1
NzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2Ft
cGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIu
aApAQCAtNDgsNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgZ19zdXBlclNhbXBsZXJD
b3VudC0tOwogICAgIH0KIAorICAgIHZvaWQgcmVsZWFzZSgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9kb1NhbXBsZSk7CisgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKKyAgICAgICAg
bV9kb1NhbXBsZSA9IGZhbHNlOworICAgIH0KKwogcHJpdmF0ZToKICAgICBib29sIG1fZG9TYW1w
bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2M2QzNjJjYWMxOWQ0OTM5ODk0Nzc3YmVkYTdj
MGFjMmQ2MzYwNjNmLi44ZmVkZTYyYjUzMGViZDEwMWZlZGE2MWFiYWI5NDlhM2YzYjM1OWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtNDAxNiwxNCArNDAxNiwxNSBAQCBib29sIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZChjb25zdCBWYXJpYWJsZSYgdmFy
aWFibGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25O
b2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVn
aXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2Rl
LCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCiB7CiAgICAgYm9vbCBpc0ZvckF3YWl0
ID0gZm9yTG9vcE5vZGUgPyBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpIDogZmFsc2U7Ci0gICAg
QVNTRVJUKCFpc0ZvckF3YWl0IHx8IChpc0ZvckF3YWl0ICYmIGlzQXN5bmNGdW5jdGlvblBhcnNl
TW9kZShwYXJzZU1vZGUoKSkpKTsKKyAgICBhdXRvIHNob3VsZEVtaXRBd2FpdCA9IGlzRm9yQXdh
aXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87CisgICAgQVNTRVJUKCFpc0ZvckF3
YWl0IHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkpOwogCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHN1YmplY3QgPSBuZXdUZW1wb3JhcnkoKTsKICAgICBlbWl0Tm9kZShz
dWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJh
dG9yID0gaXNGb3JBd2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5v
ZGUpIDogZW1pdEdldEl0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihz
dWJqZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3Ioc3ViamVjdC5nZXQo
KSwgbm9kZSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJ
ZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsK
IAogICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAtNDEzMCw3ICs0MTMx
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICAgICAgfQogCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCks
IGl0ZXJhdG9yLmdldCgpLCBub2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0
QXdhaXQ6Ok5vKTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdl
dCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hvdWxkRW1pdEF3
YWl0KTsKIAogICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgp
KTsKICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQxNDMsNyArNDE0NCwxNDUgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
LCBFeHByZXNzaW8KICAgICAgICAgcG9wRmluYWxseUNvbnRyb2xGbG93U2NvcGUoKTsKICAgICAg
ICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7CiAgICAgICAgICAgICAvLyBJdGVyYXRvckNsb3Nl
IHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9sIGZsb3cuCi0gICAgICAgICAgICBlbWl0SXRl
cmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6
WWVzIDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xv
c2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIHNob3VsZEVtaXRBd2FpdCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKK30KKworCit2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUs
IEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JM
b29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQoreworICAgIGlmICghT3B0
aW9uczo6dXNlSXRlcmF0aW9uSW50cmluc2ljcygpIHx8IGlzMzJCaXQoKSB8fCAoZm9yTG9vcE5v
ZGUgJiYgZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQoKSkpIHsKKyAgICAgICAgZW1pdEdlbmVyaWNF
bnVtZXJhdGlvbihub2RlLCBzdWJqZWN0Tm9kZSwgY2FsbEJhY2ssIGZvckxvb3BOb2RlLCBmb3JM
b29wU3ltYm9sVGFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGl0ZXJhYmxlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5vZGUoaXRlcmFi
bGUuZ2V0KCksIHN1YmplY3ROb2RlKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRv
clN5bWJvbCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYWJsZS5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4
dE9ySW5kZXggPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0
b3IgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxw
dHIsIDApOworICAgIG1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUuZ2V0KCkpOwor
ICAgIGVtaXRJdGVyYXRvck9wZW4oaXRlcmF0b3IuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBp
dGVyYXRvclN5bWJvbC5nZXQoKSwgYXJncywgbm9kZSk7CisKKyAgICBSZWY8TGFiZWw+IGxvb3BE
b25lID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBuZXdMYWJl
bCgpOworICAgIFJlZjxMYWJlbD4gZmluYWxseVZpYVRocm93TGFiZWwgPSBuZXdMYWJlbCgpOwor
ICAgIFJlZjxMYWJlbD4gZmluYWxseUxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+
IGNhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gZW5kQ2F0Y2hMYWJlbCA9
IG5ld0xhYmVsKCk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICBlbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAv
LyBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IncyBsaWZldGltZSBtdXN0IGJlIGxvbmdlciB0
aGFuIEl0ZXJhdG9yQ2xvc2VDb250ZXh0LgorICAgIEZpbmFsbHlDb250ZXh0IGZpbmFsbHlDb250
ZXh0KCp0aGlzLCBmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgIHB1c2hGaW5hbGx5Q29udHJvbEZs
b3dTY29wZShmaW5hbGx5Q29udGV4dCk7CisKKyAgICB7CisgICAgICAgIFJlZjxMYWJlbFNjb3Bl
PiBzY29wZSA9IG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CisKKyAgICAgICAgUmVm
PExhYmVsPiBsb29wU3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0TGFiZWwobG9vcFN0
YXJ0LmdldCgpKTsKKyAgICAgICAgZW1pdExhYmVsKCpzY29wZS0+Y29udGludWVUYXJnZXQoKSk7
CisgICAgICAgIGVtaXRMb29wSGludCgpOworCisgICAgICAgIGlmIChmb3JMb29wTm9kZSkgewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9yTG9vcE5vZGUtPmlzRm9yT2ZOb2RlKCkpOwor
ICAgICAgICAgICAgcHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0aW9uKGZv
ckxvb3BOb2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOworICAgICAgICAgICAgZW1pdERlYnVnSG9v
ayhmb3JMb29wTm9kZS0+bGV4cHIoKSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZG9uZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgICAgICAg
ICBtb3ZlKG5leHRBcmdzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisKKyAgICAg
ICAgICAgIGVtaXRJdGVyYXRvck5leHQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGl0ZXJhYmxl
LmdldCgpLCBuZXh0T3JJbmRleC5nZXQoKSwgbmV4dEFyZ3MsIG5vZGUpOworICAgICAgICAgICAg
ZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgbG9vcERvbmUuZ2V0KCkpOworICAgICAgICB9CisK
KyAgICAgICAgZW1pdExhYmVsKHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOworICAgICAgICBUcnlEYXRh
KiB0cnlEYXRhID0gcHVzaFRyeSh0cnlTdGFydExhYmVsLmdldCgpLCBmaW5hbGx5VmlhVGhyb3dM
YWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkRmluYWxseSk7CisgICAgICAgIGNh
bGxCYWNrKCp0aGlzLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5n
ZXQoKSk7CisKKyAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYWJydXB0IGNv
bXBsZXRpb25zLgorICAgICAgICB7CisgICAgICAgICAgICAvLyBGaW5hbGx5IGJsb2NrIGZvciB0
aGUgZW51bWVyYXRpb24uCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseVZpYVRocm93TGFi
ZWwuZ2V0KCkpOworICAgICAgICAgICAgcG9wVHJ5KHRyeURhdGEsIGZpbmFsbHlWaWFUaHJvd0xh
YmVsLmdldCgpKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiBmaW5hbGx5Qm9keUxhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0
aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKKworICAgICAgICAgICAgZW1pdE91dE9mTGlu
ZUZpbmFsbHlIYW5kbGVyKGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCks
IGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgdHJ5RGF0YSk7CisgICAg
ICAgICAgICBtb3ZlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRl
eHQuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBlbWl0SnVtcChmaW5h
bGx5Qm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlMYWJl
bC5nZXQoKSk7CisgICAgICAgICAgICBtb3ZlRW1wdHlWYWx1ZShmaW5hbGx5RXhjZXB0aW9uUmVn
aXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBGaW5hbGx5IGZhbGwgdGhyb3VnaCBjYXNl
LgorICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworICAgICAg
ICAgICAgcmVzdG9yZVNjb3BlUmVnaXN0ZXIoKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiBm
aW5hbGx5RG9uZSA9IG5ld0xhYmVsKCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICAgICAgICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgp
KSwgZmluYWxseURvbmUuZ2V0KCkpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVybkNh
bGxUcnlTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuQ2Fs
bFRyeVN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIFRyeURhdGEqIHJldHVybkNhbGxUcnlEYXRh
ID0gcHVzaFRyeShyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCksIGNhdGNoTGFiZWwuZ2V0KCksIEhh
bmRsZXJUeXBlOjpTeW50aGVzaXplZENhdGNoKTsKKworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAgbW92ZShyZXR1
cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAg
IGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgICAgIGVt
aXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBm
aW5hbGx5RG9uZS5nZXQoKSk7CisgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJh
dG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworCisgICAgICAgICAg
ICBlbWl0TGFiZWwoZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAgICAgZW1pdEZpbmFsbHlD
b21wbGV0aW9uKGZpbmFsbHlDb250ZXh0LCBlbmRDYXRjaExhYmVsLmdldCgpKTsKKworICAgICAg
ICAgICAgcG9wVHJ5KHJldHVybkNhbGxUcnlEYXRhLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAg
ICAgICAgICAgIC8vIENhdGNoIGJsb2NrIGZvciBleGNlcHRpb25zIHRoYXQgbWF5IGJlIHRocm93
biB3aGlsZSBjYWxsaW5nIHRoZSByZXR1cm4KKyAgICAgICAgICAgIC8vIGhhbmRsZXIgaW4gdGhl
IGVudW1lcmF0aW9uIGZpbmFsbHkgYmxvY2suIFRoZSBvbmx5IHJlYXNvbiB3ZSBuZWVkIHRoaXMK
KyAgICAgICAgICAgIC8vIGNhdGNoIGJsb2NrIGlzIGJlY2F1c2UgaWYgZW50ZXJlZCB0aGUgYWJv
dmUgZmluYWxseSBibG9jayBkdWUgdG8gYSB0aHJvd24KKyAgICAgICAgICAgIC8vIGV4Y2VwdGlv
biwgdGhlbiB3ZSB3YW50IHRvIHJlLXRocm93IHRoZSBvcmlnaW5hbCBleGNlcHRpb24gb24gZXhp
dGluZworICAgICAgICAgICAgLy8gdGhlIGZpbmFsbHkgYmxvY2suIE90aGVyd2lzZSwgd2UnbGwg
bGV0IGFueSBuZXcgZXhjZXB0aW9uIHBhc3MgdGhyb3VnaC4KKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBlbWl0TGFiZWwoY2F0Y2hMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZXhjZXB0aW9uUmVn
aXN0ZXIuZ2V0KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgcmV0
dXJuQ2FsbFRyeURhdGEpOworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBzeW50
aGVzaXplZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBuZWVkCisg
ICAgICAgICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBzY29wZSwg
d2UgY2FuIHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQorICAgICAgICAgICAgICAgIC8vIHJlZ2lz
dGVyIGhlcmUuCisKKyAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdM
YWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc0VtcHR5KG5ld1Rl
bXBvcmFyeSgpLCBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpLCB0aHJvd0xhYmVsLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBtb3ZlKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5h
bGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdExhYmVs
KHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRUaHJvdyhleGNlcHRpb25S
ZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwoZW5kQ2F0Y2hMYWJl
bC5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBib29sIGJyZWFr
TGFiZWxJc0JvdW5kID0gc2NvcGUtPmJyZWFrVGFyZ2V0TWF5QmVCb3VuZCgpOworICAgICAgICBp
ZiAoYnJlYWtMYWJlbElzQm91bmQpCisgICAgICAgICAgICBlbWl0TGFiZWwoc2NvcGUtPmJyZWFr
VGFyZ2V0KCkpOworICAgICAgICBwb3BGaW5hbGx5Q29udHJvbEZsb3dTY29wZSgpOworICAgICAg
ICBpZiAoYnJlYWtMYWJlbElzQm91bmQpIHsKKyAgICAgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ug
c2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4KKyAgICAgICAgICAgIGVtaXRJdGVy
YXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgRW1pdEF3YWl0OjpObyk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKQEAgLTQyNjUs
NTYgKzQ0MDQsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzRW1wdHko
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgT3BJc0VtcHR5OjplbWl0KHRo
aXMsIGRzdCwgc3JjKTsKICAgICByZXR1cm4gZHN0OwogfQotICAgIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICB7Ci0gICAg
ICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgICAg
IG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBl
bWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50
cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBE
ZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotCi0gICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdh
aXQ6OlllcykKLSAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOwotICAgIH0KLSAgICB7Ci0gICAg
ICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKLSAgICAgICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3Qu
Z2V0KCkpOwotICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwotICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2Jq
ZWN0LmdldCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJ
RCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQotewotICAgIHsK
LSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsK
LSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0g
ICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7Ci0g
ICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0
QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90
RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRzdDsKLX0K
LQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQg
ZG9FbWl0QXdhaXQpCi17Ci0gICAgUmVmPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7Ci0gICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0
KCkpLCBkb25lLmdldCgpKTsKLQotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1Rl
bXBvcmFyeSgpOwotICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyKTsKLSAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Ip
OwotICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0
YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICBpZiAo
ZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgIGVtaXRBd2FpdCh2YWx1ZS5n
ZXQoKSk7Ci0KLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCks
IHZhbHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0gICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVy
YXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKLSAgICBlbWl0TGFi
ZWwoZG9uZS5nZXQoKSk7Ci19CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hJbmRleGVk
Rm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJl
Z2lzdGVyKQogewpAQCAtNDU1NSw3ICs0NjQ0LDM1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRBd2FpdChSZWdpc3RlcklEKiB2YWx1ZSkKICAgICBtb3ZlKHZhbHVlLCBnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKCkpOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4oUmVnaXN0
ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1i
b2xJdGVyYXRvciwgQ2FsbEFyZ3VtZW50cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlKQoreworICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUu
CisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsgKytpKQorICAgICAg
ICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFyeSgpKTsKKworICAgIGlmIChzaG91bGRFbWl0
RGVidWdIb29rcygpKQorICAgICAgICBlbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlRXhwcmVzc2lv
biwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhub2RlLT5k
aXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIE9wSXRl
cmF0b3JPcGVuOjplbWl0KHRoaXMsIGl0ZXJhdG9yLCBuZXh0T3JJbmRleCwgc3ltYm9sSXRlcmF0
b3IsIGl0ZXJhYmxlLnRoaXNSZWdpc3RlcigpLCBpdGVyYWJsZS5zdGFja09mZnNldCgpKTsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBk
b25lLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQq
IG5leHRPckluZGV4LCBDYWxsQXJndW1lbnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFt
ZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNpemVJ
blJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyArK2kpCisgICAg
ICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOworCisgICAgaWYgKHNob3VsZEVt
aXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHByZXNz
aW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKG5vZGUt
PmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgT3BJ
dGVyYXRvck5leHQ6OmVtaXQodGhpcywgZG9uZSwgdmFsdWUsIGl0ZXJhYmxlLCBuZXh0T3JJbmRl
eCwgaXRlcmF0b3IudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLnN0YWNrT2Zmc2V0KCkpOworfQor
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcihS
ZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGVtaXRD
YWxsSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCksIGFyZ3VtZW50LCBub2RlKTsKQEAgLTQ1NjMsNiAr
NDY4MCw1NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEl0ZXJhdG9y
KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeAogICAgIHJldHVybiBpdGVyYXRvci5n
ZXQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdl
bmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0
ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0
QXdhaXQgZG9FbWl0QXdhaXQpCit7CisgICAgeworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRB
cmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9k
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUt
PmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKwor
ICAgICAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCisgICAgICAgICAgICBl
bWl0QXdhaXQoZHN0KTsKKyAgICB9CisgICAgeworICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09i
amVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChu
ZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1pdFRo
cm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3Qu
Il9zKTsKKyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAg
IHJldHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5l
eHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAgICBDYWxsQXJn
dW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICBtb3ZlKG5l
eHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgbW92ZShuZXh0
QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgZW1pdENhbGwo
ZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUt
PmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJs
ZUNhbGw6Ok5vKTsKKyAgICB9CisKKyAgICByZXR1cm4gZHN0OworfQorCit2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3Is
IGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdh
aXQpCit7CisgICAgUmVmPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJh
dG9yLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgZW1pdEp1bXBJZlRydWUo
ZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBkb25l
LmdldCgpKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgp
OworICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAg
ICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAgIGVt
aXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5v
ZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICBpZiAoZG9FbWl0QXdh
aXQgPT0gRW1pdEF3YWl0OjpZZXMpCisgICAgICAgIGVtaXRBd2FpdCh2YWx1ZS5nZXQoKSk7CisK
KyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdl
dCgpKSwgZG9uZS5nZXQoKSk7CisgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICBlbWl0TGFiZWwoZG9uZS5n
ZXQoKSk7Cit9CisKKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5hc3luY0l0ZXJhdG9yU3lt
Ym9sKTsKQEAgLTQ1NzUsNyArNDc0Myw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhCiAgICAg
ZW1pdEp1bXAoYXN5bmNJdGVyYXRvckZvdW5kLmdldCgpKTsKICAgICBlbWl0TGFiZWwoYXN5bmNJ
dGVyYXRvck5vdEZvdW5kLmdldCgpKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25J
dGVyYXRvciA9IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1bWVu
dCwgbm9kZSk7CiAgICAgbW92ZShpdGVyYXRvci5nZXQoKSwgY29tbW9uSXRlcmF0b3IuZ2V0KCkp
OwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdU
ZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKQEAgLTQ2
MDQsNyArNDc3Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdh
dGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiB7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgewotICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jR2VuZXJhdG9yQm9keU1vZGUgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihhcmd1bWVudCwgbm9k
ZSkgOiBlbWl0R2V0SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXRlcmF0b3IgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yQm9keU1vZGUgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihhcmd1bWVudCwgbm9kZSkg
OiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRl
cmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAogICAgICAgICBSZWY8TGFiZWw+
IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKQEAgLTQ2NDIsNyArNDgxMCw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVu
dCwgVGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0SXNV
bmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2RG
b3VuZC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgRW1pdEF3YWl0IGVtaXRBd2FpdElu
SXRlcmF0b3JDbG9zZSA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5l
cmF0b3JCb2R5TW9kZSA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObzsKLSAgICAgICAg
ICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGVtaXRB
d2FpdEluSXRlcmF0b3JDbG9zZSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckdl
bmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3Nl
KTsKIAogICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkRlbGVnYXRlZCBn
ZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJvdycgbWV0aG9kLiJfcyk7CiAKQEAgLTQ3MDMs
NyArNDg3MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICBlbWl0
SXRlcmF0b3JOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVy
YXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgZW1pdEl0ZXJhdG9y
R2VuZXJpY05leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJh
dG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7CiAKICAgICAgICAgICAgIGVtaXRMYWJlbChi
cmFuY2hPblJlc3VsdC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkNTM0Y2Q4MjhhYWMzZDE0
MGI0ZjQ2Yzg2ODc2ODA5MTRlMGRlMzI1Li42YjcwOGU5NmFiMTQ2MGRhNmEwYWUwY2I5NTM2OGE3
OWRjZjhlZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC04MjgsNiArODI4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdP
YmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAogICAgICAgICAgICAgUmVnaXN0
ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlv
biYpOwogCisgICAgICAgIHZvaWQgZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCop
PiYgY2FsbEJhY2ssIEZvck9mTm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3lt
Ym9sVGFibGUgPSBudWxscHRyKTsKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRpb24oVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1Ympl
Y3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9y
TG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdl
dFRlbXBsYXRlT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgVGFnZ2VkVGVtcGxhdGVOb2RlKik7CkBA
IC04OTgsOSArODk5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SXNEZXJpdmVkQXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgRGVyaXZlZEFycmF5VHlwZSk7IH0KICAg
ICAgICAgdm9pZCBlbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBlcnJvcik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9y
TmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0
QXdhaXQgPSBKU0M6OkVtaXRBd2FpdDo6Tm8pOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRl
cmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhv
ZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSk7Ci0gICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2Uo
UmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
LCBFbWl0QXdhaXQgPSBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JP
cGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgUmVnaXN0
ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBjb25zdCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvck5leHQoUmVn
aXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0ZXJhYmxlLCBS
ZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYgaXRlcmF0b3IsIGNvbnN0IFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEdl
bmVyaWNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKik7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9y
R2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdp
c3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEpT
Qzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUs
IGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgdm9pZCBlbWl0
SXRlcmF0b3JHZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgPSBFbWl0QXdhaXQ6Ok5vKTsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVu
c2lnbmVkIG51bVBhcmFtZXRlcnNUb1NraXApOwogCkBAIC05NTAsOSArOTU3LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFB1c2hDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJv
bm1lbnQmKTsKICAgICAgICAgdm9pZCBlbWl0UG9wQ2F0Y2hTY29wZShWYXJpYWJsZUVudmlyb25t
ZW50Jik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEl0ZXJhdG9yKFJlZ2lzdGVySUQq
LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLQog
ICAgICAgICB2b2lkIGVtaXRBd2FpdChSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdEdl
dFNjb3BlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVy
SUQqIG9iamVjdFNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkNGZkYjRkZDU0ZDQ5MmY5MGQyZDcyMWZkN2Rh
YzEyZmY3ZDJmODUwLi4yYjE1Y2FhNDcxM2E4ODU2NWM0Y2QwOTUyNmY5MGMyNDVmNjNhMDBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC00NTcyLDcgKzQ1NzIsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS5uZXh0KTsKIAogICAgIGlmIChtX3RhcmdldFBhdHRlcm5zLmlzRW1wdHkoKSkgewot
ICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdl
dCgpLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDU4OCw3ICs0NTg4LDcg
QEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKIAogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5l
eHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQo
KSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRv
bmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0
ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1
ZSk7CkBAIC00NjI0LDcgKzQ2MjQsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CiAKICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0
aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0
ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChk
b25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRp
b25Eb25lLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5n
ZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAt
NDY0Miw3ICs0NjQyLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogCiAgICAgUmVmPExhYmVs
PiBpdGVyYXRvckNsb3NlZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRvckNsb3NlZC5nZXQoKSk7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICBnZW5l
cmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCmluZGV4IDBhNGExMWY5YjQwZTZiMTNjNTk2NDIyOGU0MTEyODlmMWQ5ZWU4NjYu
LjE4ZGFlMDA0YzcyMmNkNmZkY2Y4OTEyYmM1YzQyMTNhNDMxYjI0MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTQzOTgsMTAgKzQzOTgsOCBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMoCiAgICAgICAgICAgICAgICAgZnVuY3Rvcihm
b3JOb2RlKG5vZGUpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9z
dGF0ZS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUu
YXJndW1lbnQoaSkpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mTG9jYWxz
KCk7IGktLTspCi0gICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5sb2NhbChpKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IG1fc3RhdGUuc2l6ZSgpOyBpLS07KQorICAgICAgICBmdW5jdG9yKG1fc3RhdGUu
YXRJbmRleChpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0
YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUu
aAppbmRleCA4OTdjNzBkZmZiYTA2NmI2NDljYWZkY2MxZWYwOTMzNzY4MTA0ZDEzLi40MzhlMTZk
ZTg1OTU5MjU0ZDk1NTcyMWI2ZjA4ZGI5NTgxNGZkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaApAQCAtMTM3LDExICsxMzcs
MTUgQEAgcHVibGljOgogICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUoZWRnZS5ub2RlKCkpOwog
ICAgIH0KICAgICAKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+
dmFsdWVzQXRUYWlsLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCk7
IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2st
PnZhbHVlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZU
bXBzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1wcygp
OyB9CisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1f
YmxvY2stPnZhbHVlc0F0VGFpbC5hdChpbmRleCk7IH0KICAgICBBYnN0cmFjdFZhbHVlJiBvcGVy
YW5kKE9wZXJhbmQgb3BlcmFuZCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm9wZXJh
bmQob3BlcmFuZCk7IH0KICAgICBBYnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpIHsg
cmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpbmRleCk7IH0KICAgICBBYnN0cmFj
dFZhbHVlJiBhcmd1bWVudChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0
VGFpbC5hcmd1bWVudChpbmRleCk7IH0KKyAgICBBYnN0cmFjdFZhbHVlJiB0bXAoc2l6ZV90IGlu
ZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwudG1wKGluZGV4KTsgfQogICAgIAog
ICAgIHZvaWQgY2xvYmJlclN0cnVjdHVyZXMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDk5N2JhYjA1MjUyNjRlNmYx
NjQ4NTQyNDJkOTRjZTNiNTdlMzZkYy4uY2QyNjQyZTk1NGVlZjhmZjZiMWQ2Mjg2NzFmM2YzZjFl
OGQzNTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNp
bmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2lu
Y2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgi
CiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxs
TGlua1N0YXR1cy5oIgpAQCAtMTU3LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIZWxw
ZXIgZm9yIG1pbiBhbmQgbWF4LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
Ci0gICAgYm9vbCBoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUg
b3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlTWluTWF4
KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cyk7CiAgICAgCiAgICAgdm9pZCByZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiwgTm9k
ZSogY2FsbFRhcmdldCk7CiAgICAgLy8gQmxvY2tzIGNhbiBlaXRoZXIgYmUgdGFyZ2V0YWJsZSAo
aS5lLiBpbiB0aGUgbV9ibG9ja0xpbmtpbmdUYXJnZXRzIG9mIG9uZSBJbmxpbmVTdGFja0VudHJ5
KSB3aXRoIGEgd2VsbC1kZWZpbmVkIGJ5dGVjb2RlQmVnaW4sCkBAIC0xNzQsNyArMTc1LDcgQEAg
cHJpdmF0ZToKICAgICAvLyBIYW5kbGUgY2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJv
dW5kaW5nIGlubGluaW5nIGFuZCBpbnRyaW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBU
ZXJtaW5hbCwgTm9uVGVybWluYWwgfTsKICAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKAotICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0
LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlv
blNpemUsCiAgICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cywKICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpA
QCAtMTg4LDI3ICsxODksMjcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVJlY3Vyc2l2ZVRh
aWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGVtaXRGdW5jdGlvbkNoZWNrSWZOZWVkZWQpOwogICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChD
YWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2Fu
ZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAg
Ly8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlm
IHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5n
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxs
TGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1
bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVu
dHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBi
b29sIGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCBy
ZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFs
UmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQs
IHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQpOwogICAgIHVuc2lnbmVkIGdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlu
a1N0YXR1cyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGVudW0gY2xhc3MgQ2FsbE9w
dGltaXphdGlvblJlc3VsdCB7IE9wdGltaXplZFRvSnVtcCwgSW5saW5lZCwgRGlkTm90aGluZyB9
OwotICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFt
ZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFs
YW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2Fs
bGVlKTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1
cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9k
ZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFu
Y2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxl
ZSk7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxs
T3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICB2b2lkIGlubGluZUNhbGwo
Tm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6
S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVy
biB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5z
aWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQg
cmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
Ci0gICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZURPTUpJ
VENhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFu
ZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2Rl
KiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29s
IGhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRo
aXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3Ry
dWN0b3IoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlw
ZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZVR5
cGVkQXJyYXlDb25zdHJ1Y3RvcihPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFy
cmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5h
bEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJ
bnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50
ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNl
dChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSog
dmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2Rl
KiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5
cGUgPSBHZXRCeU9mZnNldCk7Ci0gICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAg
Ym9vbCBoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJp
YW50JiwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlT
dGF0dXMpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CkBAIC0zMTgsMTUgKzMx
OSwxNSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZ2V0TG9jYWxPclRtcChvcGVyYW5kKTsK
ICAgICB9CiAKLSAgICBOb2RlKiBnZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgTm9k
ZSogZ2V0KE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChvcGVyYW5kLmlzQ29u
c3RhbnQoKSkgewotICAgICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9IG9wZXJhbmQu
dG9Db25zdGFudEluZGV4KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0g
b3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAg
IHVuc2lnbmVkIG9sZFNpemUgPSBtX2NvbnN0YW50cy5zaXplKCk7CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25z
dGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENvbnN0YW50KG9wZXJhbmQudmlydHVhbFJlZ2lz
dGVyKCkpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VD
b2RlUmVwcmVzZW50YXRpb24gPSBjb2RlQmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24ob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNv
bnN0YW50SW5kZXggPj0gb2xkU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2NvbnN0YW50
cy5ncm93KGNvbnN0YW50SW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gb2xkU2l6ZTsgaSA8IG1fY29uc3RhbnRzLnNpemUoKTsgKytpKQpAQCAtMzQ3LDEw
ICszNDgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSgpLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAg
ICAgICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxl
ZUNvbnN0YW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlKQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kID09IFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gd2Vha0pTQ29uc3RhbnQoY2FsbGVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChvcGVyYW5kLm9mZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgeworICAg
ICAgICB9IGVsc2UgaWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gc29tZSBjb25zdGFudC1m
b2xkaW5nIGhlcmUgYmVjYXVzZSB0aGlzIGVuYWJsZXMgQ3JlYXRlVGhpcyBmb2xkaW5nLiBOb3Rl
CiAgICAgICAgICAgICAvLyB0aGF0IHdlIGRvbid0IGhhdmUgc3VjaCB3YXRjaHBvaW50LWJhc2Vk
IGZvbGRpbmcgZm9yIGlubGluZWQgdXNlcyBvZiBDYWxsZWUsIHNpbmNlIGluIHRoYXQKICAgICAg
ICAgICAgIC8vIGNhc2UgaWYgdGhlIGZ1bmN0aW9uIGlzIGEgc2luZ2xldG9uIHRoZW4gd2UgYWxy
ZWFkeSBrbm93IGl0LgpAQCAtNDEwLDcgKzQxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0
TG9jYWxRdWV1ZS5zaHJpbmsoMCk7CiAgICAgfQogCi0gICAgTm9kZSogc2V0KFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQor
ICAgIE5vZGUqIHNldChPcGVyYW5kIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1v
ZGUgPSBOb3JtYWxTZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0RGlyZWN0KG1faW5saW5l
U3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKSwgdmFsdWUsIHNldE1vZGUpOwogICAgIH0K
QEAgLTY5MSwxNSArNjkyLDIwIEBAIHByaXZhdGU6CiAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKICAgICB9CiAKKyAgICBOb2RlKiBqc0NvbnN0YW50KEZyb3plblZhbHVlKiBjb25zdGFudFZh
bHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZv
KGNvbnN0YW50VmFsdWUpKTsKKyAgICB9CisKICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIGNvbnN0
YW50IHNob3VsZCBiZSBzdHJvbmdseSBtYXJrZWQuCiAgICAgTm9kZSoganNDb25zdGFudChKU1Zh
bHVlIGNvbnN0YW50VmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0Nv
bnN0YW50LCBPcEluZm8obV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpKTsKKyAg
ICAgICAgcmV0dXJuIGpzQ29uc3RhbnQobV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1
ZSkpOwogICAgIH0KIAogICAgIE5vZGUqIHdlYWtKU0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRW
YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5m
byhtX2dyYXBoLmZyZWV6ZShjb25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25z
dGFudChtX2dyYXBoLmZyZWV6ZShjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gSGVs
cGVyIGZ1bmN0aW9ucyB0byBnZXQvc2V0IHRoZSB0aGlzIHZhbHVlLgpAQCAtODUwLDcgKzg1Niw3
IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBj
YWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBPcGVyYW5k
IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pCiAgICAgewogICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKQEAgLTk1OSw3ICs5
NjUsMzcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRQcmVkaWN0aW9uKG1f
Y3VycmVudEluZGV4KTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBx
dWl0ZSBhIHRydWUgYm90dG9tIHZhbHVlIGZvciBleGFtcGxlIGFueSBvYmplY3Qgc3BlY3VsYXRp
b24gd2lsbCBub3cgYmUgT2JqZWN0fE90aGVyIGFzIHRoaXMgcmV0dXJucyBudWxsLgorICAgIC8v
IFdlIHNob3VsZCBmaXggdGhpcyB3aGVuIHdlIGNhbiBhbGxvY2F0ZSBvbiB0aGUgQ29tcGlsZXIg
dGhyZWFkLgorICAgIEZyb3plblZhbHVlKiBib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgc3BlYykKKyAgICB7CisgICAgICAgIC8vIEl0IHByb2JhYmx5IGRvZXNu
J3QgbWF0dGVyIHdoYXQgd2UgcmV0dXJuIGhlcmUuCisgICAgICAgIGlmIChzcGVjID09IFNwZWNO
b25lKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoKSk7CisKKyAg
ICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY090aGVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1
bGF0aW9uQ29udGFpbnMoc3BlYywgU3BlY0Jvb2xlYW4pKQorICAgICAgICAgICAgcmV0dXJuIG1f
Z3JhcGguZnJlZXplKGpzQm9vbGVhbih0cnVlKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9u
Q29udGFpbnMoc3BlYywgU3BlY0Z1bGxOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3Jh
cGguZnJlZXplKGpzTnVtYmVyKDApKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlu
cyhzcGVjLCBTcGVjQmlnSW50KSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZSht
X3ZtLT5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9u
Q29udGFpbnMoc3BlYywgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpKQorICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKKwor
ICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjQ2VsbE90aGVyIHwgU3Bl
Y09iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOwor
CisgICAgICAgIEFTU0VSVChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNFbXB0eSkpOwor
ICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoSlNWYWx1ZSgpKTsKKyAgICB9CisKICAgICBB
cnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5OjpBY3Rpb24gYWN0aW9uKQogICAgIHsKICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2s7CkBAIC0xMTc0LDcgKzEyMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBPcHRpb25hbDog
YSBjb250aW51YXRpb24gYmxvY2sgZm9yIHJldHVybnMgdG8ganVtcCB0by4gSXQgaXMgc2V0IGJ5
IGVhcmx5IHJldHVybnMgaWYgaXQgZG9lcyBub3QgZXhpc3QuCiAgICAgICAgIEJhc2ljQmxvY2sq
IG1fY29udGludWF0aW9uQmxvY2s7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fcmV0dXJu
VmFsdWU7CisgICAgICAgIE9wZXJhbmQgbV9yZXR1cm5WYWx1ZTsKICAgICAgICAgCiAgICAgICAg
IC8vIFNwZWN1bGF0aW9ucyBhYm91dCB2YXJpYWJsZSB0eXBlcyBjb2xsZWN0ZWQgZnJvbSB0aGUg
cHJvZmlsZWQgY29kZSBibG9jaywKICAgICAgICAgLy8gd2hpY2ggYXJlIGJhc2VkIG9uIE9TUiBl
eGl0IHByb2ZpbGVzIHRoYXQgcGFzdCBERkcgY29tcGlsYXRpb25zIG9mIHRoaXMKQEAgLTExOTQs
NyArMTIzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBDb2RlQmxvY2sqLAogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAgICAgICAgICAgSlNGdW5jdGlvbiogY2Fs
bGVlLCAvLyBOdWxsIGlmIHRoaXMgaXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICAgICAgICAgIE9wZXJhbmQgcmV0dXJuVmFs
dWUsCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAg
ICAgICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQsCkBAIC0xMjY5LDYgKzEzMDUsNyBAQCBCYXNpY0Jsb2NrKiBC
eXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpCiAgICAgUmVmPEJhc2lj
QmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKEJ5dGVjb2RlSW5kZXgoKSwg
bV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBtX251bVRtcHMsIDEpKTsKICAgICBCYXNpY0Js
b2NrKiBibG9ja1B0ciA9IGJsb2NrLnB0cigpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RG
TW92ZShibG9jaykpOworICAgIFZFUkJPU0VfTE9HKCJBZGRpbmcgbmV3IHVudGFyZ2V0YWJsZSBi
bG9jazogIiwgYmxvY2tQdHItPmluZGV4LCAiXG4iKTsKICAgICByZXR1cm4gYmxvY2tQdHI7CiB9
CiAKQEAgLTEzMDEsOCArMTMzOCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KIEJ5dGVD
b2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPENhbGxPcD4oKTsKLSAgICBOb2RlKiBjYWxsVGFyZ2V0ID0g
Z2V0KGJ5dGVjb2RlLm1fY2FsbGVlKTsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGlj
X2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOworICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQo
Y2FsbGVlRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKKyAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihzdGFja09mZnNldEluUmVnaXN0
ZXJzRm9yQ2FsbChieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7CiAKICAg
ICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRD
b2RlT3JpZ2luKCksCkBAIC0xMzEwLDggKzEzNDcsOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWlu
YWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBO
bwogCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6Omtp
bmRGb3IoY2FsbE1vZGUpOwogCi0gICAgcmV0dXJuIGhhbmRsZUNhbGwoYnl0ZWNvZGUubV9kc3Qs
IG9wLCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAotICAgICAgICBieXRlY29kZS5tX2Fy
Z2MsIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKKyAg
ICByZXR1cm4gaGFuZGxlQ2FsbChkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9jdXJyZW50SW5k
ZXguY2hlY2twb2ludCgpLCBKSVRUeXBlOjpERkdKSVQpLCBvcCwga2luZCwgcGMtPnNpemUoKSwg
Y2FsbFRhcmdldCwKKyAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNv
ZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSksIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlu
a1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVm
aW5lU3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxU
YXJnZXQpCkBAIC0xMzIxLDcgKzEzNTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVT
dGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbAogfQog
CiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwo
Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFt
ZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgT3BlcmFuZCByZXN1
bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25TaXplLAogICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxM
aW5rU3RhdHVzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewpAQCAtMTYzNyw3ICsxNjc0
LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBj
YWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tzRnVuY3Rvcj4KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNh
bGxGcmFtZTo6S2luZCBraW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNh
bGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9j
aywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGNvbnN0IEluc3Ry
dWN0aW9uKiBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY3VycmVudEluc3RydWN0aW9uOwog
ICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2Fs
bEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CkBAIC0xNjcxLDcgKzE3MDgsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3Rh
cnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgaWYgKHJlc3Vs
dC5pc1ZhbGlkKCkpCi0gICAgICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChyZXN1bHQpLnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICByZXN1bHQgPSBtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0KTsKIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogY2FsbGVlVmFyaWFibGUgPSBudWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2Fs
bCgpKSB7CkBAIC0xODIzLDcgKzE4NjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAg
IG1fY3VycmVudEluc3RydWN0aW9uID0gc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb247CiB9CiAKLUJ5
dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3Rl
ciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJ
bmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpCitCeXRlQ29kZVBhcnNlcjo6
Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQo
Tm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUs
IGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVk
JiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5l
ZWRzVG9DaGVja0NhbGxlZSkKIHsKICAgICBWRVJCT1NFX0xPRygiICAgIENvbnNpZGVyaW5nIGNh
bGxlZSAiLCBjYWxsZWUsICJcbiIpOwogCkBAIC0xOTAwLDcgKzE5MzcsNyBAQCBCeXRlQ29kZVBh
cnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZh
cmlhbnQoTm9kZSogYwogICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVk
OwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCitib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQg
cmVzdWx0LAogICAgIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IGZp
cnN0RnJlZVJlZywgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwKICAgICBO
b2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQpAQCAtMjA0NCw3ICsy
MDgxLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmdldElubGluaW5nQmFsYW5jZShjb25z
dCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMKIH0KIAogQnl0ZUNvZGVQYXJzZXI6OkNh
bGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAotICAg
IE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxs
TGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsCisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9w
ZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsCiAgICAg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICBCeXRlY29kZUluZGV4IG5leHRJbmRl
eCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbikKQEAgLTIyMjAsNyArMjI1Nyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpD
YWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZU1pbk1heChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1h
eChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpCiB7CiAgICAgQVNTRVJUKG9wID09IEFyaXRoTWluIHx8IG9wID09IEFyaXRoTWF4KTsKIApA
QCAtMjI1MCw3ICsyMjg3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXMKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5z
aWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAg
IFZFUkJPU0VfTE9HKCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIp
OwogCkBAIC0yMzg5LDI3ICsyNDI2LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAg
ICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIGluc2VydENoZWNr
cygpOwogCi0gICAgICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQ7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGludHJpbnNpYykgewotICAgICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzoK
LSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAg
ICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6VmFsdWVzOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBBcnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNl
IFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRp
b25LaW5kOjpLZXlzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBB
cnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVz
SW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpFbnRyaWVz
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4g
a2luZCA9IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKGludHJpbnNpYyk7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghIWtpbmQpOwogCiAgICAgICAgICAgICAvLyBBZGQgdGhlIGNvbnN0
YW50IGJlZm9yZSBleGl0IGJlY29tZXMgaW52YWxpZCBiZWNhdXNlIHdlIG1heSB3YW50IHRvIGlu
c2VydCAocmVkdW5kYW50KSBjaGVja3Mgb24gaXQgaW4gRml4dXAuCi0gICAgICAgICAgICBOb2Rl
KiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtp
bmQpKSk7CisgICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpraW5kKSkpOwogCiAgICAgICAgICAgICAvLyBXZSBkb24n
dCBoYXZlIGFuIGV4aXN0aW5nIGVycm9yIHN0cmluZy4KICAgICAgICAgICAgIHVuc2lnbmVkIGVy
cm9yU3RyaW5nSW5kZXggPSBVSU5UMzJfTUFYOwpAQCAtMzY0Nyw3ICszNjY4LDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIEkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
LWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdl
dCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7
CiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4o
MSArIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTM2NjYsNyArMzY4Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwo
Tm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKIAogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmlu
c2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CkBAIC0z
NzgwLDcgKzM4MDEsNyBAQCBzdGF0aWMgdm9pZCBibGVzc0NhbGxET01HZXR0ZXIoTm9kZSogbm9k
ZSkKICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKIH0KIAotYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewogICAgIGlmICghdmFyaWFudC5k
b21BdHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzg1OSw3ICszODgwLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUgdHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQogewogICAgIGlmICghaXNUeXBlZFZpZXcodHlwZSkpCkBAIC0zOTE2LDcgKzM5
MzcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3Io
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCi0gICAgTm9kZSogY2FsbFRhcmdldE5v
ZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVz
dWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAg
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICBIYW5kbGluZyBjb25zdGFudCBpbnRl
cm5hbCBmdW5jdGlvbiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIlxuIik7CkBAIC02NjA0LDIwICs2
NjI1LDQyNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAg
ICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6IHsKICAgICAgICAgICAgIGhhbmRsZVZhcmFy
Z3NDYWxsPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3RW
YXJhcmdzLCBDYWxsTW9kZTo6Q29uc3RydWN0KTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxl
VmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBt
X2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29uc3Ry
dWN0X3ZhcmFyZ3MpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIG9w
X2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9
IC1ieXRlY29kZS5tX2FyZ3Y7CiAgICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBD
YWxsRXZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9jYWxs
ZWUpLCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQotICAgICAg
ICAgICAgCisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsK
KyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9u
TWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFp
bmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJU
KG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAg
ICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBCYXNpY0Js
b2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9jayogY29u
dGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICBC
eXRlY29kZUluZGV4IHN0YXJ0SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAg
Tm9kZSogc3ltYm9sSXRlcmF0b3IgPSBnZXREaXJlY3QoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRv
cik7CisgICAgICAgICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
ID0gZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisK
KyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYg
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAg
ICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdl
IG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2lu
dHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAg
ICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9
IG1fZ3JhcGguZnJlZXplKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRv
ckZ1bmN0aW9uKCkpOworICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlJlbWFpbmluZ01vZGVz
ID09IDEpCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8o
ZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZmFzdEFycmF5
QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgICAg
IGdlbmVyaWNCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBrbm93bkl0ZXJGdW5jdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVx
UHRyLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgoSXNDZWxs
V2l0aFR5cGUsIE9wSW5mbyhBcnJheVR5cGUpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOwor
CisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1f
YnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4g
PSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFu
Y2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChnZW5lcmljQmxvY2spOworCisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGFuZFJlc3VsdCA9IGFkZFRvR3JhcGgoQXJpdGhCaXRBbmQsIGlz
QXJyYXksIGtub3duSXRlckZ1bmN0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBXZSBr
bm93IHRoZSBiaXQgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMgc28gaXQncyBvayB0byBleGl0IGhl
cmUuCisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFuZFJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKworICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jayA9IGZhc3RBcnJheUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hl
cygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRoZSBicmFuY2gg
YWJvdmUgbWF5IGhhdmUgbWFkZSBleGl0IGludmFsaWQgYnV0IGl0J3MgYWN0dWFsbHkgb2suCisg
ICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQo
anNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbktpbmQ6OlZhbHVlcykpKTsK
KyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGFkZFRvR3JhcGgoTmV3QXJyYXlJdGVy
YXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJh
eUl0ZXJhdG9yU3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJ
bnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRv
cjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBnZXQoYnl0ZWNvZGUubV9pdGVy
YWJsZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJ
bmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSks
IGl0ZXJhdG9yLCBraW5kTm9kZSk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1faXRl
cmF0b3IsIGl0ZXJhdG9yKTsKKworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX25leHQs
IGpzQ29uc3RhbnQoSlNWYWx1ZSgpKSk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0
IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldEJ5VmFsIGFnYWluIHNvIHdlIG1v
dmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0
aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExv
Y2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNv
bnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisK
KyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
ID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWdlbmVyYXRl
ZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5k
bGVDYWxsPE9wSXRlcmF0b3JPcGVuPihjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2Rl
OjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0
ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05l
eHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdldChi
eXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3RPYmpl
Y3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOwor
ICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNo
RGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRh
cmdldChpc09iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtl
biA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgYWRkVG9HcmFwaChJc09iamVjdCwgaXRl
cmF0b3IpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2sgPSBub3RPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNo
ZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUgZXJyb3JTdHJpbmcgPSBMYXp5
SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvIGluZm8gPSBP
cEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsKKyAgICAgICAg
ICAgICAgICAgICAgTm9kZSogZXJyb3JNZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5SlNDb25zdGFu
dCwgaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dTdGF0aWNFcnJv
ciwgT3BJbmZvKEVycm9yVHlwZTo6VHlwZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09i
amVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAg
ICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwor
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRv
cik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIG5leHRJbXBsID0gbV92bS0+cHJvcGVydHlO
YW1lcy0+bmV4dC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKG5leHRJbXBsKTsKKworICAg
ICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOwor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0
YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisKKyAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX25leHQsIHByZWRpY3Rpb24sIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIobmV4
dEltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3Ro
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qg
d2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5
dGVjb2RlLgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5k
ZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9j
YWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZv
KGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENhc2UpIHsKKyAg
ICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBqc0NvbnN0YW50KEpTVmFsdWUoKSk7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2l0ZXJhdG9yLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX25leHQsIHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxv
Y2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3ZSBtb3Zl
IHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0g
Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlv
bi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2Nh
bFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250
aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgICAgICAgICAgY2xlYXJD
YWNoZXMoKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0b3Jfb3Blbik7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0Pigp
OworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOworICAgICAgICAgICAgdWludDMyX3Qgc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRp
b25NZXRhZGF0YS5zZWVuTW9kZXM7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVt
YWluaW5nTW9kZXMgPSBXVEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7CisgICAgICAgICAgICBBU1NF
UlQobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsKKyAg
ICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ2FzZSA9IGZhbHNlOworCisgICAgICAgICAgICBCeXRl
Y29kZUluZGV4IHN0YXJ0SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAgICAgICAgYXV0byYg
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpOworICAgICAgICAgICAgQmFzaWNCbG9jayog
Z2VuZXJpY0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVh
dGlvbiA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgaWYgKHNl
ZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmly
c3Qgc2V0IHVwIHRoZSB3YXRjaHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5l
c3MuCisgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJh
eUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAgIGlmIChu
dW1iZXJPZlJlbWFpbmluZ01vZGVzICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
aGFzTmV4dCA9IGFkZFRvR3JhcGgoSXNFbXB0eSwgZ2V0KGJ5dGVjb2RlLm1fbmV4dCkpOworICAg
ICAgICAgICAgICAgICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2Nr
KCk7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJsb2NrID0gYWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERh
dGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2sp
OworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdl
dChnZW5lcmljQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwg
T3BJbmZvKGJyYW5jaERhdGEpLCBoYXNOZXh0KTsKKworICAgICAgICAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IGZhc3RBcnJheUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNh
Y2hlcygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJh
dG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnbG9iYWxP
YmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpLCBpdGVyYXRvcik7CisKKyAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxv
Y2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3REb25lQmxvY2sgPSBhbGxvY2F0
ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZG9Mb2Fk
QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGRvbmVJbmRleCA9IGpzQ29uc3RhbnQoanNOdW1i
ZXIoLTEpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdl
dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJh
dG9yOjpGaWVsZDo6SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBpdGVyYXRvcik7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzRG9uZSA9IGFkZFRvR3JhcGgoQ29tcGFyZVN0cmlj
dEVxLCBpbmRleCwgZG9uZUluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRh
KiBpc0RvbmVCcmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAg
ICAgICAgICAgICAgIGlzRG9uZUJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzRG9u
ZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaXNEb25lQnJhbmNoRGF0YS0+bm90VGFrZW4g
PSBCcmFuY2hUYXJnZXQobm90RG9uZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChCcmFuY2gsIE9wSW5mbyhpc0RvbmVCcmFuY2hEYXRhKSwgaXNEb25lKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEu
bV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBy
ZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CisKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90RG9u
ZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcElu
Zm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSks
IE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogaXRlcmFibGUgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSk7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJ1dHRlcmZseSA9IGFkZFRvR3JhcGgoR2V0QnV0
dGVyZmx5LCBpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IGFk
ZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBpdGVy
YWJsZSwgYnV0dGVyZmx5KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNEb25lID0gYWRk
VG9HcmFwaChDb21wYXJlR3JlYXRlckVxLCBpbmRleCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9leGl0T0sgPSB0cnVlOyAvLyBUaGUgYWJvdmUgY29tcGFyZSBkb2Vzbid0IHByb2R1
Y2UgZWZmZWN0cyBzaW5jZSB3ZSBrbm93IGluZGV4IGFuZCBsZW5ndGggYXJlIGludDMycy4KKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICAgICAg
ICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNE
b25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJy
YW5jaFRhcmdldChkb0xvYWRCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
QnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAgICAgICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZG9Mb2FkQmxvY2s7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVj
SW50MzJPbmx5KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogb25lID0ganNDb25zdGFudChqc051bWJlcigxKSk7CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIG5ld0luZGV4ID0gbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgaW5kZXgs
IG9uZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBmYWxzZU5vZGUgPSBqc0NvbnN0YW50
KGpzQm9vbGVhbihmYWxzZSkpOworCisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IGNvdWxkIGNvbnNpZGVyIG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNl
cyB0aHJlZSBjaGlsZAorICAgICAgICAgICAgICAgICAgICAvLyBzbG90cy4KKyAgICAgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5
MgorICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9pdGVy
YWJsZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChpbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9w
ZXJ0eSBzdG9yYWdlLgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSks
IE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5t
X3ZhbHVlLCBnZXRCeVZhbCk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2Rv
bmUsIGZhbHNlTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJu
YWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZp
ZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIG5ld0luZGV4KTsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBy
dW4gb3VyIGdldEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJl
bnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7
CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBSb2xsIGJhY2sgdGhlIGNoZWNrcG9pbnQu
CisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGlzRG9uZUJs
b2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiB0cnVlTm9kZSA9IGpzQ29uc3RhbnQoanNCb29sZWFuKHRydWUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4ID0ganNDb25zdGFudChqc051bWJlcigtMSkp
OworICAgICAgICAgICAgICAgICAgICBOb2RlKiBib3R0b21Ob2RlID0ganNDb25zdGFudChib3R0
b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbikpOworCisgICAgICAgICAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBib3R0b21Ob2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgdHJ1ZU5vZGUpOworICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJf
dD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0
b3IpLCBkb25lSW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9j
YWxzLgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxR
dWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNv
bnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFy
dEluZGV4OworICAgICAgICAgICAgICAgIGdlbmVyYXRlZENhc2UgPSB0cnVlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YykgeworICAgICAgICAgICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGdlbmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jayA9IGdlbmVyaWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMo
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFn
ZW5lcmF0ZWRDYXNlKTsKKworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5
ID0gaGFuZGxlQ2FsbDxPcEl0ZXJhdG9yTmV4dD4oY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBD
YWxsTW9kZTo6UmVndWxhcik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5h
bGl0eSwgdGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAgICAgIHByb2dy
ZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90
T2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2so
KTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3REb25lQmxvY2sgPSBhbGxvY2F0ZVVu
dGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICBPcGVyYW5kIG5leHRSZXN1bHQg
PSBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3JSZXN1bHQgPSBnZXQobmV4
dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBt
X2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0
YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdE9iamVjdEJsb2NrKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRh
KSwgYWRkVG9HcmFwaChJc09iamVjdCwgaXRlcmF0b3JSZXN1bHQpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3RPYmplY3RC
bG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgTGF6eUpTVmFsdWUgZXJyb3JTdHJpbmcgPSBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1f
Z3JhcGgsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsK
KyAgICAgICAgICAgICAgICAgICAgT3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlK
U1ZhbHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJy
b3JNZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5SlNDb25zdGFudCwgaW5mbyk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6
VHlwZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JU
ZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gdmFs
dWVQcmVkaWNpdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChCeXRlY29kZUluZGV4
KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUpKTsKKwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGlzT2JqZWN0QmxvY2s7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGJvdHRvbVZhbHVlID0ganNDb25zdGFudChib3R0b21WYWx1ZU1hdGNoaW5nU3Bl
Y3VsYXRpb24odmFsdWVQcmVkaWNpdGlvbikpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQobmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIGRvbmVJ
bXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5z
dXJlKGRvbmVJbXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBB
Y2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVM
ZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAgICAgICAgICAg
ICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwg
bV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3Jp
Z2luKCkpOworCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9k
b25lLCBwcmVkaWN0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKGRvbmVJbXBsKSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMs
IHR5cGUsIG9wY29kZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIC8vIFNldCBhIHZhbHVl
IGZvciBtX3ZhbHVlIHNvIHdlIGRvbid0IHRoaW5rCisgICAgICAgICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX3ZhbHVlLCBib3R0b21WYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHByb2dy
ZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEq
IGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoY29udGludWF0aW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90
RG9uZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5m
byhicmFuY2hEYXRhKSwgZ2V0KGJ5dGVjb2RlLm1fZG9uZSkpOworICAgICAgICAgICAgICAgICAg
ICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdERvbmVCbG9jazsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBiYXNlID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhdXRv
KiB2YWx1ZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKCkuZW5zdXJlKHZhbHVlSW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlw
ZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0
ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFz
ZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5
dGVjb2RlLm1fdmFsdWUsIHZhbHVlUHJlZGljaXRpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodmFsdWVJbXBsKSwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisgICAgICAgICAgICAgICAg
ICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgpOworCisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgICAg
ICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghZ2VuZXJhdGVkQ2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29u
c3RhbnQoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhp
dCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgcmVzdWx0KTsKKworICAgICAgICAgICAg
ICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5
IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgp
ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAg
ICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9y
VGVybWluYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSBzdGFydEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247
CisgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9pdGVyYXRvcl9uZXh0KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6
IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Sm5lcVB0cj4oKTsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9n
cmFwaC5mcmVlemVTdHJvbmcobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0
YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIpKTsKQEAgLTcxMDcsNyArNzUzNSw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICAvLyBsb2FkcyBmcm9tIHRoZSBzY29wZSByZWdpc3RlciBsYXRlciwgYXMgdGhhdCB3b3VsZCBw
cmV2ZW50IHRoZSBERkcgZnJvbSB0cmFja2luZyB0aGUKICAgICAgICAgICAgIC8vIGJ5dGVjb2Rl
LWxldmVsIGxpdmVuZXNzIG9mIHRoZSBzY29wZSByZWdpc3Rlci4KICAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0U2NvcGU+KCk7Ci0gICAgICAg
ICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAgICAgICAg
ICAgIE5vZGUqIGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKSk7CiAgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+
KCptX3ZtKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSB3ZWFrSlNDb25zdGFudChmdW5jdGlv
bi0+c2NvcGUoKSk7CkBAIC03NDg2LDcgKzc5MTQsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywK
ICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCAv
LyBOdWxsIGlmIHRoaXMgaXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJl
dHVyblZhbHVlVlIsCisgICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLApAQCAtNzQ5NSw3ICs3OTIzLDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAg
ICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2socHJvZmls
ZWRCbG9jaykKICAgICAsIG1fY29udGludWF0aW9uQmxvY2soY29udGludWF0aW9uQmxvY2spCi0g
ICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIpCisgICAgLCBtX3JldHVyblZhbHVlKHJl
dHVyblZhbHVlKQogICAgICwgbV9jYWxsZXIoYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tU
b3ApCiB7CiAgICAgewpAQCAtNzU2MSw3ICs3OTg5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIC8vIE1hY2hpbmUgY29kZSBi
bG9jayBjYXNlLgogICAgICAgICBBU1NFUlQoY29kZUJsb2NrID09IGJ5dGVDb2RlUGFyc2VyLT5t
X2NvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVCghY2FsbGVlKTsKLSAgICAgICAgQVNTRVJUKCFy
ZXR1cm5WYWx1ZVZSLmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVCghcmV0dXJuVmFsdWUuaXNW
YWxpZCgpKTsKICAgICAgICAgQVNTRVJUKCFpbmxpbmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkp
OwogCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gMDsKQEAgLTc5NzYsNyArODQwNCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgICAgICBpbnNlcnRpb25T
ZXQuZXhlY3V0ZShibG9jayk7CiAKICAgICAgICAgICAgICAgICBhdXRvIG5vZGVBbmRJbmRleCA9
IGJsb2NrLT5maW5kVGVybWluYWwoKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChu
b2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CisgICAgICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBub2RlQW5kSW5kZXgubm9kZSwgbm9kZUFuZEluZGV4Lm5vZGUt
Pm9wKCkgPT0gVW5yZWFjaGFibGUpOwogICAgICAgICAgICAgICAgIGJsb2NrLT5yZXNpemUobm9k
ZUFuZEluZGV4LmluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcAppbmRleCBlN2Y2ZTc2MjQ2NjliMzAxZjVhMDIwNDhjMjVkNDgxNWMz
YTEzMzlkLi42MTBkN2QyMGVmNjUzNWY3YThlOTViY2VhMTIxZWYzYjhhYjQwMmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNC
bG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKQorICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9j
aywgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIE9w
ZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIE5vZGUqIGxpdmVuZXNzTm9kZSA9IGpldHRp
c29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgIGlm
ICghbGl2ZW5lc3NOb2RlKQpAQCAtMzAyLDExICszMDIsOSBAQCBwcml2YXRlOgogICAgIAogICAg
IHZvaWQgamV0dGlzb25CbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlz
b25lZEJsb2NrLCBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbikKICAgICB7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
bnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShi
bG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsg
KytpKQotICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2Nr
LCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKLSAgICAg
ICAgCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJp
YWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJs
b2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJsb2Nr
LT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpKTsKKwogICAgICAgICBmaXhKZXR0
aXNvbmVkUHJlZGVjZXNzb3JzKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2spOwogICAgIH0KICAgICAK
QEAgLTM1MiwxMSArMzUwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRpbWUgdG8gaW5z
ZXJ0IGdob3N0aWVzIGZvciB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGtlcHQgYWxpdmUgaW4gY2Fz
ZSB3ZSBPU1IKICAgICAgICAgICAgIC8vIGV4aXQgcHJpb3IgdG8gaGl0dGluZyB0aGUgZmlyc3RC
bG9jaydzIHRlcm1pbmFsLCBhbmQgZW5kIHVwIGdvaW5nIGRvd24gYQogICAgICAgICAgICAgLy8g
ZGlmZmVyZW50IHBhdGggdGhhbiBzZWNvbmRCbG9jay4KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICAgICAga2VlcE9wZXJhbmRB
bGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmly
c3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGkpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0
dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAg
ICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5
Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvcklu
ZGV4KGkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzZWNvbmRCbG9jay0+cGhpcy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4
OGY4ZTFjMmEwYjY3MGJmOTlmLi42MDAzMzJmMTkwZmY4YjQwNDJjZDU0MmFiOTViNTA1MzZhZDdh
Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CkBAIC0yNzQsNiArMjc0LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9w
X2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jf
bmV4dDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKICAgICBjYXNl
IG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgpA
QCAtMzExLDYgKzMxMyw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBjaGVj
a3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBj
aGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmU6CiAgICAgY2FzZSBoYW5kbGVVbmNhdWdodEV4
Y2VwdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9jYWxs
X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF9yZXR1cm5fbG9jYXRpb246
CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAxYTRkZWNkYTBjMmQ3
MzY4N2VmY2YzODhiODQ4MmZiMGVjNjQ3YzRmLi5kYmM4MzFjMmViZTA4NmY4NzM2NmE3ZTU0YTM1
ZTU5M2E5YjA3OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTI0MTEsNyArMjQxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6IHsKLSAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0
eSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCmluZGV4IGJmNDM1MGM0Y2QxN2UzZDUwMDY2MzhmNTVh
YWMzNWE1NjUyOTk0YTEuLmQ5Yzk3NDI4ZmQ2YWU1ZWE1MDZkMDU3MjY3MzAyMGRkMWFmZjExNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc3LDcg
Kzc3LDcgQEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihiZWZvcmVJbmxpbmVDYWxsRnJhbWUp
OwogICAgICAgICBpZiAoYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSkgewogICAg
ICAgICAgICAgQVNTRVJUKGJlZm9yZS5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpICE9IGFm
dGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpOwotICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVj
b2RlSW5kZXgoKS5vZmZzZXQoKSwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNo
b3VsZCBjaGFuZ2UgdGhlIGZvckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBi
eXRlY29kZXMuIik7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRl
Y29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpIHx8
IG5vZGVBZnRlci0+b3AoKSA9PSBFeGl0T0sgfHwgbm9kZUFmdGVyLT5vcCgpID09IEludmFsaWRh
dGlvblBvaW50LCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5n
ZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4i
KTsKIAogICAgICAgICAgICAgYXV0byBsaXZlQmVmb3JlID0gdG1wTGl2ZW5lc3NGb3JDaGVja3Bv
aW50KCpjb2RlQmxvY2ssIGJlZm9yZS5ieXRlY29kZUluZGV4KCkpOwogICAgICAgICAgICAgYXV0
byBsaXZlQWZ0ZXIgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYWZ0ZXIu
Ynl0ZWNvZGVJbmRleCgpKTsKQEAgLTEwMiw4ICsxMDIsNiBAQCB2b2lkIGZvckFsbEtpbGxlZE9w
ZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBj
b25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
YWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSwgIlRyYW5zaXRpb25pbmcgYWNyb3Nz
IGEgY2hlY2twb2ludCBidXQgYmVmb3JlIGFuZCBhZnRlciBkb24ndCBzaGFyZSBhbiBpbmxpbmVD
YWxsRnJhbWUuIik7Ci0KICAgICAvLyBEZXRlY3Qga2lsbHMgdGhlIHN1cGVyIGNvbnNlcnZhdGl2
ZSB3YXk6IGl0IGlzIGtpbGxlZCBpZiBpdCB3YXMgbGl2ZSBiZWZvcmUgYW5kIGRlYWQgYWZ0ZXIu
CiAgICAgQml0VmVjdG9yIGxpdmVBZnRlciA9IGdyYXBoLmxvY2Fsc0FuZFRtcHNMaXZlSW5CeXRl
Y29kZShhZnRlcik7CiAgICAgdW5zaWduZWQgbnVtTG9jYWxzID0gZ3JhcGguYmxvY2soMCktPnZh
cmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAppbmRleCAyMDJkMjI1MDUz
ZmE5ZGZiZTVjMjNjNjRiY2Y4YmUzODRlM2U3NjU0Li43Y2MzNGFlMmQwZDRlNWY4NDhlNjk1NzMw
MjQ5MmMxMjFkNzFmZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtNTksNiArNTksOSBAQCB2b2lkIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2soQmFzaWNCbG9jayogYmFzaWNCbG9jaykK
ICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkg
PT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VS
VChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Js
b2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhcmlh
Ymxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0SGVhZC5u
dW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5u
dW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkp
OworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkg
PT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpKTsKIAogICAgIG1f
YWJzdHJhY3RWYWx1ZXMucmVzaXplKCk7CiAKQEAgLTE2MSw2ICsxNjQsMTAgQEAgdm9pZCBJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBlbnRyeXBvaW50LT52
YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwogICAgICAgICB9CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygpOyAr
K2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC50bXAoaSkuY2xlYXIo
KTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC50bXAoaSkuY2xlYXIoKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBo
LmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKQEAgLTE3NSwxMyArMTgyLDkgQEAgdm9pZCBJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGJsb2NrLT5jZmFUaGlua3NT
aG91bGRUcnlDb25zdGFudEZvbGRpbmcgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYVN0cnVj
dHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwogICAgICAgICBi
bG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNo
ZWQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5u
dW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwu
YXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgICAg
ICBibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZFtpXS5jbGVhcigpOworICAgICAgICAgICAgYmxvY2st
PnZhbHVlc0F0VGFpbFtpXS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzksNyAr
MjQyLDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAgICAg
ICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAg
ICAgICAgICAgICAgICAvLyBUaGUgYmxvY2sgdHJhbnNmZXJzIHRoZSB2YWx1ZSBmcm9tIGhlYWQg
dG8gdGFpbC4KLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHZhcmlhYmxlQXQoaW5kZXgp
OworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gYXRJbmRleChpbmRleCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkBAIC0zMDQs
NyArMzA3LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0gPSB2YXJpYWJsZUF0KGkpOworICAgICAg
ICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IGF0SW5kZXgoaSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBmb3IgKE5vZGVBYnN0cmFjdFZhbHVlUGFpciYgdmFsdWVBdFRhaWwgOiBibG9jay0+
c3NhLT52YWx1ZXNBdFRhaWwpCkBAIC0zNDMsNiArMzQ2LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgICAg
IGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVyRHVtcChmcm9tKSwgIiB0byAiLCBw
b2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwu
bnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1l
bnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMo
KSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOworICAgIEFTU0VSVChm
cm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZlRtcHMoKSk7CiAgICAgCiAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAg
CkBAIC0zNTIsMTQgKzM1Niw5IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJh
c2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgIAogICAgIHN3aXRjaCAobV9ncmFw
aC5tX2Zvcm0pIHsKICAgICBjYXNlIFRocmVhZGVkQ1BTOiB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKythcmd1bWVudCkgewotICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVz
dGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKLSAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZy
b20tPnZhbHVlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCksIHRvLT52YXJpYWJsZXNBdEhlYWQu
YXJndW1lbnQoYXJndW1lbnQpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1l
bnQpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgbG9jYWwgPSAw
OyBsb2NhbCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyArK2xvY2Fs
KSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNB
dEhlYWQubG9jYWwobG9jYWwpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxl
QmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2Fs
KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCksIGZyb20tPnZhcmlhYmxlc0F0VGFp
bC5sb2NhbChsb2NhbCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
ZnJvbS0+dmFyaWFibGVzQXRUYWlsLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmF0KGluZGV4KTsKKyAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoZGVzdGluYXRp
b24sIGZyb20tPnZhbHVlc0F0VGFpbC5hdChpbmRleCksIHRvLT52YXJpYWJsZXNBdEhlYWQuYXQo
aW5kZXgpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuYXQoaW5kZXgpKTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKaW5kZXggMTg2NWU2YTFlZmZjM2RhYWVmZTU4NGNhODYy
YzQ5YmMzNjg1ODUwMC4uYzVkMDI2ODczZTAxMGQwN2YzODExYzZjNGZlZjU2NmUxY2E3MGY5NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuaApAQCAtMTU4LDEwICsxNTgsMTIgQEAgcHVibGljOgogICAgIAogICAgIE9wZXJhbmRz
PEFic3RyYWN0VmFsdWU+JiB2YXJpYWJsZXNGb3JEZWJ1Z2dpbmcoKTsKIAorICAgIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5zaXplKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9m
QXJndW1lbnRzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscygpIGNvbnN0IHsgcmV0
dXJuIG1fdmFyaWFibGVzLm51bWJlck9mTG9jYWxzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJP
ZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZlRtcHMoKTsgfQogICAg
IAotICAgIEFic3RyYWN0VmFsdWUmIHZhcmlhYmxlQXQoc2l6ZV90IGluZGV4KQorICAgIEFic3Ry
YWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHsKICAgICAgICAgYWN0aXZhdGVW
YXJpYWJsZUlmTmVjZXNzYXJ5KGluZGV4KTsKICAgICAgICAgcmV0dXJuIGZhc3RGb3J3YXJkKG1f
dmFyaWFibGVzW2luZGV4XSk7CkBAIC0xNjksMTcgKzE3MSwxNyBAQCBwdWJsaWM6CiAKICAgICBB
YnN0cmFjdFZhbHVlJiBvcGVyYW5kKE9wZXJhbmQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLm9wZXJhbmRJbmRleChvcGVyYW5kKSk7CisgICAg
ICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLm9wZXJhbmRJbmRleChvcGVyYW5kKSk7CiAg
ICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRleCkKICAgICB7
Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5kZXgp
KTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMubG9jYWxJbmRleChpbmRleCkp
OwogICAgIH0KICAgICAKICAgICBBYnN0cmFjdFZhbHVlJiBhcmd1bWVudChzaXplX3QgaW5kZXgp
CiAgICAgewotICAgICAgICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5hcmd1bWVudElu
ZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLmFyZ3VtZW50
SW5kZXgoaW5kZXgpKTsKICAgICB9CiAgICAgCiAgICAgLy8gQ2FsbCB0aGlzIGJlZm9yZSBiZWdp
bm5pbmcgQ0ZBIHRvIGluaXRpYWxpemUgdGhlIGFic3RyYWN0IHZhbHVlcyBvZgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCmluZGV4IGY1ZWVmMmYzZGY3MjEyOWE4
MzhjNzY4NmUyNmI5NjBiNTBmNTgxZWUuLjdhMzM2NjZhYTcxYTFmNjY2Yzk0YjI4YjY0NDc0ODRk
NjdiYmI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpT
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgK
QEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBMYXp5SlNWYWx1ZSBuZXdTdHJp
bmcoR3JhcGgmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIExhemluZXNzS2luZCBraW5kKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRlZFR5cGUo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS25vd25WYWx1ZSA/IFNwZWNCeXRlY29kZVRvcCA6
IFNwZWNTdHJpbmc7IH0KICAgICAKICAgICBGcm96ZW5WYWx1ZSogdHJ5R2V0VmFsdWUoR3JhcGgm
KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmlu
ZGV4IGE4NTJkYmRkOWI5MzcwZDZkZTY1M2M1YTQ4ODcxMTcwMGU4Yjg3OWIuLjUyMjM0YjRhNWQz
ZjY5NzZjMmZhOTk4MTZkY2UxMTA2ODEwNTRlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcApAQCAtNDgsMTEgKzQ4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVl
U291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQ
cm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWdu
ZWQgcmVjb3ZlcnlJbmRleCkKK09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1
ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVl
UHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2ln
bmVkIHJlY292ZXJ5SW5kZXgsIHVuc2lnbmVkIGRmZ0lSSW5kZXgpCiAgICAgOiBPU1JFeGl0QmFz
ZShraW5kLCBqaXQtPm1fb3JpZ2luLmZvckV4aXQsIGppdC0+bV9vcmlnaW4uc2VtYW50aWMsIGpp
dC0+bV9vcmlnaW4ud2FzSG9pc3RlZCkKICAgICAsIG1fanNWYWx1ZVNvdXJjZShqc1ZhbHVlU291
cmNlKQogICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQogICAgICwgbV9yZWNvdmVy
eUluZGV4KHJlY292ZXJ5SW5kZXgpCisgICAgLCBtX2RmZ0lSSW5kZXgoZGZnSVJJbmRleCkKICAg
ICAsIG1fc3RyZWFtSW5kZXgoc3RyZWFtSW5kZXgpCiB7CiAgICAgYm9vbCBjYW5FeGl0ID0gaml0
LT5tX29yaWdpbi5leGl0T0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCmlu
ZGV4IDllOWJjZWE0ODFjMWQ2ODc3OTcyZjI1OWQ2MmMxYTIzMDBiMmIxNjEuLjhjZThiOTIwNzlh
Zjc1Mjk5NzAzZjE3ZmRkYWUyZmVjM2I5YzI4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQK
IC8vIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBob3cgdG8gZXhpdCB0aGUgc3BlY3VsYXRpdmUg
cGF0aCBieQogLy8gZ29pbmcgaW50byBiYXNlbGluZSBjb2RlLgogc3RydWN0IE9TUkV4aXQgOiBw
dWJsaWMgT1NSRXhpdEJhc2UgewotICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2Us
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQg
c3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01BWCk7CisgICAgT1NS
RXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3Zl
cnlJbmRleCA9IFVJTlRfTUFYLCB1bnNpZ25lZCBkZmdJUkluZGV4ID0gVUlOVF9NQVgpOwogCiAg
ICAgZnJpZW5kIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxs
RnJhbWUqKTsKIApAQCAtMTU5LDYgKzE1OSw3IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9T
UkV4aXRCYXNlIHsKICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1fdmFsdWVQcm9m
aWxlOwogICAgIAogICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJbmRleDsKKyAgICB1bnNpZ25lZCBt
X2RmZ0lSSW5kZXg7CiAKICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGNv
ZGVMb2NhdGlvbkZvclJlcGF0Y2goKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDFkZjM5NDMy
NDFkNWFmNzkzMTk4ZWY5YzcxMjczZTc1OGEwYTIyNmEuLjA4NWRjNTMwYjNiYzM3OWZiNGYzZTYw
OTFjYjVjNjUyMDI3NTg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTE1OSw5ICsxNTksMTUgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sKICNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUp
IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMTYoKSA/IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pIDogKGNhbGxJbnN0cnVjdGlvbi5p
c1dpZGUzMigpID8gTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMj
X3JldHVybl9sb2NhdGlvbikgOiBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1l
IyNfcmV0dXJuX2xvY2F0aW9uKSkpCiAKICAgICAgICAgc3dpdGNoICh0cnVlQ2FsbGVyQ2FsbEtp
bmQpIHsKLSAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6Ci0gICAgICAgICAgICBq
dW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAgICBjYXNl
IElubGluZUNhbGxGcmFtZTo6Q2FsbDogeworICAgICAgICAgICAgaWYgKGNhbGxJbnN0cnVjdGlv
bi5vcGNvZGVJRCgpID09IG9wX2NhbGwpCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExM
SU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxJ
bnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgICAgICAg
ICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVuKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2l0
ZXJhdG9yX25leHQpCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9M
T0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CiAgICAgICAgICAgICBq
dW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTIzOSw2ICsyNDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawog
ICAgICAgICB9CiAgICAgfQogCisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOwogICAgIHJldHVybiBq
dW1wVGFyZ2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIxMDAzZWQ1ZmQzZmJj
MzgxNjJjODkyYjM0Yzg0N2I5Mjc2ODNmYWUuLjZlMDkwYTM4YmZjMDk0NzVhN2Q3YmQ1OTFlMjUx
YTNlOTM0Njg1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMTAxLDYgKzExMDEsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNoaWxkMSgpLT5tZXJnZUZs
YWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTGF6eUpTQ29uc3Rh
bnQ6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+bGF6eUpTVmFs
dWUoKS5zcGVjdWxhdGVkVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yOgogICAgICAgICBjYXNlIFRvU3RyaW5nOgpAQCAtMTMwNSw3ICsxMzExLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNh
c2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENh
Y2hlZFJlc3VsdDoKLSAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKICAgICAgICAgY2FzZSBD
YWxsRE9NOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2li
bGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4KICAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX2N1cnJlbnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBwcmVkaWN0aW9u
IHByb3BhZ2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CmluZGV4IDBkNjVkOGY4OWFlYzNkNTk0MmQyY2Y4M2Q2Y2VkOGExYmZmMzk4Y2IuLjlhZTk4MDRj
NzViOTVlYzU2MWVkMmYxYTUyYjlkZWM5OGM4NDVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGRhdGFMb2dGKCIpID09ICglcyA9ICIsICNyaWdodCk7IFwKICAgICAgICAgICAgIGRhdGFM
b2cocmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRhTG9nRigiKSAoJXM6JWQpLlxuIiwgX19GSUxF
X18sIF9fTElORV9fKTsgXAorICAgICAgICAgICAgZGF0YUxvZygiXG5cblxuIik7IFwKKyAgICAg
ICAgICAgIG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobnVsbHB0ciktPmR1bXBCeXRlY29k
ZSgpOyBcCiAgICAgICAgICAgICBkdW1wR3JhcGhJZkFwcHJvcHJpYXRlKCk7IFwKICAgICAgICAg
ICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJF
VFRZX0ZVTkNUSU9OLCAjbGVmdCAiID09ICIgI3JpZ2h0KTsgXAogICAgICAgICAgICAgQ1JBU0go
KTsgXApAQCAtNTY4LDYgKzU3MCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgT3BlcmFuZHM8
c2l6ZV90PiBnZXRMb2NhbFBvc2l0aW9ucyhPcGVyYW5kc0xpa2UsIGJsb2NrLT52YXJpYWJsZXNB
dEhlYWQpOwogICAgICAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiBzZXRMb2NhbFBvc2l0aW9ucyhP
cGVyYW5kc0xpa2UsIGJsb2NrLT52YXJpYWJsZXNBdEhlYWQpOwogICAgICAgICAgICAgCisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIFZBTElEQVRFKChPcGVyYW5kOjp0
bXAoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQudG1wKGkpIHx8IGJsb2NrLT52
YXJpYWJsZXNBdEhlYWQudG1wKGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpCisgICAgICAgICAgICAg
ICAgICAgIFZBTElEQVRFKChPcGVyYW5kOjp0bXAoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJs
ZXNBdFRhaWwudG1wKGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwudG1wKGkpLT5hY2Nlc3Nl
c1N0YWNrKG1fZ3JhcGgpKTsKKworICAgICAgICAgICAgICAgIGdldExvY2FsUG9zaXRpb25zLnRt
cChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgICAgICBzZXRMb2NhbFBvc2l0aW9ucy50bXAoaSkg
PSBub3RTZXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcyhpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKSB8
fCBibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3Jh
cGgpKTsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMp
CkBAIC03MTYsNiArNzI2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5t
X2Zvcm0gPT0gTG9hZFN0b3JlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNoZWNrT3BlcmFu
ZCgKKyAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRMb2Nh
bFBvc2l0aW9ucywgT3BlcmFuZDo6dG1wKGkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
QXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICAgICAgICAgIGNoZWNrT3BlcmFuZCgKICAgICAg
ICAgICAgICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRMb2NhbFBvc2l0aW9u
cywgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKQEAgLTk0NCw3
ICs5NTksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjaGVja09wZXJhbmQoCiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrLCBPcGVyYW5kczxzaXplX3Q+JiBnZXRMb2NhbFBvc2l0aW9ucywKLSAg
ICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kKQorICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0aW9ucywg
T3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgaWYgKGdldExvY2FsUG9zaXRpb25zLm9w
ZXJhbmQob3BlcmFuZCkgPT0gbm90U2V0KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NDFmZGE2ODc2ZTY1MmM5
ODQ2MDFhMmIzYjc5ZDM0Li45NGRlMzhjYjcxNjc4YWQ4NmFiYWM2YjdjNjI4NzljMTZiMTBjODMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM3LDYgKzEzNyw3
IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJHZXRCeUlkTWV0YWRhdGEuaCIKICNpbmNsdWRlICJH
ZXRCeVZhbEhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkl0
ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1
dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCmluZGV4IDdjZDE1ZDMxNWQ2MzkwYWJhMjYz
NWU5NjM1OWY4OTBlMmViNzFhOTUuLmMwNzc1ZDhlMWIxMDUwMmRmMDFhNzRhZjBjNmRlYjRhODc1
Y2M2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRh
dGEucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgpA
QCAtNjcsNiArNjcsNyBAQCBjbGFzcyBNZXRhZGF0YQogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShNZXRhZGF0YSk7CiAKICAgICBwdWJsaWM6CisgICAgICAgICN7b3Aub3Bjb2RlSUR9CiAg
ICAgICAgIE1ldGFkYXRhKGNvbnN0ICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0mI3siIF9fb3AiIGlm
IGluaXRzfSkje2luaXRzfSB7IH0KIAogI3tmaWVsZHN9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXggOWI1ZWU5MDk2ZWU3MWIxYjBkM2VkN2Y3Y2QxOGRi
MDZmY2IzNWZjZi4uN2Y0MzAyZDg4MmVmNmYzNTk1NzY3N2VkY2YwNDlkMzI2Zjk2NDQxMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgpAQCAtNTMsNyArNTMs
MTcgQEAgY2xhc3MgU2VjdGlvbgogICBlbmQKIAogICBkZWYgc29ydCEKLSAgICAgIEBvcGNvZGVz
ID0gQG9wY29kZXMuc29ydCB7IHxhLCBifCBhLm1ldGFkYXRhLmVtcHR5PyA/IGIubWV0YWRhdGEu
ZW1wdHk/ID8gMCA6IDEgOiAtMSB9CisgICAgICBAb3Bjb2RlcyA9IEBvcGNvZGVzLnNvcnQgeyB8
YSwgYnwKKyAgICAgICAgICByZXN1bHQgPSBuaWwKKyAgICAgICAgICBpZiBhLmNoZWNrcG9pbnRz
IG9yIGIuY2hlY2twb2ludHMKKyAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRoIGNo
ZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2EubmFtZX0iIGlmIGEuY2hlY2twb2lu
dHMgYW5kIGEubWV0YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMg
d2l0aCBjaGVja3BvaW50cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3tiLm5hbWV9IiBpZiBiLmNo
ZWNrcG9pbnRzIGFuZCBiLm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICByZXN1bHQgPSBh
LmNoZWNrcG9pbnRzID8gYi5jaGVja3BvaW50cyA/IDAgOiAtMSA6IDEKKyAgICAgICAgICBlbHNp
ZgorICAgICAgICAgICAgICByZXN1bHQgPSBhLm1ldGFkYXRhLmVtcHR5PyA/IGIubWV0YWRhdGEu
ZW1wdHk/ID8gMCA6IDEgOiAtMSAKKyAgICAgICAgICBlbmQKKyAgICAgICAgICByZXN1bHQKKyAg
ICAgIH0KICAgICAgIEBvcGNvZGVzLmVhY2goJjpjcmVhdGVfaWQhKQogICBlbmQKIApAQCAtNzMs
NiArODMsMTkgQEAgY2xhc3MgU2VjdGlvbgogICAgICAgZW5kCiAKICAgICAgIGlmIGNvbmZpZ1s6
ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdCisgICAgICAgICAgaSA9IDAKKyAgICAgICAgICB3aGlsZSB0
cnVlCisgICAgICAgICAgICAgIGlmICFvcGNvZGVzW2ldLmNoZWNrcG9pbnRzCisgICAgICAgICAg
ICAgICAgICBwcmludCgiRk9VTkQgVEhFIE5VTUJFUiBPRiBDSEVDS1BPSU5UUyBBTkQgSSdNIFBS
SU5USU5HIElUIElOVE8gVEhFIEZJTEUgV0lORE9XUyEiKQorICAgICAgICAgICAgICAgICAgb3V0
IDw8ICJcbiIKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBOVU1CRVJfT0ZfI3tj
b25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fV0lUSF9DSEVDS1BPSU5UUyAje2l9XG4iCisg
ICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAg
ICBpICs9IDEKKyAgICAgICAgICBlbmQKKyAgICAgICAgICBvdXQgPDwgIlxuIgorCiAgICAgICAg
ICAgb3V0LndyaXRlKCIjZGVmaW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBv
bmVudF19X01FVEFEQVRBX1NJWkUobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAgICAg
ICAgICAgd2hpbGUgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5
YmY5YTFhMTk1YzNlODM4NjRjMWNhMTc4NDA4YTViMGYuLjhiM2EyMzhhNGRhZjFmYzY3OTE0MGQ4
YmJlYzc3MDliODU2OGJiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI2MSw3
ICsyNjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIG1f
bGFiZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKV0gPSBsYWJlbCgpOwogCiAgICAgICAgIGlm
IChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiT2xkIEpJVCBl
bWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25n
KWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1p
dHRpbmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylk
ZWJ1Z09mZnNldCgpKTsKIAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtNDM4LDYgKzQzOCw5IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9pbnRlcm5hbF9m
aWVsZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9pbnRlcm5hbF9maWVsZCkKIAorICAgICAg
ICBERUZJTkVfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5FX09QKG9wX2l0ZXJh
dG9yX25leHQpCisKICAgICAgICAgREVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3JzaGlmdCkKICAgICAgICAgREVGSU5FX09QKG9wX3Vuc2lnbmVkKQpAQCAtNTI1LDcgKzUy
OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICBy
YXJlQ2FzZVByb2ZpbGUgPSAmcmFyZUNhc2VQcm9maWxlcy5hdChieXRlY29kZUNvdW50SGF2aW5n
U2xvd0Nhc2UpOwogCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAg
ICAgIGRhdGFMb2dMbigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNv
ZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAg
ICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0
ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAgICAg
ICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEZv
ckJ5dGVjb2RlU2xvd1BhdGgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBsYWJlbCgpKTsKQEAg
LTU4OSw2ICs1OTIsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfdG9fc2NvcGUpCiAKKyAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pdGVy
YXRvcl9uZXh0KQorCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHVuc2lnbmVkKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChpbmMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9TTE9XX09QKGRlYykKQEAgLTYyNiw4ICs2MzIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJBdCAiLCBmaXJzdFRvLCAiIHNsb3c6ICIsIGl0ZXIgLSBtX3Nsb3dD
YXNlcy5iZWdpbigpLCAiXG4iKTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvICE9IGl0ZXItPnRvLCAiTm90
IGVub3VnaCBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvID09IChpdGVyIC0gMSktPnRvLCAiVG9v
IG1hbnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJz
dFRvLm9mZnNldCgpICE9IGl0ZXItPnRvLm9mZnNldCgpLCAiTm90IGVub3VnaCBqdW1wcyBsaW5r
ZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
TUVTU0FHRShmaXJzdFRvLm9mZnNldCgpID09IChpdGVyIC0gMSktPnRvLm9mZnNldCgpLCAiVG9v
IG1hbnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwogICAgICAgICAKICAg
ICAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGFkZDMyKFRydXN0
ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKCZyYXJlQ2FzZVByb2ZpbGUtPm1fY291bnRlcikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzA3MzU1YzZkNzExODJhYTA3MjlhMjc0OTEw
MDRmNDVlMWVhNmFjMS4uODNhZTFhN2I2OThkNjkzM2RiYjhhMDM3MTkwNDllYzIyNTgxOGY3OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yOTcsNiArMjk3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAK
KyAgICAgICAgdm9pZCBjaGVja3BvaW50UmVhY2hlZCgpOworICAgICAgICB2b2lkIGVtaXRKdW1w
U2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKKwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNl
KEp1bXApOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKGNvbnN0IEp1bXBMaXN0Jik7CiAgICAg
ICAgIHZvaWQgYWRkU2xvd0Nhc2UoKTsKQEAgLTY3Niw2ICs2NzksMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOwogCisg
ICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworCiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0
U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIApAQCAtOTExLDYgKzkxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOwogICAgICAgICBWZWN0
b3I8TGFiZWw+IG1fbGFiZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIExhYmVs
PiBtX2NoZWNrcG9pbnRMYWJlbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkR2VuZXJhdG9y
PiBtX2dldEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlWYWxHZW5lcmF0b3I+IG1fZ2V0
QnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dl
dEJ5SWRzV2l0aFRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBl
MWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNiMjBiODY2Li4wMjYxNDc2ZTk2YTE4YTk5
MDUxOGQwODdlNDlkMTM0NDU3MjZmMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBVU0UoSlNWQUxVRTY0KQogI2luY2x1ZGUgIkpJ
VC5oIgogCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCisjaW5jbHVkZSAiQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxlci5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKQEAgLTQyLDgg
KzQ0LDggQEAKICNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgogI2luY2x1ZGUgIlN0YWNr
QWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCi0jaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUxLDcgKzUzLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+CiB2b2lkIEpJVDo6ZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmIGJ5dGVjb2RlKQog
ewogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKSwgcmVnVDApOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTYxLDIwICs2MywyMSBAQCBzdGQ6OmVuYWJsZV9pZl90PAog
LCB2b2lkPgogSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxM
aW5rSW5mbyopCiB7CisgICAgdW5zaWduZWQgY2hlY2twb2ludCA9IG1fYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7Ci0gICAgaW50IGFyZ0NvdW50ID0gYnl0ZWNvZGUubV9hcmdjOwotICAgIGludCBy
ZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7CisgICAg
aW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9y
KGJ5dGVjb2RlLCBjaGVja3BvaW50KTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGlj
X2Nhc3Q8aW50PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hlY2tw
b2ludCkpOwogCiAgICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdp
c3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKDApKSwgcmVnVDApOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5vdENlbGwocmVn
VDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgcmVnVDApOwotICAgICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRhZGF0YS5tX2NhbGxM
aW5rSW5mby5tX2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwor
ICAgICAgICBzdG9yZTMyKHJlZ1QwLCBhcnJheVByb2ZpbGVGb3IobWV0YWRhdGEsIGNoZWNrcG9p
bnQpLmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgIGRvbmUubGluayh0
aGlzKTsKICAgICB9CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICog
c2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJl
Z2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
YXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzKSwgQWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogfQogCiAKQEAgLTIwNyw3ICsyMTAsNyBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVu
c2lnbmVkIGNhbGxMaW5rSW5mb0luZAogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gT3A6Om9w
Y29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2FsbGVlOworICAgIFZpcnR1YWxS
ZWdpc3RlciBjYWxsZWUgPSBjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVj
a3BvaW50KCkpOwogCiAgICAgLyogQ2FsbGVyIGFsd2F5czoKICAgICAgICAgLSBVcGRhdGVzIGNh
bGxGcmFtZVJlZ2lzdGVyIHRvIGNhbGxlZSBjYWxsRnJhbWUuCkBAIC0yMzQsOSArMjM3LDggQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1
bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxl
ZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAgICAgc3RvcmU2NChyZWdUMCwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkp
OwogCi0gICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpIHsKKyAgICBpZiAoY29tcGls
ZUNhbGxFdmFsKGJ5dGVjb2RlKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIERhdGFM
YWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIEp1bXAgc2xvd0Nhc2Ug
PSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRGdW5j
dGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKQEAgLTM4MCw2ICszODIsMTg0IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29u
c3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6
IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdzsKKyAgICAgICAgY2FzZSBXaWRl
MTY6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNjsKKyAgICAgICAgY2FzZSBX
aWRlMzI6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMjsKKyAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7
CisgICAgc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9uKT4oaW5zdHJ1Y3Rp
b24sICZtZXRhZGF0YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayh0cnlGYXN0
RnVuY3Rpb24pOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0
ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0b3JP
cGVuPihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBjaGVja3BvaW50
UmVhY2hlZCgpOworICAgIC8vIGNhbGwgcmVzdWx0IChpdGVyYXRvcikgaXMgaW4gcmVnVDAKKwor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJnZtKCkucHJvcGVydHlOYW1lcy0+bmV4dDsK
KyAgICAKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOworCisgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwor
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9nZXRCeUlkcy5hcHBl
bmQoZ2VuKTsKKworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbmV4
dCk7CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0
aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90
Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIG5leHRWUmVnID0gYnl0ZWNvZGUubV9uZXh0OworICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisK
KyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4
KytdOworICAgIAorICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgewor
ICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFy
cm93OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3c7CisgICAgICAgIGNhc2Ug
V2lkZTE2OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTY7CisgICAgICAgIGNh
c2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzI7CisgICAgICAg
IGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9
KSgpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIHJlZ1Qw
KTsKKyAgICBKdW1wIGdlbmVyaWNDYXNlID0gYnJhbmNoSWZOb3RFbXB0eShyZWdUMCk7CisgICAg
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9uKT4oaW5zdHJ1Y3Rpb24sICZt
ZXRhZGF0YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayh0cnlGYXN0RnVuY3Rp
b24pOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBnZW5lcmljQ2FzZS5saW5rKHRoaXMpOworICAgIG9y
OChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YykpLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1v
ZGVzKSk7CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yTmV4dD4oaW5zdHJ1Y3Rpb24sIG1f
Y2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAvLyBj
YWxsIHJlc3VsdCAoeyBkb25lLCB2YWx1ZSB9IEpTT2JqZWN0KSBpbiByZWdUMAorCisgICAgR1BS
UmVnIHZhbHVlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdUMjsK
KyAgICBHUFJSZWcgZG9uZUdQUiA9IHJlZ1QxOworICAgIC8vIGl0ZXJSZXN1bHRHUFIgd2lsbCBn
ZXQgdHJhc2hlZCBieSB0aGUgZmlyc3QgZ2V0IGJ5IGlkIGJlbG93LgorICAgIG1vdmUodmFsdWVH
UFIsIGl0ZXJSZXN1bHRHUFIpOworCisgICAgeworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoaXRlclJlc3VsdEdQUik7CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgcHJlc2VydmVk
UmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKKyAgICAgICAg
cHJlc2VydmVkUmVncy5hZGQodmFsdWVHUFIpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkp
KSwgcHJlc2VydmVkUmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKSks
IEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRh
KTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RvbmUsIGRvbmVH
UFIpOworICAgICAgICBjaGVja3BvaW50UmVhY2hlZCgpOworICAgIH0KKworCisgICAgeworICAg
ICAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gyID0g
cmVnVDM7CisgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkID0gZmFsc2U7CisgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRy
dXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJl
Z1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSk7CisKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdz
KHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3ZhbHVlLCB2YWx1ZUdQUik7CisKKyAgICAgICAgaXRlcmF0aW9uRG9uZS5saW5rKHRo
aXMpOworICAgIH0KKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yTmV4dD4o
aW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgZW1pdEp1bXBT
bG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIHsKKyAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIGRvbmVWUmVnID0gYnl0ZWNvZGUubV9kb25lOworICAgICAgICBHUFJSZWcgaXRlclJl
c3VsdEdQUiA9IHJlZ1QyOworCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAg
ICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJ
Zk5vdENlbGwoaXRlclJlc3VsdEdQUikpOworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5j
aElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworICAg
ICAgICAKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJl
c3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihpZGVudCkucmF3Qml0cygpKTsKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIGNhbGwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRvbmVW
UmVnLCByZWdUMSk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92
YWx1ZSwgcmVnVDApOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVt
cCgpKTsKKworICAgICAgICBub3RPYmplY3QubGluayh0aGlzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgeyAgIAorICAg
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFs
dWVWUmVnID0gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIg
PSByZWdUMDsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3Bl
cnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2Vu
ID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgICAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAg
ICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIH0K
KworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggOTA2OTZjYmVj
MTBlMzkzYjk5NzBmMGViMjAxMThkMjE5NzRjMzUyNS4uZDE0MGFhYzliZTJkNTQwM2QxYmMwZDk5
MTJhZTllMTA1ZjgwZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcApAQCAtMzY2LDYgKzM2NiwyNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dD
YXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAg
IGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BM
QVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit7CisgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCmluZGV4IDdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQuLjI3YTU3
ZjRlZTM2MTY0YWNlOGUzOWYzNjhjZTc2NWJmMTVkZGZjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yNiw3ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2lm
IEVOQUJMRShKSVQpCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAi
Q29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDUsNyArMTA3LDcgQEAgQUxXQVlT
X0lOTElORSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWRUYWlsQ2FsbChDb2RlUHRyPE5vUHRyVGFn
PiB0YXJnZXQpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSgp
CiB7Ci0gICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLmJpdHMoKTsKKyAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZElt
bTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwogICAgIAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGF0IHRo
aXMgaXMgbmVlZGVkLiBKSVRPcGVyYXRpb25zIHRlbmQgdG8gdXBkYXRlIHRoZSB0b3AgY2FsbCBm
cmFtZSBvbgpAQCAtMTgzLDYgKzE4NSwyNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjpoYXNB
bnlTbG93Q2FzZXMoVmVjdG9yPFNsb3dDYXNlRW50cnk+JiBzbG93Q2FzZXMsIFZlY3RvcgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgSklUOjpjaGVja3BvaW50UmVhY2hlZCgp
Cit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhv
ZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwg
c28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0g
Qnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkgKyAxKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9jaGVja3BvaW50TGFiZWxz
LmFkZChtX2J5dGVjb2RlSW5kZXgsIGxhYmVsKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93
VG9Ib3RGb3JDaGVja3BvaW50KEp1bXAganVtcCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJp
bmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBz
ZXQiKTsKKyAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0
byBpdGVyID0gbV9jaGVja3BvaW50TGFiZWxzLmZpbmQobV9ieXRlY29kZUluZGV4KTsKKyAgICBB
U1NFUlQoaXRlciAhPSBtX2NoZWNrcG9pbnRMYWJlbHMuZW5kKCkpOworICAgIGp1bXAubGlua1Rv
KGl0ZXItPnZhbHVlLCB0aGlzKTsKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YWRkU2xv
d0Nhc2UoSnVtcCBqdW1wKQogewogICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJh
dGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0LgpAQCAtMzE5LDcgKzM0MCw3IEBA
IGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShNZXRhZGF0YSYgbWV0YWRh
dGEpCiB7CiAgICAgaWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLm1fcHJvZmlsZSk7CisgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZSh2YWx1ZVByb2ZpbGVGb3IobWV0YWRhdGEsIG1fYnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9m
aWxpbmdTaXRlV2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlw
ZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA3YWUxNTBjYzY2MTA3NjJiYWNjOGJlNDIyMDczYWFk
NjRhYjMxMTkxLi5hNWUyYTI0N2NmMTU0ZGE0NmViMzNkZmJiZjBlMzM2MGQzNmY1NWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzNCw2ICsx
MzQsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vy
cm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBBU1NFUlQodm0udGFyZ2V0TWFj
aGluZVBDRm9yVGhyb3cpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJ
dGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3Mp
OworfQorCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhl
ZmI1YjVhYzk4MGFlZTZjNTUyMzQ0MzdjOTAyODk1ODkwMjI2NjUuLjlmY2M0MWRlYzQ1ODJjOTY1
MjkyMzY1NWRhOGYzMDI2OTVkZjcwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZShW
TSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4
Y2VwdGlvbihWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25U
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNO
b3RPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDb2RlQmxvY2sqKSBXVEZfSU5U
RVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNH
bG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4ZGVhN2YyNzhlNzY2MmU1MDMxNGNlYjliMDgz
MzlmODdiZmRhNDk3Li42ODY4OWU4MzM4MzNiMTU2ZGZjODA5ZDAxMmEwNzk2NzFjNGY3NzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgog
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNoZWNrcG9pbnRPU1JFeGl0U2lkZVN0
YXRlLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIgpAQCAtODIsNiArODMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsgXAogICAgIFZNJiB2
bSA9IGNvZGVCbG9jay0+dm0oKTsgXAogICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOyBcCisgICAgZGF0YUxvZ0xuSWYoTExJTlRfVFJBQ0lORyAmJiBPcHRpb25z
Ojp0cmFjZUxMSW50U2xvd1BhdGgoKSwgIkNhbGxpbmcgc2xvdyBwYXRoICIsIFdURl9QUkVUVFlf
RlVOQ1RJT04pOyBcCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSkKIAogI2lmbmRlZiBOREVCVUcKQEAgLTY5Myw3ICs2OTUsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKIH0KIAogCi1zdGF0aWMgdm9pZCBzZXR1
cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE9wR2V0QnlJ
ZDo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJv
dG90eXBlQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRh
JiBtZXRhZGF0YSwgSlNDZWxsKiBiYXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxs
LT5zdHJ1Y3R1cmUodm0pOwogCkBAIC03NDEsNDQgKzc0MywzOSBAQCBzdGF0aWMgdm9pZCBzZXR1
cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIENvZAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CiAgICAgICAgIGlmIChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgbWV0YWRhdGEuc2V0VW5zZXRNb2RlKHN0cnVjdHVyZSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLnNldFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Quc2xv
dEJhc2UoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVy
ZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiB9CiAKLQotTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV9pZCkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICBMTElOVF9CRUdJTigp
OwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeUlkPigpOwotICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsK
LSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5t
X2Jhc2UpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0
LCBpZGVudCwgc2xvdCk7Ci0gICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZHN0KSA9IHJlc3VsdDsKLSAgICAKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKICAgICBpZiAoIUxMSU5UX0FMV0FZ
U19BQ0NFU1NfU0xPVwogICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKICAgICAgICAgJiYg
c2xvdC5pc0NhY2hlYWJsZSgpCiAgICAgICAgICYmICFzbG90LmlzVW5zZXQoKSkgewogICAgICAg
ICB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAg
IHN3aXRjaCAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSkgeworICAgICAgICAgICAgc3dp
dGNoIChtZXRhZGF0YS5tb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpEZWZh
dWx0OgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlVuc2V0OgotICAgICAgICAg
ICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRNb2Rl
LnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
dW5zZXRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOgotICAgICAgICAgICAgICAgIG9sZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gMDsKQEAgLTc5OSwzNSArNzk2
LDEwMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAg
ICBpZiAoc2xvdC5pc1ZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewog
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUu
Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVX
aXRob3V0Q2FjaGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdp
dGhvdXRDYWNoZSgpOwogCiAgICAgICAgICAgICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUgY2Fj
aGUgZnJvbSBldmVyIGhhcHBlbmluZy4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLmhp
dENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVl
ZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7
Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2Fj
aGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOwogICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hp
bmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFz
ZSgpICE9IGJhc2VWYWx1ZSk7CiAKLSAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQorICAgICAgICAgICAgaWYgKCEoLS1t
ZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCiAgICAgICAgICAgICAgICAgc2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUoZ2xvYmFsT2JqZWN0LCB2bSwgY29kZUJsb2NrLCBwYywgbWV0
YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRl
bnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAg
ICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxl
Lm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOworICAgICAgICAgICAgbWV0
YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VW
YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICB9CiAKLSAgICBMTElOVF9QUk9GSUxFX1ZB
TFVFKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2dldF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeUlkPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworCisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOwor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQpOworfQorCitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck9wZW4+
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwor
ICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9p
dGVyYXRvcik7CisgICAgUmVnaXN0ZXImIG5leHRSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX25leHQpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3Bl
cnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBuZXh0UmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5leHQ+
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwor
ICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1ZSBz
aW5jZSBpdCdzIGVpdGhlciBub3QgbGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUgb3IgaXQncyBnb2lu
ZyB0byBiZSBmaWxsZWQgbGF0ZXIuCisgICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBSZWdpc3RlciYgZG9uZVJl
Z2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CisKKyAgICBp
ZiAoIWl0ZXJhdG9yUmV0dXJuLmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5v
dCBhbiBvYmplY3QuIl9zKSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdl
dEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJv
cGVydHlOYW1lcy0+ZG9uZSwgbWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBkb25lUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2RvbmVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJh
dG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7CisgICAgLy8gV2UgdXNlIG1fdmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJu
IHZhbHVlIHRtcCBzaW5jZSBpdCdzIGVpdGhlciBub3QgbGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUg
b3IgaXQncyBnb2luZyB0byBiZSBmaWxsZWQgbGF0ZXIuCisgICAgUmVnaXN0ZXImIHZhbHVlUmVn
aXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgSlNW
YWx1ZSBpdGVyYXRvclJldHVybiA9IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOworCisgICAgSlNW
YWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0YS5t
X3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICB2
YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayku
bV92YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV9pZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTU2Myw3ICsxNjI4LDcgQEAgaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
Q29kZVNwZWNpYWxpemF0aW9uS2kKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1pbmxpbmUg
U2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgT3AmJiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4ID0gMCkKIHsKICAgICAv
LyBUaGlzIG5lZWRzIHRvOgogICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KQEAgLTE1NzEs
MTYgKzE2MzYsMTYgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICAvLyAtIElmIHBvc3Np
YmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgogICAgIC8vIC0gUmV0dXJuIGEgdHVw
bGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1l
LgogICAgIAotICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX2NhbGxlZSk7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGNhbGxlZUZvcihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAg
ICAgCi0gICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAtIGJ5dGVjb2RlLm1f
YXJndjsKKyAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gc3RhY2tPZmZz
ZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCk7CiAgICAgCi0g
ICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGJ5dGVjb2RlLm1f
YXJnYyk7CisgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsK
ICAgICBjYWxsZWVGcmFtZS0+dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlKSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZXJG
cmFtZShjYWxsRnJhbWUpOwogICAgIAogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKTsKLSAgICByZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5k
LCBjYWxsZWVBc1ZhbHVlLCAmbWV0YWRhdGEubV9jYWxsTGlua0luZm8pOworICAgIHJldHVybiBz
ZXRVcENhbGwoY2FsbGVlRnJhbWUsIGtpbmQsIGNhbGxlZUFzVmFsdWUsICZjYWxsTGlua0luZm9G
b3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2FsbCkKQEAgLTE2MDQsNiArMTY2OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY29uc3RydWN0KQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wQ29uc3RydWN0
PigpLCBDb2RlRm9yQ29uc3RydWN0KSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNs
b3cgb3Blbl9jYWxsIik7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2Vu
ZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSwg
Q29kZUZvckNhbGwsIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKTsKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKworLy8gICAgZGF0
YUxvZ0xuKCJDYWxsaW5nIHNsb3cgbmV4dF9jYWxsIik7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxP
cEl0ZXJhdG9yTmV4dD4oKSwgQ29kZUZvckNhbGwsIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4
dCkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3Jf
dmFyYXJncykKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTk5MCw2ICsyMDc3LDQ0IEBAIHN0
YXRpYyB2b2lkIGhhbmRsZVZhcmFyZ3NDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTR2xvYmFsT2JqZWN0CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2Rl
Lm1fZHN0KSA9IHJlc3VsdDsKIH0KIAorc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JPcGVuQ2hl
Y2twb2ludChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBPcEl0ZXJhdG9yT3BlbiYgYnl0ZWNvZGUpCit7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgpOworICAg
IGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEpTVmFsdWUgbmV4dCA9
IGl0ZXJhdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCkgPSBuZXh0OworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVJ
dGVyYXRvck5leHRDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wSXRlcmF0b3JOZXh0JiBieXRlY29kZSwg
Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUmIHNpZGVTdGF0ZSkKK3sKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdW5zaWduZWQgY2hlY2twb2ludEluZGV4
ID0gc2lkZVN0YXRlLmJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOworCisgICAgYXV0byYgdmFs
dWVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAg
ICBhdXRvIGl0ZXJhdG9yUmVzdWx0T2JqZWN0ID0gc2lkZVN0YXRlLnRtcHNbT3BJdGVyYXRvck5l
eHQ6Om5leHRSZXN1bHRdOworICAgIGF1dG8gbmV4dCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihi
eXRlY29kZS5tX25leHQpLmpzVmFsdWUoKTsgICAgCisKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X01FU1NBR0UobmV4dCwgIldlIHNob3VsZCBub3QgT1NSIGV4aXQgdG8gYSBjaGVja3BvaW50IGZv
ciBmYXN0IGNhc2VzLiIpOworCisgICAgYXV0byYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CisgICAgaWYgKGNoZWNrcG9pbnRJbmRleCA9PSBP
cEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgeworICAgICAgICBkb25lUmVnaXN0ZXIgPSBpdGVyYXRv
clJlc3VsdE9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAg
ICBzY29wZS5yZWxlYXNlKCk7CisgICAgaWYgKGRvbmVSZWdpc3Rlci5qc1ZhbHVlKCkudG9Cb29s
ZWFuKGdsb2JhbE9iamVjdCkpCisgICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBqc1VuZGVmaW5lZCgp
OworICAgIGVsc2UKKyAgICAgICAgdmFsdWVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0
LmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlKTsKK30KKwogaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIHBjKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFjb2RlQmxvY2stPnZtKCkuZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKQEAgLTIwNjYs
NiArMjE5MSwxNSBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfY2hl
Y2twb2ludF9vc3JfZXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZQogICAgICAgICBoYW5kbGVWYXJh
cmdzQ2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcFRhaWxD
YWxsVmFyYXJncz4oKSwgKnNpZGVTdGF0ZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCisgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNr
cG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+
KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7
CisgICAgICAgIGhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LCBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCksICpzaWRlU3RhdGUuZ2V0KCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTIxMDMsNiArMjIzNywxMiBA
QCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfd3JpdGVfYmFycmllcl9zbG93KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU0NlbGwqIGNlbGwpCiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY2VsbCk7CiB9
CiAKK2V4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVl
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVl
KQoreworICAgIGRhdGFMb2dMbihKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKK30KKwogZXh0ZXJu
ICJDIiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgbGxpbnRfY3Jhc2goKQogewogICAgIENS
QVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KaW5kZXggYjU2OTljMzBkMmNkYWZhNGY5M2MzYTlmMDk4MDU3MWM4MTc2N2Mx
YS4uZjlhMzRkYWIzNmQ5ZmE1Mjc1NmExOThiMmQ3NGY3NTJjNTM4YWMyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTAzMiw3ICsxMDMyLDcgQEAgbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5h
bWUsIHNpemUpCiAgICAgc2l6ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lk
ZTMyLCBtYWNybyAoZikgZigpIGVuZCkKIGVuZAogCi1tYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24o
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRy
VGFnKQorbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2Fs
bGVlLCBjYWxsUHRyVGFnKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNs
b29wQ2FsbEpTRnVuY3Rpb24gY2FsbGVlCiAgICAgZWxzZQpAQCAtMTA0NSwxMSArMTA0NSwxMSBA
QCBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUAogICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJ
bnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAogICAgICAgICAjIGNyYXNoZXMu
CiAgICAgICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgICAgICBkaXNwYXRj
aEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgICAgICBkaXNwYXRj
aEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAgICAgZW5kCiAgICAgZGVmaW5lT1NSRXhpdFJldHVybkxh
YmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgp
Ci0gICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAg
ICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiBlbmQKIAogbWFjcm8gcHJlcGFyZUZvclJl
Z3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKQEAgLTEx
MTcsNyArMTExNywxMSBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwg
dGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKIGVu
ZAogCi1tYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorbWFjcm8gc2xvd1BhdGhGb3JDb21t
b25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRo
LCBwcmVwYXJlQ2FsbCkKKyAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVD
YWxsKQorZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gs
IHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBjYWxsQ2FsbFNsb3dQYXRoKAogICAgICAgICBz
bG93UGF0aCwKICAgICAgICAgIyBUaG9zZSBhcmUgcjAgYW5kIHIxCkBAIC0xMTI2LDcgKzExMzAs
NyBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcgogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFt
ZVB0ciwgc3AKICAgICAgICAgICAgIHByZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgU2xv
d1BhdGhQdHJUYWcpCiAgICAgICAgIC5kb250VXBkYXRlU1A6Ci0gICAgICAgICAgICBjYWxsVGFy
Z2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rp
b24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykK
ICAgICAgICAgZW5kKQogZW5kCiAKQEAgLTIwMTYsNyArMjAyMCw3IEBAIG1hY3JvIGRvQ2FsbFZh
cmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgZnJhbWVTbG93
UGF0aCwgc2xvCiAgICAgICAgICAgICBzdWJwIHIxLCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AK
ICAgICAgICAgZW5kCiAgICAgZW5kCi0gICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBz
bG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogZW5kCiAKIApAQCAtMjA3OSw3ICsyMDgzLDcg
QEAgZW5kKQogIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgog
CiBfbGxpbnRfb3BfY2FsbF9ldmFsOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0
aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZhbF9uYXJyb3csCiAgICAgICAgIG5h
cnJvdywKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwODgsNyArMjA5Miw3IEBAIF9sbGludF9v
cF9jYWxsX2V2YWw6CiAgICAgICAgIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50X29w
X2NhbGxfZXZhbF93aWRlMTY6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9y
Q29tbW9uQ2FsbCgKICAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUxNiwKICAgICAgICAgd2lkZTE2
LAogICAgICAgICBPcENhbGxFdmFsLApAQCAtMjA5Nyw3ICsyMTAxLDcgQEAgX2xsaW50X29wX2Nh
bGxfZXZhbF93aWRlMTY6CiAgICAgICAgIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50
X29wX2NhbGxfZXZhbF93aWRlMzI6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRo
Rm9yQ29tbW9uQ2FsbCgKICAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUzMiwKICAgICAgICAgd2lk
ZTMyLAogICAgICAgICBPcENhbGxFdmFsLApAQCAtMjEwNyw3ICsyMTExLDcgQEAgX2xsaW50X29w
X2NhbGxfZXZhbF93aWRlMzI6CiAKIAogY29tbW9uT3AobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9p
bnQsIG1hY3JvICgpIGVuZCwgbWFjcm8gKHNpemUpCi0gICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6
ZSwgT3BDYWxsRXZhbCwgbWFjcm8gKCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENh
bGxFdmFsLCBtX3Byb2ZpbGUsIG1fZHN0LCBtYWNybyAoKQogICAgICAgICBkaXNwYXRjaE9wKHNp
emUsIG9wX2NhbGxfZXZhbCkKICAgICBlbmQpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDgx
ODkxYzIyZTYxODNjODA0MmFiZGZjZThkNDM5MTFhZjQxZjY1NGEuLjc0YzQ4MGRmMjEyMTcxNjU1
MGM1ZmQ0ZjA4NDRhYjExMDhmZGM4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02Nyw3ICs2Nyw3
IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEs
IGRpc3BhdGNoLCBmbikKICAgICAgICAgbW92ZSBwYXlsb2FkLCB0MAogCiAgICAgICAgIG1ldGFk
YXRhKHQ1LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDUsIHQxLCB0
MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0NSwgdDEs
IHQwKQogICAgICAgICBnZXQobV9kc3QsIHQyKQogICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQogICAgICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KQEAgLTc3LDE2ICs3NywxNyBAQCBlbmQKIAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcg
Ynl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KLW1hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCittYWNybyBk
aXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
UEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBC
Ci0gICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgbV9kc3QsIHQzKQorICAgIGdldChzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDMpCiAgICAgc3RvcmVpIHIxLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgcjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMSwgcjApCiAgICAgZGlzcGF0Y2goKQorCiBl
bmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0aW9uKQpAQCAtNjMyLDkgKzYzMyw5IEBAIG1hY3JvIHdy
aXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHNpemUsIGdldCwgdmFsdWVGaWVs
ZE5hbWUpCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQorbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQpCiAgICAgc3RvcmVpIHRh
ZywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgVGFnT2Zm
c2V0W21ldGFkYXRhXQotICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQorICAgIHN0
b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9i
dWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KIGVuZAogCiAKQEAgLTEzNzgsNyArMTM3
OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlk
RGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0
OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERp
cmVjdCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3By
b2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZERpcmVj
dFNsb3c6CkBAIC0xNDAwLDcgKzE0MDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAg
IGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAg
IGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUu
Y2FjaGVkU2xvdFt0NV0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0Miwg
dDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQorICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1
cm4odDAsIHQxKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CkBAIC0xNDEzLDcgKzE0MTQsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0M10sIHQwCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BH
ZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCBJbnQzMlRhZywgdDAp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHQw
KQogICAgIHJldHVybihJbnQzMlRhZywgdDApCiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE0MjEs
NyArMTQyMiw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9hZGkgT3BHZXRCeUlk
OjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMs
IC5vcEdldEJ5SWRTbG93KQogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQx
LCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCBVbmRlZmlu
ZWRUYWcsIDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5k
ZWZpbmVkVGFnLCAwKQogICAgIHJldHVybihVbmRlZmluZWRUYWcsIDApCiAKIC5vcEdldEJ5SWRE
ZWZhdWx0OgpAQCAtMTQzMCw3ICsxNDMxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAg
ICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUu
Y2FjaGVkT2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNd
LCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQy
LCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEpCisg
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJl
dHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRTbG93OgpAQCAtMTQ0MCw3ICsxNDQxLDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJP
U1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0
MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIw
KQogCiBlbmQpCkBAIC0xNTE4LDcgKzE1MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAog
ICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFn
T2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KICAgICAgICAgc3RvcmVpIHJlc3VsdFBheWxvYWQsIFBh
eWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQorICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBheWxvYWQpCiAgICAg
ICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTUyNyw3ICsxNTI4LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmQyaWkgcmVzdWx0LCBzY3JhdGNoMiwgc2NyYXRjaDMK
ICAgICAgICAgc3RvcmVpIHNjcmF0Y2gzLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KICAg
ICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0g
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgc2NyYXRjaDMs
IHNjcmF0Y2gyKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NzIsNyArMTU3
Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0Miwg
dDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkK
ICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNTg1
LDcgKzE1ODYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlW
YWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9zclJldHVyblBvaW50Ogog
ICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQog
ICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDIsIHIx
LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIw
KQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE5NTcsMTAgKzE5NTgsMTAgQEAgbWFj
cm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBh
cmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09m
ZnNldFt0M10KICAgICAgICAgbW92ZSB0Mywgc3AKICAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9u
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50
cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5
UHRyVGFnKQogCiAgICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNh
bGwpCisgICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAg
ICAgZW5kKQogZW5kCiAKQEAgLTIyODgsNyArMjI4OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjCiAgICAgbWFjcm8gZ2V0UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29w
ZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQzCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXQodDMsIHQwLCB0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3Bl
LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5k
CiAKQEAgLTIyOTcsNyArMjI5OCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAg
IGxvYWRwIFRhZ09mZnNldFt0MF0sIHQxCiAgICAgICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdDBd
LCB0MgogICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQxKQotICAgICAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdl
dEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQy
KQogICAgIGVuZAogCkBAIC0yMzA1LDcgKzIzMDYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
YwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0s
IHQzCiAgICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRhZ09m
ZnNldFt0MCwgdDMsIDhdLCB0MQogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92
YXJpYWJsZXMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MywgOF0sIHQyCi0gICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwg
dDIpCiAgICAgZW5kCiAKQEAgLTI1OTQsNiArMjU5NSwxNSBAQCBsbGludE9wV2l0aFJldHVybihv
cF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0YwogICAgIHJldHVybihJbnQzMlRhZywgdDApCiBlbmQpCiAKK2xsaW50T3Aob3BfaXRlcmF0
b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorICAg
IGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9vcGVuLCBzaXplKQorICAgIGJy
ZWFrCitlbmQpCisKK2xsaW50T3Aob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChv
cF9pdGVyYXRvcl9uZXh0LCBzaXplKQorICAgIGJyZWFrCitlbmQpCiAKIGxsaW50T3BXaXRoUHJv
ZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9iYXNlLCB0MCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
aW5kZXggYWUyZTM3NzNmZmRjYzQwNjc0YzdhYWMwYzFkNGZlNmNkMGZiNzg1OS4uODYxMzZlODU3
YzlmNzgyMmIyNDQ2YzYyNmJmZGM3YTNkZmJiMmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTY4LDI2ICs2
OCwyNiBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFk
YXRhLCBkaXNwYXRjaCwgZm4pCiAgICAgZm4obWFjcm8gKHZhbHVlKQogICAgICAgICBtb3ZlIHZh
bHVlLCB0MwogICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHQxLCB0MykKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
bV9wcm9maWxlLCB0MSwgdDMpCiAgICAgICAgIGdldChtX2RzdCwgdDEpCiAgICAgICAgIHN0b3Jl
cSB0MywgW2NmciwgdDEsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAot
bWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0
b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRz
W21ldGFkYXRhXQorbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUs
IG1ldGFkYXRhLCB2YWx1ZSkKKyAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHNbbWV0YWRhdGFdCiBlbmQKIAogIyBBZnRlciBj
YWxsaW5nLCBjYWxsaW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUg
bm90IHVzZWQuCi1tYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRp
c3BhdGNoKQorbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRQQygp
CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2lu
c3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fZHN0LCB0MSkKKyAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIHQxKQogICAgIHN0b3JlcSByMCwgW2NmciwgdDEsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwg
b3Bjb2RlU3RydWN0LCB0MiwgdDEpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIs
IHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCByMCkKICAgICBkaXNwYXRjaCgpCiBlbmQKIApAQCAtMTM0MCw3ICsxMzQwLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3AKICAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93
CiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQog
ICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZERpcmVjdCwgbV9wcm9maWxlLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlk
RGlyZWN0U2xvdzoKQEAgLTEzNDgsNTMgKzEzNDgsNTkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3AKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQorIyBUaGUgYmFzZSBvYmplY3QgaXMgZXhwZWN0ZWQgaW4gdDMKK21hY3JvIHBlcmZvcm1H
ZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxl
TmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQy
LCB0MSkKLSAgICBsb2FkYiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5tb2Rl
W3QyXSwgdDEKLSAgICBnZXQobV9iYXNlLCB0MCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
Q2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRiICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLm1vZGVbdDJdLCB0MQogCiAub3BHZXRC
eUlkRGVmYXVsdDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpEZWZhdWx0
LCAub3BHZXRCeUlkUHJvdG9Mb2FkCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlk
U2xvdwotICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZh
dWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwg
dDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRb
dDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9w
R2V0QnlJZFByb3RvTG9hZDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQ
cm90b0xvYWQsIC5vcEdldEJ5SWRBcnJheUxlbmd0aAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0
YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCi0gICAgYmluZXEgdDMsIHQx
LCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVN
ZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCi0gICAgbG9hZHAgT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90
W3QyXSwgdDMKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRh
dGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKKyAgICBiaW5lcSB0Mywg
dDEsIHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2Fk
TW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICBy
ZXR1cm4odDApCiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3Rl
eHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0
MywgdDAKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKLSAgICBidGl6IHQw
LCBJc0FycmF5LCAub3BHZXRCeUlkU2xvdwotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNr
LCAub3BHZXRCeUlkU2xvdworICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwg
dDIsIHQ1KQorICAgIGJ0aXogdDAsIElzQXJyYXksIHNsb3dMYWJlbAorICAgIGJ0aXogdDAsIElu
ZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFiZWwKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0M10sIHQwLCB0MSkKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAotICAg
IGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93CisgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAg
ICAgb3JxIG51bWJlclRhZywgdDAKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDAp
CisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQw
KQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9t
b2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwg
dDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIFZhbHVl
VW5kZWZpbmVkKQorICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRh
ZGF0YU5hbWUlLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQx
LCBzbG93TGFiZWwKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgVmFsdWVVbmRlZmluZWQpCiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCitl
bmQKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwg
dDApCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRC
eUlkU2xvdykKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFk
YXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQor
CiAub3BHZXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfaWQpCiAgICAgZGlzcGF0Y2goKQpAQCAtMTQwMiw3ICsxNDA4LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0
dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZCwgbV9wcm9maWxlLCB0MiwgcjApCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNDk3LDcg
KzE1MDMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWws
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIG1hY3JvIGZpbmlzaEdldEJ5
VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAg
ICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeVZhbCwgdDUsIHJlc3VsdCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBA
IC0xNTU4LDcgKzE1NjQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAub3BHZXRCeVZh
bERvbmU6CiAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeVZhbCwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCB0MikKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6
CkBAIC0xNTcxLDcgKzE1NzcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9zclJldHVy
blBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFs
LCBzaXplKQogICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZh
bCwgdDUsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBy
MCkKICAgICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE5NDgsNiArMTk1NCwzMCBAQCBtYWNybyBh
cnJheVByb2ZpbGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKIC5kb25lOgogZW5kCiAKK21h
Y3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKQorICAgIG1ldGFkYXRhKHQ1LCB0MCkKKyAgICBnZXRDYWxsZWUodDAp
CisKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MykKKyAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93
CisKKyAgICBnZXRBcmd1bWVudFN0YXJ0KHQzKQorICAgIGxzaGlmdGkgMywgdDMKKyAgICBuZWdw
IHQzCisgICAgYWRkcCBjZnIsIHQzCisgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCisgICAgZ2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXModDIpCisgICAgc3RvcmVQQygpCisgICAgc3RvcmVp
IHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
bW92ZSB0Mywgc3AKKyAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5
UHRyVGFnKQorICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIEpTRW50cnlQdHJUYWcpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2Fs
bChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorCiBt
YWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJl
cGFyZUNhbGwsIHByb2xvZ3VlKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVy
bikKICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTk1NiwyNCArMTk4NiwxOSBAQCBtYWNy
byBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFy
ZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZp
ZWxkTmFtZSwgZHN0KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCi0gICAgICAgIGdldChtX2Nh
bGxlZSwgdDApCi0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgotICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MykKLSAgICAgICAgYnFuZXEg
dDMsIHQyLCAub3BDYWxsU2xvdwotICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9h
cmd2LCB0MykKLSAgICAgICAgbHNoaWZ0aSAzLCB0MwotICAgICAgICBuZWdwIHQzCi0gICAgICAg
IGFkZHAgY2ZyLCB0MwotICAgICAgICBzdG9yZXEgdDIsIENhbGxlZVt0M10KLSAgICAgICAgZ2V0
dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgdDIpCi0gICAgICAgIHN0b3JlUEMoKQotICAg
ICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNl
dFt0M10KLSAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwg
dDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9w
Y29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQ
dHJUYWcpCi0KLSAgICAub3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKKyAgICAgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgICAgIGdldChtX2NhbGxl
ZSwgdDApCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50U3RhcnQoZHN0
KQorICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgZHN0KQorICAg
ICAgICBlbmQKKworICAgICAgICBtYWNybyBnZXRBcmd1bWVudENvdW50KGRzdCkKKyAgICAgICAg
ICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIGRzdCkKKyAgICAgICAgZW5kCisK
KyAgICAgICAgY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBt
X3Byb2ZpbGUsIG1fZHN0LCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBn
ZXRDYWxsZWUsIGdldEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291bnQpCiAgICAgZW5kKQog
ZW5kCiAKQEAgLTIyNzYsNyArMjMwMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zy
b21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAg
bWFjcm8gZ2V0UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRh
dGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQwLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwg
dDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwg
dDIpCiAgICAgICAgIHJldHVybih0MikKICAgICBlbmQKIApAQCAtMjI4NCwxNCArMjMwOSwxNCBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6
TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGxvYWRxIFt0MF0sIHQwCiAgICAg
ICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDApCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgdDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1f
cHJvZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKICAgICBtYWNy
byBnZXRDbG9zdXJlVmFyKCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRh
OjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkcSBKU0xleGljYWxFbnZpcm9ubWVudF92
YXJpYWJsZXNbdDAsIHQxLCA4XSwgdDAKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNj
b3BlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9m
aWxlLCB0NSwgdDApCiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIApAQCAtMjU1MSw3ICsy
NTc2LDYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wcm9maWxlX2NvbnRyb2xfZmxvdywgT3BQ
cm9maWxlQ29udHJvbEZsb3csIG1hY3JvIChzaXplLAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAot
CiBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBzdWJpIDEsIHQw
CkBAIC0yNTY3LDYgKzI1OTEsMTQ3IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xl
bmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAK
IAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3Blbiwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRh
dGEoYTIsIHQ1KQorICAgIG1hY3JvIGZhc3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1BhdGgo
X2l0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RX
aWRlMTYoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lk
ZTE2KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xvd1Bh
dGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUoZmFz
dE5hcnJvdywgZmFzdFdpZGUxNiwgZmFzdFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9wKCkg
ZW5kKQorCisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNzZW1i
bHkgc2luY2UgaXQncyB0aGUgImZhc3QiIGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHByIEl0
ZXJhdGlvbk1vZGU6OkdlbmVyaWMsIC5pdGVyYXRvck9wZW5HZW5lcmljCisgICAgZGlzcGF0Y2go
KQorCisuaXRlcmF0b3JPcGVuR2VuZXJpYzoKKyAgICBtYWNybyBnb3RvR2V0QnlJZENoZWNrcG9p
bnQoKQorICAgICAgICBqbXAgLmdldEJ5SWRTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0
Q2FsbGVlKGRzdCkKKyAgICAgICAgZ2V0KG1fc3ltYm9sSXRlcmF0b3IsIGRzdCkKKyAgICBlbmQK
KworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkKKyAgICAgICAg
Z2V0dShzaXplLCBPcEl0ZXJhdG9yT3BlbiwgbV9zdGFja09mZnNldCwgZHN0KQorICAgIGVuZAor
CisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0KQorICAgICAgICBt
b3ZlIDEsIGRzdAorICAgIGVuZAorCisKKyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX29wZW4s
IF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsLCBPcEl0ZXJhdG9yT3BlbiwgbV9p
dGVyYXRvclByb2ZpbGUsIG1faXRlcmF0b3IsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwg
Z290b0dldEJ5SWRDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudElu
Y2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXRC
eUlkU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVOZXh0QW5kRGlzcGF0Y2godmFsdWUpCisgICAgICAg
IG1vdmUgdmFsdWUsIHQyCisgICAgICAgIGdldChtX25leHQsIHQxKQorICAgICAgICBzdG9yZXEg
dDIsIFtjZnIsIHQxLCA4XQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX2l0ZXJhdG9yLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ss
IC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBl
cihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRv
ck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNw
YXRjaCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdzoKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQorICAgIGRpc3BhdGNo
KCkKKworZW5kKQorCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRl
cmF0b3JOZXh0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
KworICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fbmV4dCwgdDApCisgICAgYnRxbnogdDAsIHQwLCAu
aXRlcmF0b3JOZXh0R2VuZXJpYworICAgIG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0
TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25h
cnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQ
YXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBm
YXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RX
aWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNo
b3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBj
YXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRl
cmF0b3JOZXh0R2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yTmV4dEdlbmVyaWM6
CisgICAgbWFjcm8gZ290b0dldERvbmVDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXREb25l
U3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldCht
X25leHQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhp
c1N0YXJ0KGRzdCkKKyAgICAgICAgZ2V0dShzaXplLCBPcEl0ZXJhdG9yTmV4dCwgbV9zdGFja09m
ZnNldCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlz
Q291bnQoZHN0KQorICAgICAgICBtb3ZlIDEsIGRzdAorICAgIGVuZAorCisgICAgIyBVc2UgbV92
YWx1ZSBzbG90IGFzIGEgdG1wIHNpbmNlIHdlIGFyZSBnb2luZyB0byB3cml0ZSB0byBpdCBsYXRl
ci4KKyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX25leHQsIF9sbGludF9zbG93X3BhdGhfaXRl
cmF0b3JfbmV4dF9jYWxsLCBPcEl0ZXJhdG9yTmV4dCwgbV9uZXh0UmVzdWx0UHJvZmlsZSwgbV92
YWx1ZSwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0RG9uZUNoZWNrcG9pbnQs
IG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRB
cmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldERvbmVTdGFydDoKKyAgICBtYWNybyBz
dG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKGRvbmVWYWx1ZSkKKyAgICAgICAgIyB1c2UgdDAgYmVj
YXVzZSBwZXJmb3JtR2V0QnlJREhlbHBlciB1c3VhbGx5IHB1dHMgdGhlIGRvbmVWYWx1ZSB0aGVy
ZSBhbmQgb2ZmbGluZWFzbSB3aWxsIGVsaWRlIHRoZSBzZWxmIG1vdmUuCisgICAgICAgIG1vdmUg
ZG9uZVZhbHVlLCB0MAorICAgICAgICBnZXQobV9kb25lLCB0MSkKKyAgICAgICAgc3RvcmVxIHQw
LCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgam1wIC5nZXRWYWx1ZVN0YXJ0CisgICAgZW5kCisKKwor
ICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxs
TWFzaywgLmdldERvbmVTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5l
eHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBzaXpl
LCBtZXRhZGF0YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSkKKworLmdldERvbmVTbG93Ogor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUp
CisgICAgYnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1w
b2xpbmUpCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9kb25lLCB0MCkKKworICAgICMgc3RvcmVE
b25lQW5kSm1wVG9HZXRWYWx1ZSBwdXRzIHRoZSBkb25lVmFsdWUgaW50byB0MAorLmdldFZhbHVl
U3RhcnQ6CisgICAgIyBCcmFuY2ggdG8gc2xvdyBpZiBub3QgbWlzYyBwcmltaXRpdmUuCisgICAg
YnRxbnogdDAsIH4weGYsIC5nZXRWYWx1ZVNsb3cKKyAgICBidGl6IHQwLCAweDEsIC5ub3REb25l
CisgICAgZGlzcGF0Y2goKQorCisubm90RG9uZToKKyAgICBtYWNybyBzdG9yZVZhbHVlQW5kRGlz
cGF0Y2godikKKyAgICAgICAgbW92ZSB2LCB0MgorICAgICAgICBnZXQobV92YWx1ZSwgdDEpCisg
ICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDEsIDhdCisgICAgICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KHQwLCAweGJhZGRiMDFlKQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisK
KyAgICAjIFJlbG9hZCB0aGUgbmV4dCByZXN1bHQgdG1wIHNpbmNlIHRoZSBnZXRfYnlfaWQgYWJv
dmUgbWF5IGhhdmUgY2xvYmJlcmVkIHQzLgorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUs
IHQzKQorICAgICMgV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0
IGlzIGEgY2VsbCBoZXJlIHNpbmNlIHdlIHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3Jl
LgorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1l
dGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0
b3JlVmFsdWVBbmREaXNwYXRjaCkKKworLmdldFZhbHVlU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKKyAgICBkaXNwYXRjaCgp
CitlbmQpCisKKwogbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwgT3BH
ZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAg
IGxvYWRWYXJpYWJsZShnZXQsIG1fYmFzZSwgdDEpCiAgICAgZ2V0dShzaXplLCBPcEdldEludGVy
bmFsRmllbGQsIG1faW5kZXgsIHQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vdHJhbnNmb3JtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vdHJhbnNmb3JtLnJiCmluZGV4IDhkNzY3MTE2YzA1NGU1ZWE2NjRlZjQwNjJjNTZmMjYwNWUw
ZDhiNDUuLjU4OWFlMGUwZjNlZDM0YjY2MWU4NTYyYmNhMjk4MDJlYzEwZTViNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKQEAgLTYyOSw3ICs2
MjksNyBAQCBlbmQKIAogY2xhc3MgTm9kZQogICAgIGRlZiB2YWxpZGF0ZQotICAgICAgICByYWlz
ZSAiVW5yZXNvbHZlZCAje2R1bXB9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIHJh
aXNlICJVbnJlc29sdmVkICcje2R1bXB9JyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgogICAgIGVu
ZAogICAgIAogICAgIGRlZiB2YWxpZGF0ZUNoaWxkcmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBiOGRlOTY1NTgyZjdkOTEy
NzEzMzdkNTQzMTkwM2U4MzE4YzI2ZjQ3Li45M2U3ZTczNjAxYmY3M2U3ZGFkNzU0ZWFiYzE1NjNk
OGEwZTg3MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAt
MTUzLDggKzE1NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgUkVUVVJOX1BST0ZJTEVE
KHZhbHVlX18pIFwKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcodmFsdWVfXywgUFJPRklMRV9W
QUxVRShyZXR1cm5WYWx1ZV9fKSkKIAotI2RlZmluZSBQUk9GSUxFX1ZBTFVFKHZhbHVlKSBkbyB7
IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNr
ZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorI2RlZmluZSBQUk9GSUxFX1ZBTFVF
KHZhbHVlX18pIFwKKyAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlX18sIG1fcHJvZmlsZSkKKwor
I2RlZmluZSBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBwcm9maWxlTmFtZSkgZG8geyBcCisgICAg
ICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5hbWUubV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiBzdGF0
aWMgdm9pZCB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCkBAIC05NjUsNiArOTY5LDEyOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlfaWQpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihh
c09iamVjdChiYXNlVmFsdWUpLT5oYXNQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSkpKTsKIH0KIAordGVtcGxhdGU8T3Bjb2Rl
U2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lk
KiBtZXRhZGF0YVB0cikKK3sKKyAgICAvLyBEb24ndCBzZXQgUEM7IHdlIGNhbid0IHRocm93IGFu
ZCBpdCdzIHJlbGF0aXZlbHkgc2xvdy4KKyAgICBCRUdJTl9OT19TRVRfUEMoKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRlcmF0b3JPcGVuLCB3aWR0aD4oKTsK
KyAgICBhdXRvJiBtZXRhZGF0YSA9ICpyZWludGVycHJldF9jYXN0PE9wSXRlcmF0b3JPcGVuOjpN
ZXRhZGF0YSo+KG1ldGFkYXRhUHRyKTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gR0VUX0MoYnl0
ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1ZSgpOworICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRlcmFi
bGUsIG1faXRlcmFibGVQcm9maWxlKTsKKyAgICBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yID0gR0VU
X0MoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcikuanNWYWx1ZSgpOworICAgIGF1dG8mIGl0ZXJh
dG9yID0gR0VUKGJ5dGVjb2RlLm1faXRlcmF0b3IpOworCisgICAgYXV0byBwcmVwYXJlRm9yRmFz
dEFycmF5SXRlcmF0aW9uID0gWyZdIHsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmFycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFRoaXMgaXMg
Y29ycmVjdCBiZWNhdXNlIHdlIGp1c3QgY2hlY2tlZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2
YWxpZC4KKyAgICAgICAgSlNGdW5jdGlvbiogc3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgIGlmICgh
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljOyAKKworICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSAhPSBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAgICAgLy8gV2Ugc2hv
dWxkIGJlIGdvb2QgdG8gZ28uCisgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEu
c2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVy
YXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgICAgIEdFVChieXRlY29kZS5tX25leHQpID0gSlNW
YWx1ZSgpOworICAgICAgICBhdXRvKiBpdGVyYXRlZE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KGl0ZXJhYmxlKTsKKyAgICAgICAgeworICAgICAgICAgICAgaXRlcmF0b3IgPSBKU0FycmF5SXRl
cmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCks
IGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpOworICAgICAgICB9CisgICAg
ICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRlcmF0b3IuanNWYWx1ZSgpLCBtX2l0ZXJhdG9yUHJvZmls
ZSk7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgfTsKKwor
ICAgIGlmIChpdGVyYWJsZS5pbmhlcml0czxKU0FycmF5Pih2bSkpIHsKKyAgICAgICAgaWYgKHBy
ZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkp
CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4g
dG8gdGhlIGJ5dGVjb2RlIHRvIHRyeSBpbiBnZW5lcmljIG1vZGUuCisgICAgbWV0YWRhdGEubV9p
dGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRh
LnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisgICAgcmV0dXJuIGVuY29kZVJl
c3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykp
OworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3RfbmFycm93KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZv
aWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PE5h
cnJvdz4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5
cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAg
IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywgbWV0
YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0PFdpZGUzMj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCit0ZW1wbGF0
ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRv
cl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yTmV4dCwgd2lkdGg+KCk7CisgICAgYXV0
byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yTmV4dDo6TWV0YWRhdGEq
PihtZXRhZGF0YVB0cik7CisKKyAgICBBU1NFUlQoIUdFVChieXRlY29kZS5tX25leHQpLmpzVmFs
dWUoKSk7CisgICAgSlNPYmplY3QqIGl0ZXJhdG9yID0ganNDYXN0PEpTT2JqZWN0Kj4oR0VUKGJ5
dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKSk7OworICAgIEpTQ2VsbCogaXRlcmFibGUgPSBH
RVQoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1ZSgpLmFzQ2VsbCgpOworICAgIGlmIChhdXRv
IGFycmF5SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHZtLCBpdGVy
YXRvcikpIHsKKyAgICAgICAgaWYgKGF1dG8gYXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXkq
Pih2bSwgaXRlcmFibGUpKSB7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmls
ZS5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOworCisgICAgICAgICAg
ICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRl
cmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAg
ICAgICAgICAgYXV0byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRvci0+aW50ZXJuYWxGaWVsZChK
U0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCk7CisgICAgICAgICAgICBpbnQ2NF90IGluZGV4
ID0gaW5kZXhTbG90LmdldCgpLmFzQW55SW50KCk7CisgICAgICAgICAgICBBU1NFUlQoMCA8PSBp
bmRleCAmJiBpbmRleCA8PSBtYXhTYWZlSW50ZWdlcigpKTsKKworICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZTsKKyAgICAgICAgICAgIGJvb2wgZG9uZSA9IGluZGV4ID09IC0xIHx8IGluZGV4ID49
IGFycmF5LT5sZW5ndGgoKTsKKyAgICAgICAgICAgIEdFVChieXRlY29kZS5tX2RvbmUpID0ganNC
b29sZWFuKGRvbmUpOworICAgICAgICAgICAgaWYgKCFkb25lKSB7CisgICAgICAgICAgICAgICAg
Ly8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUgYmVjYXVzZSB3ZSBrbm93IHRoaXMgaXMgYSBw
cmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5kZXhTbG90LnNldFdpdGhvdXRXcml0ZUJhcnJp
ZXIoanNOdW1iZXIoaW5kZXggKyAxKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
YXJyYXktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4
KSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgICAgICAgICAg
UFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgbV92YWx1ZVByb2ZpbGUpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVyZSBiZWNh
dXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAgICAgICAgICAgICBpbmRleFNs
b3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcigtMSkpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV92YWx1ZSkgPSB2YWx1ZTsKKyAgICAgICAgICAg
IHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlv
bk1vZGU6OkZhc3RBcnJheSkpOworICAgICAgICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisKKyAgICAvLyBSZXR1cm4gdG8gdGhlIGJ5dGVjb2RlIHRvIHRyeSBp
biBnZW5lcmljIG1vZGUuCisgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9k
ZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1v
ZGU6OkdlbmVyaWM7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpOworfQorCitTbG93UGF0aFJldHVyblR5
cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAg
IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PE5hcnJvdz4oY2FsbEZyYW1lLCBwYywgbWV0
YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRy
KQoreworICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUzMj4oY2FsbEZyYW1l
LCBwYywgbWV0YWRhdGFQdHIpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X3ZhbCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiNzEzNWUyYjc4NGFiNjhkYjVmNTU4ZmE3ODUwNGNh
YjA5NjQzYzYxLi43YWIwOGEyZmFkNjlhNGIwZDQ1OTIzNzc5Mzc1ZGNkOGIyZWUwYTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
MjQ2LDYgKzI0Niw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfb2JqZWN0
X29yX251bGwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfdmFsKTsKKy8vIFNMT1dfUEFUSF9ISURERU5fREVD
TChpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KTsKKy8vIFNMT1dfUEFUSF9ISURERU5fREVDTChpdGVy
YXRvcl9uZXh0X3RyeV9mYXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVs
X2J5X3ZhbCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N0cmNhdCk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSk7CkBAIC0yODMsNiArMjg1
LDE4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3By
ZWFkKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NwcmVhZCk7CiAKK3RlbXBsYXRlPE9w
Y29kZVNpemUgc2l6ZT4KK2V4dGVybiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJh
dG9yX29wZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lk
KiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRl
cmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9X
X1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiwgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CisKK3RlbXBsYXRlPE9wY29k
ZVNpemUgc2l6ZT4KK2V4dGVybiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9y
X25leHRfdHJ5X2Zhc3QoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBt
ZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3JfbmV4dF90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BB
VEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CisKIHVzaW5nIFNsb3dQYXRoRnVu
Y3Rpb24gPSBTbG93UGF0aFJldHVyblR5cGUoU0xPV19QQVRIICopKENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggMzUzNTkwOTA0OTFjZTBhZmRjZDhiYmI0
Zjg3NWJiMzgxOGMyMmQzZS4uNjg3NGVjNzkwMzc1OGNmOWRmNDQzOWE2MjM5MDYxY2YyNzA1ODkz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCkBAIC0z
MzAsNiArMzMwLDI0IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJp
bnNpYykKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4g
aW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKK3sKKyAgICBz
d2l0Y2ggKGludHJpbnNpYykgeworICAgIGNhc2UgQXJyYXlWYWx1ZXNJbnRyaW5zaWM6CisgICAg
Y2FzZSBUeXBlZEFycmF5VmFsdWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9u
S2luZDo6VmFsdWVzOworICAgIGNhc2UgQXJyYXlLZXlzSW50cmluc2ljOgorICAgIGNhc2UgVHlw
ZWRBcnJheUtleXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpLZXlz
OworICAgIGNhc2UgQXJyYXlFbnRyaWVzSW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheUVu
dHJpZXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorfQorCisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggNmJmZmY5MDA2M2NlMmQ3ZDhhYzIwNTQyZThh
OGQ3ZTE4YzQyYmFlOS4uNzFiYTNhYWQzNTk2OTU2YWZjMmQwYWJmYzZmZDFkZTE3YWYxZWQ1MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTE4Nyw2ICsx
ODcsOCBAQCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIERhdGFWaWV3U2V0RmxvYXQ2
NCwKIH07CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmlu
c2ljKEludHJpbnNpYyk7CisKIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlJdGVyYXRvci5oCmluZGV4IDU5OWU3NzRiMDNkZDNlNWJhNmQ0ZDdmYTM0YmI5OGE5
Njg3ZWM2MDkuLjRmZDBhMTE2NTI1Y2RjNTMyYTUzZDBiOGI1YWNiNTMzODdhOGRiYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCkBAIC02
OCw2ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0
ZWRPYmplY3QpLmdldCgpKTsgfQogCiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBKU1ZhbHVlIGtpbmQp
OworICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkK
KyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmpl
Y3QsIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKSkpOworICAgIH0KICAgICBz
dGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVj
dHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAppbmRleCA0MmM1Mzc3N2NjZGVjNWZjZDRkYjgxMGQxODU0ZmE2MGM5ZjQ4MWVk
Li5kMzAyYjE4NjUzZTM4NDk3ODkyYjYwNWZhMTI4YTk5YzBmOTRmMGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjUsNiArMjI1LDcgQEAgcHVi
bGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
OwogICAgIGJvb2wgaXNGdW5jdGlvbihWTSYpIGNvbnN0OworICAgIGJvb2wgaXNDYWxsYWJsZShW
TSYpIGNvbnN0OwogICAgIGJvb2wgaXNDYWxsYWJsZShWTSYsIENhbGxUeXBlJiwgQ2FsbERhdGEm
KSBjb25zdDsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKSBjb25zdDsKICAgICBib29sIGlz
Q29uc3RydWN0b3IoVk0mLCBDb25zdHJ1Y3RUeXBlJiwgQ29uc3RydWN0RGF0YSYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
aW5kZXggNWIzZmY4YWM0NGU2NTc4YWVlZmY2OWMxY2ZkYmViZWFiYWQ4MGFmNy4uNjJmOWQyNGYx
NWQwNzI0NWFkNzc2YzQ4NzlkMjA3ZjE1NTdjYWFiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC04MjcsNiArODI3LDEzIEBA
IGlubGluZSBib29sIEpTVmFsdWU6OmlzRnVuY3Rpb24oVk0mIHZtKSBjb25zdAogICAgIHJldHVy
biBhc0NlbGwoKS0+aXNGdW5jdGlvbih2bSk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
Q2FsbGFibGUoVk0mIHZtKSBjb25zdAoreworICAgIENhbGxUeXBlIHVudXNlZFR5cGU7CisgICAg
Q2FsbERhdGEgdW51c2VkRGF0YTsKKyAgICByZXR1cm4gaXNDYWxsYWJsZSh2bSwgdW51c2VkVHlw
ZSwgdW51c2VkRGF0YSk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0m
IHZtLCBDYWxsVHlwZSYgY2FsbFR5cGUsIENhbGxEYXRhJiBjYWxsRGF0YSkgY29uc3QKIHsKICAg
ICBpZiAoIWlzQ2VsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRl
eCBlOGIyM2NlNTk5ZDM2MmRjNjVmMzNmOGVmMjNhZDhmNWQ2ZDk3MTFiLi5iMjUwMzU2OWM4NDIy
NTYwMTE0MWE4MGNmNTk4NDhmNWQ2NzNiNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Nhc3QuaApAQCAtNjAsMTMgKzYwLDEzIEBAIGlubGluZSBUbyBqc0Nhc3QoSlNWYWx1ZSBm
cm9tKQogLy8gU3BlY2lmaWMgdHlwZSBvdmVybG9hZHMuCiAjZGVmaW5lIEZPUl9FQUNIX0pTX0RZ
TkFNSUNfQ0FTVF9KU19UWVBFX09WRVJMT0FEKG1hY3JvKSBcCiAgICAgbWFjcm8oSlNJbW11dGFi
bGVCdXR0ZXJmbHksIEpTVHlwZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlLCBKU1R5cGU6OkpT
SW1tdXRhYmxlQnV0dGVyZmx5VHlwZSkgXAotICAgIG1hY3JvKEpTQXJyYXlJdGVyYXRvciwgSlNU
eXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUpIFwK
ICAgICBtYWNybyhKU1N0cmluZ0l0ZXJhdG9yLCBKU1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBl
LCBKU1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNPYmplY3QsIEZp
cnN0T2JqZWN0VHlwZSwgTGFzdE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU0ZpbmFsT2JqZWN0
LCBKU1R5cGU6OkZpbmFsT2JqZWN0VHlwZSwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUpIFwKICAg
ICBtYWNybyhKU0Z1bmN0aW9uLCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkpTRnVu
Y3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxGdW5jdGlvbiwgSlNUeXBlOjpJbnRlcm5h
bEZ1bmN0aW9uVHlwZSwgSlNUeXBlOjpJbnRlcm5hbEZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3Jv
KEpTQXJyYXksIEpTVHlwZTo6QXJyYXlUeXBlLCBKU1R5cGU6OkRlcml2ZWRBcnJheVR5cGUpIFwK
KyAgICBtYWNybyhKU0FycmF5SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwg
SlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlciwg
SlNUeXBlOjpBcnJheUJ1ZmZlclR5cGUsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlKSBcCiAgICAg
bWFjcm8oSlNBcnJheUJ1ZmZlclZpZXcsIEZpcnN0VHlwZWRBcnJheVR5cGUsIExhc3RUeXBlZEFy
cmF5VHlwZSkgXAogICAgIG1hY3JvKEpTUHJvbWlzZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlLCBK
U1R5cGU6OkpTUHJvbWlzZVR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyNmFhMGQ3YzZlZGZhNjNlM2M4ZmY2MjA4ZjYy
NWY1NzAzNjg3M2YwLi4xMTczYWEwODhkY2I3NmMwNGZlNGI1ZmMwYjFhNDkzOTMzOTFlNzgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC01NTksMTAgKzU1OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKICAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAw
LCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBhcnJheVByb3RvRnVu
Y1RvU3RyaW5nLCBOb0ludHJpbnNpYykpOwogICAgICAgICB9KTsKLSAgICBtX2FycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbi5pbml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dmFsdWVz
LnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsK
LSAgICAgICAgfSk7CisgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
cy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7
CiAKICAgICBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewpAQCAtMTc0OSw3ICsxNzQ2
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fcGFyc2VJbnRGdW5jdGlvbi52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlRmxvYXRGdW5jdGlvbi52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9u
LnZpc2l0KHZpc2l0b3IpOwotICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0
aW9uLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b1ZhbHVlc0Z1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbi52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCAyYzI4ZThiZjZjYTRlNzNiNTZjZGEzNzc0YjIxNzY0NzFhOWYw
NTEzLi4wYWNkZmFlZDllOWFkZmMyMzhhYjdjMjM0MmUzNTQ5MzBhYTY5MjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5OSw3ICsy
OTksNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0
aW9uPiBtX3BhcnNlRmxvYXRGdW5jdGlvbjsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbjsKLSAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1
bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
ZXZhbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb247CkBAIC02MDgsNyAr
NjA4LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIHRocm93
VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVG9T
dHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rp
b24uZ2V0KHRoaXMpOyB9Ci0gICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KHRoaXMpOyB9
CisgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBp
dGVyYXRvclByb3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG9j
b2xGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJp
bGl0eUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7
IH0KQEAgLTYxOSw2ICs2MTksNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiogbnVtYmVyUHJv
dG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5n
RnVuY3Rpb24uZ2V0SW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0KICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uZ2V0KCk7IH0KICAg
ICBKU0Z1bmN0aW9uKiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0OworICAgIEpTRnVu
Y3Rpb24qIGFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpOyB9CiAgICAgSlNPYmplY3QqIHJlZ0V4cFBy
b3RvU3ltYm9sUmVwbGFjZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b1N5
bWJvbFJlcGxhY2UuZ2V0KCk7IH0KICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFs
R2V0dGVyKCkgY29uc3Q7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0
ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CmluZGV4IDk5Njk0ZDAxMjdiYWUxY2VhNWNmNjNmYTljZGQ5NzcwMDBjYjdhYTQuLmZiNDBmYzk1
MDc2YWM1MGEwYTM5NGY1OGM1M2ViMWNiZGIwNmZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtMTE5LDYgKzExOSw4IEBAIGNvbnN0ZXhwciBi
b29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihVbnNpZ25l
ZCwgc2hhZG93Q2hpY2tlbkxvZ1NpemUsIDEwMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
VW5zaWduZWQsIHNoYWRvd0NoaWNrZW5NYXhUYWlsRGVsZXRlZEZyYW1lc1NpemUsIDEyOCwgTm9y
bWFsLCBudWxscHRyKSBcCiAgICAgXAorICAgIHYoQm9vbCwgdXNlSXRlcmF0aW9uSW50cmluc2lj
cywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgXAogICAgIHYoQm9vbCwgdXNlT1NMb2cs
IGZhbHNlLCBOb3JtYWwsICJMb2cgZGF0YUxvZygpcyB0byBvc19sb2cgaW5zdGVhZCBvZiBzdGRl
cnIiKSBcCiAgICAgLyogZHVtcERpc2Fzc2VtYmx5IGltcGxpZXMgZHVtcERGR0Rpc2Fzc2VtYmx5
LiAqLyBcCiAgICAgdihCb29sLCBkdW1wRGlzYXNzZW1ibHksIGZhbHNlLCBOb3JtYWwsICJkdW1w
cyBkaXNhc3NlbWJseSBvZiBhbGwgSklUIGNvbXBpbGVkIGNvZGUgdXBvbiBjb21waWxhdGlvbiIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDc2
NGFkMDY1YWMwMTFlMzNjMzIzOGNkOWRhOTUzOWMxNTgzOTIzZTUuLjljMmNlN2FmYWU2ZTM4ZTdh
NjA4MDI2ZjUxNzcxMTBlM2M4NTU2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcApAQCAtMTI2OCw2ICsxMjY4LDggQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0
CiB2b2lkIFN0cnVjdHVyZTo6ZHVtcEJyaWVmKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IENTdHJp
bmcmIHN0cmluZykgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIiUiLCBzdHJpbmcsICI6IiwgY2xh
c3NJbmZvKCktPmNsYXNzTmFtZSk7CisgICAgaWYgKGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdT
aGFwZU1hc2spCisgICAgICAgIG91dC5wcmludCgiLCIsIEluZGV4aW5nVHlwZUR1bXAoaW5kZXhp
bmdUeXBlKCkpKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBDb250ZXh0SGVhZGVyKFByaW50
U3RyZWFtJiBvdXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396613</attachid>
            <date>2020-04-15 21:06:00 -0700</date>
            <delta_ts>2020-04-16 12:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200415210559.patch</filename>
            <type>text/plain</type>
            <size>253822</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YTEwZTlhYWEyOTcyYWMwMGE3NDY3YWFjMmE3ZDE3ZGI5Y2M2ODY1Li43ZDZkMWE4YjFkMzU1NGRi
Y2ZkZGFjMTI3ZGU0MTZiYTYzODc0YjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTggQEAKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5n
L1BoYW50b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikg
Um9sbGluZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dp
dGNoaW5nIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwgZWFjaCB2
YXJpYWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpvcjgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTgpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6b3I4KToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAg
ICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwOgorICAgICAgICAoSlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUHJvZmlsZUZvci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm9maWxlRm9ySW1wbCk6CisgICAgICAgIChKU0M6Omhhc0FycmF5UHJvZmlsZUZv
cik6CisgICAgICAgIChKU0M6OmFycmF5UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVl
UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNWYWx1ZVByb2ZpbGVGb3IpOgorICAg
ICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjpkZXN0aW5hdGlvbkZv
cik6CisgICAgICAgIChKU0M6OmNhbGxlZUZvcik6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzRm9yKToKKyAgICAgICAgKEpTQzo6c3RhY2tPZmZzZXRJblJlZ2lzdGVy
c0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpjYWxsTGlua0luZm9Gb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRy
eUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToK
KyAgICAgICAgKiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OndpZHRoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjpoYXNDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6YXNLbm93bldpZHRoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QmFzZUluc3RydWN0aW9uOjp3aWRlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5z
dHJ1Y3Rpb246OndpZGUzMiBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dXBlclNhbXBsZXIuaC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xl
YXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkNvbnRh
aW5zKToKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAgICAgKEpTQzo6
U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2VuZXJpY0VudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNF
bXB0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JPcGVu
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJdGVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmlj
TmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JHZW5lcmljQ2xvc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAqIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXRUYWlsQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZUbXBzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjp0bXApOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmpzQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp3ZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlTWluTWF4KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2lt
cGxpZmljYXRpb25QaGFzZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6amV0dGlzb25CbG9jayk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Zm9yQWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bnVtYmVyT2ZU
bXBzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXRJ
bmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpsb2NhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmFyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6dmFyaWFibGVBdCk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpT
VmFsdWU6OnNwZWN1bGF0ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogZ2VuZXJhdG9y
L01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mp
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBG
cmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y2hlY2twb2ludFJlYWNoZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBl
Q2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVJdGVyYXRvck9w
ZW5DaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yTmV4dENo
ZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX2NoZWNrcG9pbnRfb3Ny
X2V4aXQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfZHVtcF92YWx1ZSk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93
KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X25hcnJvdyk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2
KToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9JbnRyaW5z
aWMuY3BwOgorICAgICAgICAoSlNDOjppbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyk6CisgICAg
ICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJs
ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAy
MDIwLTA0LTE1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIERpc2FibGUgU3RvcmUtbG9hZCBwYWlyIGF1dG8tdmVjdG9yaXphdGlvbiBmb3IgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDIwNmMxN2FjMjA2NjIzZDc5MWU4YmJjOWM5ZTJkYmVlYmQzOGJkYTQuLmQwYjEwYmUwYzNm
Njk0NzhmMjYxMjIxNzFmZTY5YTY5MmQ5ZTdmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAt
MDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9FbnVtQ2xhc3NP
cGVyYXRvck92ZXJsb2Fkcy5oOgorCiAyMDIwLTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW0lQQyBIYXJkZW5pbmddIE1hY2hNZXNzYWdlOjptZXNzYWdl
U2l6ZSgpIHNob3VsZCB1c2UgY2hlY2tlZCBhcml0aG1ldGljCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0YjhlMTgxY2MyOGUuLmRm
NDI3ZGY1YTAyNzU5MzNiNDk3NzRkYzdlMTAyNjc1YjcwZDA4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMTAzLDYgKzExMDMsOCBAQAogCQk1M0M0RjY2QjIxQjFBNDA5MDAy
RkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUdsb2Jh
bE9iamVjdC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9wY29k
ZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTNDNkZFRUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCAqLzsgfTsKIAkJ
NTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQg
LyogV2FzbUJCUVBsYW4uaCAqLzsgfTsKKwkJNTNEMzU0OTkyNDBEODhCRDAwODk1MEREIC8qIEJ5
dGVjb2RlUHJvZmlsZUZvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5o
ICovOyB9OworCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFk
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Q0
MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNENDQ0REMxREFGMDhB
QjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDQ0REIxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2Fz
bUFkZHJlc3NWYWx1ZS5oICovOyB9OwogCQk1M0UxRjhGODIxNTQ3MTVBMDAwMUREQkMgLyogSlNW
YWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRTFGOEY3MjE1NDcxNDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRTc3N0U0MUU5MkUy
NjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUwMDdDQkVDNCAvKiBX
YXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKQEAgLTM4MTQsNiArMzgxNiw5IEBACiAJCTUz
QzZGRUYwMUU4QUZFMEMwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21PcGNvZGVPcmlnaW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NBNzMwNzFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJC
UVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUJCUVBs
YW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NBNzMwODFFQTUzM0Q4MDA3
NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbUJCUVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNEMzU0OTcyNDBE
ODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlUHJvZmlsZUZvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlY29kZVByb2ZpbGVGb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlVXNlRGVmLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8q
IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTNENDQ0REIxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21BZGRyZXNzVmFsdWUuaDsgcGF0aCA9IGIz
L0IzV2FzbUFkZHJlc3NWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Q0
NDRERDFEQUYwOUEwMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHA7IHBhdGgg
PSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTgyMjAsOCArODIyNSwxMCBAQAogCQkJCUMyRkNBRTBFMTdBOUMyNEUw
MDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwICovLAogCQkJCUMyRkNBRTBG
MTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCAqLywKIAkJCQkw
RjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oICovLAorCQkJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVG
b3IuaCAqLywKIAkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRl
ci5jcHAgKi8sCiAJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0
ZXIuaCAqLywKKwkJCQk1M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYu
Y3BwICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5o
ICovLAogCQkJCUUzNUJBMkMwMjQxQTBFOEMwMEI2NzA4NiAvKiBCeVZhbEluZm8uY3BwICovLAog
CQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLywKQEAgLTgzMTUs
NiArODMyMiw3IEBACiAJCQkJMTRDQzNCQTEyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9u
U3RyZWFtLmNwcCAqLywKIAkJCQkxNENDM0JBMjIxMzhBMjM4MDAyRDU4QjYgLyogSW5zdHJ1Y3Rp
b25TdHJlYW0uaCAqLywKIAkJCQk1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8sCisJCQkJNTNENDFFQzgyM0MwMDgxMDAwQUU5
ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovLAogCQkJCUJDRkQ4QzkwMEVFQjJFRTcw
MDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLAogCQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0
OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLApAQCAtOTEyNyw2ICs5MTM1LDcgQEAKIAkJCQkw
RjJERDgwQjFBQjNEODU4MDBCQkI4RTggLyogQnl0ZWNvZGVLaWxscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJGQ0FFMTMxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZFQzAxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRDM1NDk5
MjQwRDg4QkQwMDg5NTBERCAvKiBCeXRlY29kZVByb2ZpbGVGb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VE
ZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcgQEAKIAkJCQkwRkQyRkQ5NTIw
QjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCBp
biBIZWFkZXJzICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFFOTg0QiAvKiBJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFFNzE2Q0EwMDUyRTQ1
OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwMTEzRDRDMUE4REIw
OTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
REMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUwNzA4MzNjYmY1YmE1ZWJlZjBl
YzguLjE1Mzk3ZThiN2Y0OGE4NGZiMjdmMTFkMmYxMzcxZTBlMmEzMDFjYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC02ODYsNiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1t
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIExvZ2ljYWxJbW1lZGlh
dGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMyKGltbS5tX3ZhbHVlKTsK
KyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBsb2FkOChh
ZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxv
YWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBzdG9y
ZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG9yNjQoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTE2MDMsNyArMTYxNyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVt
cFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgdm9p
ZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCog
YWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgZ2V0
Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICBtX2Fz
c2VtYmxlci5zdHJiKHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCAwKTsKQEAgLTE2MTgsNyArMTYz
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFz
ZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChUcnVzdGVk
SW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBp
bW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgaW1t
OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAgICAgICAgIGlmICghaW1tOC5t
X3ZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggOGM2OTc5YmI5YjJmZGViMDRjYTAyNmU3NjZkMjA4
YjczYTA2M2YyZS4uMmExZGRlZGVlMzZkYmUzY2RlNTcyZjQ4NjA1YTQ2NGM4MGI2ZTc4NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjE2Owor
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjg7CiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDMyOwpA
QCAtOTYsNiArOTcsMTIgQEAgcHVibGljOgogICAgICAgICBvcjE2KGltbSwgQWRkcmVzcyhzY3Jh
dGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0s
IEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG9yOChpbW0s
IEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggZmIz
NDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4YzBlOGRlMjM3YjIwMS4uOTQyNjU3YzYyZjA3NDljYTA1
YzRlZWU0ZDY3Yjk1ZmU2NDU1ZDllNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BcnJheVByb2ZpbGUuaApAQCAtMjA3LDEwICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRPdXRPZkJvdW5kcygpIHsgbV9vdXRPZkJvdW5kcyA9IHRydWU7IH0KICAgICBib29sKiBh
ZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCi0g
ICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAg
ICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAgIH0KKyAg
ICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyBtX2xh
c3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsgfQorICAgIHZvaWQgb2JzZXJ2ZVN0cnVj
dHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1
Y3R1cmUtPmlkKCk7IH0KIAogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIHZvaWQgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVj
dHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMWY1NjY5NGNlNzAwZmRlYmUxZmRjYmQwNDRmMmE4
N2QwODhmN2VhMi4uZTI4OGE5OTcyMDA4YmM5NTI5N2Y1OGFmMDk1OWQzZmNkOTQwZGRlMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0z
NCw2ICszNCw3IEBAIHR5cGVzIFsKICAgICA6R2V0QnlWYWxIaXN0b3J5LAogICAgIDpHZXRQdXRJ
bmZvLAogICAgIDpJbmRleGluZ1R5cGUsCisgICAgOkl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKICAg
ICA6SlNDZWxsLAogICAgIDpKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCwKICAgICA6SlNHbG9i
YWxPYmplY3QsCkBAIC0xMTYyLDYgKzExNjMsNTkgQEAgb3AgOmdldF9yZXN0X2xlbmd0aCwKICAg
ICAgICAgbnVtUGFyYW1ldGVyc1RvU2tpcDogdW5zaWduZWQsCiAgICAgfQogCisjIFNlbWFudGlj
YWxseSwgdGhpcyBpcyBpdGVyYXRvciA9IHN5bWJvbEl0ZXJhdG9yKGl0ZXJhYmxlKTsgbmV4dCA9
IGl0ZXJhdG9yLm5leHQ7CisjIEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93ZXZlciwgdGhpcyBo
YXMgc3BlY2lhbCBiZWhhdmlvciB3aGVyZSBuZXh0IGJlY29tZXMgdGhlIGVtcHR5IHZhbHVlLCB3
aGljaAorIyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgaW4gYSBrbm93biBpdGVyYXRpb24gbW9kZSB0
byBvcF9pdGVyYXRvcl9uZXh0Lgorb3AgOml0ZXJhdG9yX29wZW4sCisgICAgYXJnczogeworICAg
ICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0OiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAg
IGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25l
ZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJ
dGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAorICAgICAgICBp
dGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRC
eUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
IH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgc3ltYm9sQ2FsbDogbmlsLAorICAgICAg
ICBnZXROZXh0OiBuaWwsCisgICAgfQorCisjIFNlbWFudGljYWxseSwgdGhpcyBpcyBuZXh0UmVz
dWx0ID0gbmV4dC5AY2FsbChpdGVyYXRvcik7IGRvbmUgPSBuZXh0UmVzdWx0LmRvbmU7IHZhbHVl
ID0gZG9uZSA/IHVuZGVmaW5lZCA6IG5leHRSZXN1bHQudmFsdWU7CitvcCA6aXRlcmF0b3JfbmV4
dCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRvbmU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
dmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYXRvcjogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgfSwKKyAg
ICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAg
Y2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgbmV4dFJlc3VsdFByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVN
ZXRhZGF0YSwKKyAgICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgdmFs
dWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIHZhbHVlUHJvZmls
ZTogVmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAgICBuZXh0UmVzdWx0
OiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgY29tcHV0ZU5l
eHQ6IG5pbCwKKyAgICAgICAgZ2V0RG9uZTogbmlsLAorICAgICAgICBnZXRWYWx1ZTogbmlsLAor
ICAgIH0KKwogb3AgOnlpZWxkLAogICAgIGFyZ3M6IHsKICAgICAgICAgZ2VuZXJhdG9yOiBWaXJ0
dWFsUmVnaXN0ZXIsCkBAIC0xMjkwLDYgKzEzNDQsOCBAQCBvcCA6b3BfZ2V0X2J5X2lkX3JldHVy
bl9sb2NhdGlvbgogb3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfcHV0
X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92YWxfcmV0dXJuX2xvY2F0aW9u
CitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9u
ZXh0X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3YXNt
X2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IGM2
ZWZlMGQ4ZmY2Yzc5ODk2YWZkMDBlMjBjYzQyNzc5ZDNhNGIwYzcuLmQ1ODdlZTAzZjI2ZDhkZmI5
NGQwOGQ0NDIwNDA4Y2FjNTBhMzhlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0yMzEs
NiArMjMxLDEzIEBAIEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1wTGl2ZW5lc3NGb3JD
aGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrCiAgICAgICAgICAgICByZXN1bHQu
c2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAg
ICAgcmVzdWx0LnNldChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVG
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVByb2ZpbGVGb3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYWFjYWNmM2JmZWQxNWM2YzE3Y2FhNmNiMWU5NTgxMjhkNWQyZjA1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
UHJvZmlsZUZvci5oCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcnJheVByb2Zp
bGUuaCIKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJWYWx1ZVByb2Zp
bGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0
YWRhdGE+CitBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0
YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oY2hlY2twb2ludEluZGV4KTsKKyAgICByZXR1cm4gJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZv
Lm1fYXJyYXlQcm9maWxlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRh
PgorYm9vbCBoYXNBcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVu
c2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQcm9maWxlRm9ySW1w
bChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0
ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9yKEJ5dGVjb2RlTWV0
YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJU
KGhhc0FycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CisgICAgcmV0
dXJuICphcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlKiB2YWx1
ZVByb2ZpbGVGb3JJbXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVj
a3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAg
aWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9v
cGVuKSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclBy
b2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0
YWRhdGEubV9uZXh0UHJvZmlsZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNv
ZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0
Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21w
dXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBj
YXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2Zp
bGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFk
YXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIAorICAgICAgICByZXR1cm4gJm1ldGFk
YXRhLm1fcHJvZmlsZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4K
K2Jvb2wgaGFzVmFsdWVQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNp
Z25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckltcGwo
bWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVj
b2RlTWV0YWRhdGE+CitWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFk
YXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVCho
YXNWYWx1ZVByb2ZpbGVGb3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJldHVy
biAqdmFsdWVQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitPcGVyYW5kIGRlc3RpbmF0aW9uRm9yKGNvbnN0
IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4LCBKSVRUeXBlIHR5
cGUgPSBKSVRUeXBlOjpOb25lKQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgp
OworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29w
ZW4pIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBP
cEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuIGJ5dGVjb2RlLm1faXRlcmF0b3I7Cisg
ICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiBieXRlY29kZS5tX25l
eHQ7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRl
Y29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNo
ZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4
dDogeworICAgICAgICAgICAgaWYgKHR5cGUgPT0gSklUVHlwZTo6REZHSklUIHx8IHR5cGUgPT0g
SklUVHlwZTo6REZHSklUKQorICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYW5kOjp0bXAoT3BJ
dGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1f
dmFsdWU7IC8vIFdlIHJldXNlIHZhbHVlIGFzIGEgdGVtcCBiZWNhdXNlIGl0cyBlaXRoZXIgbm90
IHVzZWQgaW4gc3Vic2VxdWVudCBieXRlY29kZXMgb3Igd3JpdHRlbiBhcyB0aGUgdGVtcCBvYmpl
Y3QgLgorICAgICAgICB9CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJl
dHVybiBieXRlY29kZS5tX2RvbmU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZh
bHVlOiByZXR1cm4gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9kc3Q7Cit9CisKKy8vIENhbGwtbGlr
ZSBvcGNvZGUgbG9jYXRpb25zCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorVmlydHVh
bFJlZ2lzdGVyIGNhbGxlZUZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNo
ZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAg
ICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7
CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJv
bENhbGwpOworICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcjsKKyAgICB9
IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4
dCkgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpj
b21wdXRlTmV4dCk7CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgfSBlbHNl
CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2NhbGxlZTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGU+Cit1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0Zvcihjb25z
dCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBV
TlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2Rl
OjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3Bv
aW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4g
MTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRl
cmF0b3JfbmV4dCkgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0
b3JOZXh0Ojpjb21wdXRlTmV4dCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZQorICAg
ICAgICByZXR1cm4gYnl0ZWNvZGUubV9hcmdjOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRl
Y29kZT4KK3B0cmRpZmZfdCBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChjb25zdCBCeXRl
Y29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURf
UEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNv
ZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5k
ZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhYmxlLm9mZnNldCgp
OworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVy
YXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRv
ck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6
ZUluUmVnaXN0ZXJzIC0gYnl0ZWNvZGUubV9pdGVyYXRvci5vZmZzZXQoKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fYXJndjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGVNZXRhZGF0YT4KK0xMSW50Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm9Gb3IoQnl0
ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICByZXR1cm4gbWV0YWRhdGEubV9j
YWxsTGlua0luZm87Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBm
MGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4uYTVhNTA3ZWQyZTkyZGNlZTNmYzE1MWJkZWIy
YTYyNzI3M2MyMjc1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yNTksNiArMjU5LDkgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJ
bnN0cnUKIAogICAgIFVTRVMoT3BZaWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKIAorICAgIFVT
RVMoT3BJdGVyYXRvck9wZW4sIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZSkKKyAgICBVU0VTKE9w
SXRlcmF0b3JOZXh0LCBpdGVyYXRvciwgbmV4dCwgaXRlcmFibGUpCisKICAgICBjYXNlIG9wX25l
d19hcnJheV93aXRoX3NwcmVhZDoKICAgICAgICAgaGFuZGxlTmV3QXJyYXlMaWtlKGluc3RydWN0
aW9uLT5hczxPcE5ld0FycmF5V2l0aFNwcmVhZD4oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4
Niw2ICs0ODksOSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWdu
ZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogCiAgICAgREVGUyhPcENhdGNo
LCBleGNlcHRpb24sIHRocm93blZhbHVlKQogCisgICAgREVGUyhPcEl0ZXJhdG9yT3BlbiwgaXRl
cmF0b3IsIG5leHQpCisgICAgREVGUyhPcEl0ZXJhdG9yTmV4dCwgZG9uZSwgdmFsdWUpCisKICAg
ICBjYXNlIG9wX2VudGVyOiB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVZhcnM7IGkt
LTspCiAgICAgICAgICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXgg
ZDI5ZjYwZTk0MjgyMjU5MTk0Nzc2ODU1N2VhODdhNjU3ZjIzYTYwYi4uOTE1Y2M2MzFkYmQyODQ1
ZWU5MTM4ZTEzOWViNjllOTYzNDE3NTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTQwLDE4ICs0MCwzNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9y
KE9wY29kZUlEIG9wY29kZUlEKQogewotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9w
Y29kZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50czoKKyAgICAgICAgcmV0dXJuIFRhaWxDYWxsVmFyYXJnczsgICAgICAgIAorCisgICAg
Y2FzZSBvcF9jYWxsOgorICAgIGNhc2Ugb3BfY2FsbF9ldmFsOgorICAgIGNhc2Ugb3BfaXRlcmF0
b3Jfb3BlbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgICAgIHJldHVybiBDYWxs
OwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2Nh
bGxfdmFyYXJnczoKICAgICAgICAgcmV0dXJuIENhbGxWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jb25zdHJ1Y3QpCisKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICAgICAgcmV0
dXJuIENvbnN0cnVjdDsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3Mp
CisKKyAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ29uc3Ry
dWN0VmFyYXJnczsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKQorCisgICAgY2Fz
ZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIHJldHVybiBUYWlsQ2FsbDsKLSAgICBBU1NFUlQob3Bj
b2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzKTsKLSAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOworCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIENhbGw7CiB9CiAKIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJ
bmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwCmluZGV4IGYxM2QxNzM0YTAyYzU4YTMyMTc1OTI1ZDI4ODU1YTJhMjYwMDE4MTguLmI5
MGY4MjQ2ZmM2MTExMzc4YWViZWY5MDI1NmYxMTVlZjE3ZTNiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtODEsNiArODEs
MTMgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUIKICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAg
ICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcFRhaWxDYWxsPigpLm1ldGFk
YXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlv
bi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlu
a0luZm87CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAg
ICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRh
ZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0
OTIwYjZhODc4MTU3ZTYxNjBiNjUzZTdhNGU3MzA0YjIuLmRjNDlhZjBkNTNmYjM1OGRmNjIxZjRj
MDQ2N2FjYjEwZDA0MDc4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIu
aCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUHJvZmlsZUZvci5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5j
bHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKQEAgLTU4Myw2ICs1ODQsMjAgQEAgYm9vbCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcENhdGNoKQogICAgICAgICBMSU5LKE9wUHJvZmls
ZUNvbnRyb2xGbG93KQogCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAg
ICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcEl0ZXJhdG9yT3BlbikKKworICAgICAgICAgICAg
bV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAg
ICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BJdGVyYXRvck5leHQpCisKKyAgICAgICAgICAg
IG1fbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgKz0gMzsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CiAgICAg
ICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wUmVzb2x2ZVNjb3BlKQogCkBAIC0xMjI0LDE0
ICsxMjM5LDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkK
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY0MTgKICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGQgb3B0aW1pemF0aW9ucyBmb3Igb3Bf
cmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwgdG8gZG8gbGluayB0
aW1lIHNjb3BlIHJlc29sdXRpb24uCiAKLSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdl
dEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICBhdXRv
IGNsZWFySWZOZWVkZWQgPSBbJl0gKEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1vZGVNZXRhZGF0YSwg
QVNDSUlMaXRlcmFsIG9wTmFtZSkgeworICAgICAgICAgICAgaWYgKG1vZGVNZXRhZGF0YS5tb2Rl
ICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRT
dHJ1Y3R1cmVJRCA9IG1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAg
ICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJD
bGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICBMTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2Fj
aGUobWV0YWRhdGEpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9T
UigpLCAiQ2xlYXJpbmcgIiwgb3BOYW1lLCAiIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAg
ICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOworICAgICAgICB9OworCisgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsKKyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEs
ICJpdGVyYXRvciBvcGVuIl9zKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9tZXRhZGF0YS0+
Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAg
ICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEsICJpdGVyYXRvciBu
ZXh0Il9zKTsKKyAgICAgICAgICAgIGNsZWFySWZOZWVkZWQobWV0YWRhdGEubV92YWx1ZU1vZGVN
ZXRhZGF0YSwgIml0ZXJhdG9yIG5leHQiX3MpOworICAgICAgICB9KTsKKworICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAg
ICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgImdldCBieSBpZCJf
cyk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlk
RGlyZWN0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CkBAIC0xMzI2LDkgKzEzNTQsMjcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICBhdXRvIGNs
ZWFyID0gWyZdICgpIHsKICAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rp
b25zKCkuYXQoc3RkOjpnZXQ8MT4ocGFpci5rZXkpKTsKICAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZSA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwotICAgICAgICAgICAgaWYgKG9wY29kZSA9
PSBvcF9nZXRfYnlfaWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAg
ICAgICBjYXNlIG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsK
LSAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4o
KS5tZXRhZGF0YSh0aGlzKSk7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0
aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEodGhpcykubV9tb2RlTWV0YWRhdGEpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBvcF9p
dGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgaXRlcmF0b3Igb3BlbiBwcm9wZXJ0eSBhY2Nlc3Mu
Iik7CisgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEl0ZXJh
dG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHQ6IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCks
ICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBuZXh0IHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gY2xlYXIgYm90aCBj
YWNoZXMgaGVyZSBidXQgaXQncyBraW5kYSBhbm5veWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIG9u
ZSB0aGlzIGlzIHJlZmVycmluZyB0by4uLgorICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpOworICAg
ICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOwor
ICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRh
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTMwNDEsNiArMzA4NywxMSBAQCBWYWx1ZVBy
b2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRl
Y29kZUluZGV4IGJ5dGVjbwogCiAjdW5kZWYgQ0FTRQogCisgICAgY2FzZSBvcF9pdGVyYXRvcl9v
cGVuOgorICAgICAgICByZXR1cm4gJnZhbHVlUHJvZmlsZUZvcihpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck9wZW4+KCkubWV0YWRhdGEodGhpcyksIGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgp
KTsKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9m
aWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YSh0aGlzKSwg
Ynl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrSW5saW5lcy5oCmluZGV4IDIyZTc2YjE4NWViOWViYTk3ZGU5YmIwODFkNjQxODZiZjU0
Y2U0YWEuLjUzNjIyODkwN2U4NGM0OTMzY2QyOTNkZjM1MDE3YmY3OWRlNzRmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAt
MzksMTIgKzM5LDI0IEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0
IEZ1bmN0b3ImIGZ1bmMpCiAKICAgICBpZiAobV9tZXRhZGF0YSkgewogI2RlZmluZSBWSVNJVChf
X29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOworICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5t
X3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFM
VUVfUFJPRklMRShWSVNJVCkKIAogI3VuZGVmIFZJU0lUCi0gICAgfQorCisgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCisg
ICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBmYWxzZSk7CisgICAg
ICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxl
LCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fZG9uZVByb2ZpbGUsIGZhbHNl
KTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV92YWx1ZVByb2ZpbGUsIGZhbHNlKTsKKyAg
ICAgICAgfSk7CisgICAgfSAgIAogCiB9CiAKQEAgLTY4LDYgKzgwLDEwIEBAIHZvaWQgQ29kZUJs
b2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiAKICN1bmRlZiBW
SVNJVDEKICN1bmRlZiBWSVNJVDIKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRl
cmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFk
YXRhLm1faXRlcmFibGVQcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRleCA5M2YyMjcw
YWNhNjUyYmYxOWMyYzk1NTkxZWRhZTUxNjc3YTI4OGMyLi4yMjJlYjE5NWQxMzA2MTk3NzA2YWZk
MjZiNDgxZjM2MTI3MzcyOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTg2LDYgKzg2LDM2IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3Rh
dHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJ
bmRlCiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogCisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7Cisg
ICAgICAgIEFTU0VSVChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yT3Bl
bjo6Z2V0TmV4dCk7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9w
SXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spOworCisgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgbm90IGp1c3QgYmFpbCBpZiB3ZSBzZWUgYSBnZXRfYnlfaWRfcHJvdG9f
bG9hZC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODAzOQorICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSAhPSBHZXRC
eUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9y
bWF0aW9uLCBmYWxzZSk7CisgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgIGlkZW50aWZpZXIgPSAmdm0u
cHJvcGVydHlOYW1lcy0+bmV4dDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBv
cF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spOworICAgICAgICBp
ZiAoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgPT0gT3BJdGVyYXRvck5leHQ6OmdldERvbmUp
IHsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEubW9kZSAhPSBH
ZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX2RvbmVNb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBpZGVudGlmaWVyID0gJnZtLnByb3BlcnR5TmFtZXMtPmRvbmU7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgPT0gT3BJdGVy
YXRvck5leHQ6OmdldFZhbHVlKTsKKyAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX3ZhbHVlTW9k
ZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIHN0
cnVjdHVyZUlEID0gbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1
Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+dmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDogewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVz
KE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgKaW5kZXggMDg1YWU4ZDE5OTc2Yjg4NmYwMDE5Zjg1ZmE2N2IwMmJlMTRj
ZGE1ZS4uM2Q3MGNkNTQzZWNmYWU5MDIyNTAyOTYwMWEwZDQwNWVjNjcxYjJkMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTMyLDcgKzMyLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBKU09wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcg
T3Bjb2RlSUQgPSA6OkpTQzo6T3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJ
RCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlE
PihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0
PE9wY29kZUlEPihOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGlj
X2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVj
b2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYg
PSBvcF93aWRlMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSBvcF93
aWRlMzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3Ro
cyA9IDo6SlNDOjpvcGNvZGVMZW5ndGhzOwpAQCAtNDEsNyArNDMsOSBAQCBzdHJ1Y3QgSlNPcGNv
ZGVUcmFpdHMgewogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CiAgICAgdXNpbmcgT3Bjb2Rl
SUQgPSBXYXNtT3Bjb2RlSUQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJP
ZkJ5dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1CRVJf
T0ZfV0FTTV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlE
IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5V
TUJFUl9PRl9XQVNNX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZC
eXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEp
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0gd2FzbV93aWRlMTY7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3YXNtX3dpZGUzMjsKICAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gd2FzbU9wY29k
ZUxlbmd0aHM7CkBAIC05OCwxMiArMTAyLDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5h
cnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3aWRlMzI7CiAg
ICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+Cisg
ICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNXaWRlMzI8
VHJhaXRzPigpKQorICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUzMjsKKyAgICAg
ICAgcmV0dXJuIGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUxNiA6IE9wY29k
ZVNpemU6Ok5hcnJvdzsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBK
U09wY29kZVRyYWl0cz4KICAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVz
V2l0aE1ldGFkYXRhOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgorICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29k
ZXNXaXRoQ2hlY2twb2ludHM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRz
ID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3VudCgpIGNvbnN0CiAgICAg
ewpAQCAtMTM3LDYgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUOjpkZWNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykpOwogICAgIH0KIAorICAgIHRl
bXBsYXRlPGNsYXNzIFQsIE9wY29kZVNpemUgd2lkdGgsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bj
b2RlVHJhaXRzPgorICAgIFQgYXNLbm93bldpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVCgoaXM8VCwgVHJhaXRzPigpKSk7CisgICAgICAgIHJldHVybiBUKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdHlwZW5hbWUgVHlwZUJ5U2l6ZTx3aWR0aD46OnVuc2lnbmVkVHlwZSo+KHRoaXMg
KyAod2lkdGggPT0gT3Bjb2RlU2l6ZTo6TmFycm93ID8gMSA6IDIpKSk7CisgICAgfQorCiAgICAg
dGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAg
VCogY2FzdCgpCiAgICAgewpAQCAtMTYxLDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAKICAg
ICAgICAgQVNTRVJUKGlzV2lkZTE2PFRyYWl0cz4oKSk7Ci0gICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTE2Pio+KHRoaXMgKyAxKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KQEAgLTE2OSwxNCArMTk0
LDE2IEBAIHB1YmxpYzoKICAgICB7CiAKICAgICAgICAgQVNTRVJUKGlzV2lkZTMyPFRyYWl0cz4o
KSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6
ZTo6V2lkZTMyPio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgMSk7CisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+
KHRoaXMgKyAxKTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJsaWMgQmFz
ZUluc3RydWN0aW9uPE9wY29kZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoSW5zdHJ1
Y3Rpb24pID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7
CiAKIHN0cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdhc21PcGNv
ZGVJRD4gewogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0gMSwgIlNv
IHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0
aW9uTW9kZU1ldGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0
aW9uTW9kZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkNjkxOTMxYzZjNzk0OGU1NTdlNGY1Njky
M2FlMzQ5MGZlYjllOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIEl0ZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKKyAg
ICBHZW5lcmljID0gMSA8PCAwLAorICAgIEZhc3RBcnJheSA9IDEgPDwgMSwKK307CisKK2NvbnN0
ZXhwciB1aW50OF90IG51bWJlck9mSXRlcmF0aW9uTW9kZXMgPSAyOworCitPVkVSTE9BRF9CSVRX
SVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVSR1JBTFMoSXRlcmF0aW9uTW9k
ZSk7CisKK3N0cnVjdCBJdGVyYXRpb25Nb2RlTWV0YWRhdGEgeworICAgIHVpbnQ4X3Qgc2Vlbk1v
ZGVzIHsgMCB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHNlZW5Nb2Rlcykp
ID09IHNpemVvZihJdGVyYXRpb25Nb2RlKSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAKaW5kZXggMmQxNDNiOWNmNjc0MzA1ZDQwYzkxZWIwYWUzNTEzMzEyNTY5NDQxZi4uYmJlMWY2
N2ZmYmVmZThlOGJiMTM2N2ViNmM3ZWQ2N2NiYWE4YWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTYwLDE0ICs2
MCwzMSBAQCB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRgogICAgIH0KIAogICAgIGF1dG8mIGluc3Ry
dWN0aW9uID0gbV9vd25lci0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZU9mZnNldC5nZXQo
KSk7Ci0gICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlk
PigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpKTsKKyAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5v
cGNvZGVJRCgpKSB7CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVy
LmdldCgpKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9p
dGVyYXRvcl9vcGVuOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShtX293bmVyLmdldCgpKS5tX21vZGVNZXRh
ZGF0YSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7Cisg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0Pigp
Lm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpOworICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hl
KG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlk
Q2FjaGUobWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlk
OjpNZXRhZGF0YSYgbWV0YWRhdGEpCit2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFk
YXRhJiBtZXRhZGF0YSkKIHsKLSAgICAvLyBLZWVwIGhpdENvdW50Rm9yTExJbnRDYWNoaW5nIHZh
bHVlLgotICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhv
dXRDYWNoZSgpOworICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgp
OwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDIyMGZmZjNlM2JmNTQzNDFlOTYx
YzgyZGY4YzRlOGM5MDAwNzM0YmUuLjFkNTk1N2VmZjgxMDkyYTFkYWJkZWU1MDI1Y2FjNWU2ZjM4
Njc4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnN0YWxs
KFZNJik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJ
ZDo6TWV0YWRhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckxMSW50R2V0QnlJZENhY2hlKEdl
dEJ5SWRNb2RlTWV0YWRhdGEmKTsKIAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKaW5kZXggMTg1MWI2M2M3Y2E2YWVmMmZiMzZiZjJmODdlOTJhMTllMGQ0
MGMxOC4uYWE4ODU5YWRkNjI4NjBmZmRhZGI0ZDIyMjg3YzM0YjA3Y2U1YjMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTQ4LDYgKzE0OCw5IEBAIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6Omdl
dE1TQlNldENvbnN0ZXhwcihtCiAgICAgbWFjcm8oT3BUYWlsQ2FsbCkgXAogICAgIG1hY3JvKE9w
Q2FsbEV2YWwpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorICAgIG1hY3JvKE9wSXRlcmF0
b3JPcGVuKSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck5leHQpIFwKKwogCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInR5cGUtbGltaXRzIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZDc2ZDRmYTdiNDZlOThiOWY5
NzAwZGMzODYzMGY0Li45NDY1OGIwOTZiZjE5M2M4N2NmZDcxYTlmNWJkZTE1ZjYxMzMyYTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApA
QCAtMTIwLDYgKzEyMCwxNiBAQCBpbmxpbmUgYm9vbCBpc0FueVNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlKQogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9vbCBpc1N1YnR5cGVTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7
CisgICAgcmV0dXJuICEodmFsdWUgJiB+Y2F0ZWdvcnkpICYmIHZhbHVlOworfQorCitpbmxpbmUg
Ym9vbCBzcGVjdWxhdGlvbkNvbnRhaW5zKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVk
VHlwZSBjYXRlZ29yeSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBjYXRlZ29yeSkgJiYgdmFs
dWU7Cit9CisKIGlubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQogewogICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNDZWxsKSAmJiAhKHZhbHVlICYgflNw
ZWNDZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBl
clNhbXBsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIu
aAppbmRleCA5NjEwZGNlNWNkYmMzZWMwOWNlMzNiMWQ2YmNjNGIzZmY4YTZjM2M4Li5lOWJmOTUz
MWY3YmE1OTU3MzExMGUzMWE3YTQ0Y2QyMjhiNzU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC00OCw2ICs0OCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CiAgICAgfQogCisgICAgdm9pZCBy
ZWxlYXNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvU2FtcGxlKTsKKyAgICAgICAgZ19z
dXBlclNhbXBsZXJDb3VudC0tOworICAgICAgICBtX2RvU2FtcGxlID0gZmFsc2U7CisgICAgfQor
CiBwcml2YXRlOgogICAgIGJvb2wgbV9kb1NhbXBsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDYzZDM2MmNhYzE5ZDQ5Mzk4OTQ3NzdiZWRhN2MwYWMyZDYzNjA2M2YuLjhmZWRlNjJiNTMwZWJk
MTAxZmVkYTYxYWJhYjk0OWEzZjNiMzU5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MDE2LDE0
ICs0MDE2LDE1IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29w
ZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNr
LCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUp
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0
IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2Fs
bEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xU
YWJsZSkKIHsKICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9kZSA/IGZvckxvb3BOb2Rl
LT5pc0ZvckF3YWl0KCkgOiBmYWxzZTsKLSAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgKGlzRm9y
QXdhaXQgJiYgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkpOworICAgIGF1
dG8gc2hvdWxkRW1pdEF3YWl0ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3
YWl0OjpObzsKKyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0aW9uUGFyc2VN
b2RlKHBhcnNlTW9kZSgpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5l
d1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8gZW1pdEdldEFz
eW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3Ioc3ViamVj
dC5nZXQoKSwgbm9kZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gaXNGb3JB
d2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpIDogZW1pdEdl
dEdlbmVyaWNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9
IG5ld0xhYmVsKCk7CkBAIC00MTMwLDcgKzQxMzEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Np
bwogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dCh2
YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlzRm9y
QXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAgZW1p
dEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJh
dG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0QXdhaXQpOwogCiAgICAgICAgICAgICBlbWl0SnVt
cElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdEdldEJ5SWQo
dmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDE0
Myw3ICs0MTQ0LDE0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24o
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAgICBwb3BGaW5h
bGx5Q29udHJvbEZsb3dTY29wZSgpOwogICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpIHsK
ICAgICAgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRy
b2wgZmxvdy4KLSAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBu
b2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAg
ICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hv
dWxkRW1pdEF3YWl0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbWl0TGFiZWwobG9vcERvbmUu
Z2V0KCkpOworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2Rl
LCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
KT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29w
U3ltYm9sVGFibGUpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRyaW5zaWNz
KCkgfHwgaXMzMkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2Fp
dCgpKSkgeworICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1YmplY3ROb2Rl
LCBjYWxsQmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmFibGUgPSBuZXdUZW1w
b3JhcnkoKTsKKyAgICBlbWl0Tm9kZShpdGVyYWJsZS5nZXQoKSwgc3ViamVjdE5vZGUpOworCisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yU3ltYm9sID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhYmxlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wp
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0T3JJbmRleCA9IG5ld1RlbXBvcmFyeSgpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG5ld1RlbXBvcmFyeSgpOworICAgIENh
bGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgbW92ZShhcmdzLnRoaXNS
ZWdpc3RlcigpLCBpdGVyYWJsZS5nZXQoKSk7CisgICAgZW1pdEl0ZXJhdG9yT3BlbihpdGVyYXRv
ci5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIGl0ZXJhdG9yU3ltYm9sLmdldCgpLCBhcmdzLCBu
b2RlKTsKKworICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgIFJlZjxM
YWJlbD4gdHJ5U3RhcnRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5
VmlhVGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBmaW5hbGx5TGFiZWwg
PSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xhYmVsKCk7Cisg
ICAgUmVmPExhYmVsPiBlbmRDYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHZhbHVlLmdl
dCgpLCBqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRv
cidzIGxpZmV0aW1lIG11c3QgYmUgbG9uZ2VyIHRoYW4gSXRlcmF0b3JDbG9zZUNvbnRleHQuCisg
ICAgRmluYWxseUNvbnRleHQgZmluYWxseUNvbnRleHQoKnRoaXMsIGZpbmFsbHlMYWJlbC5nZXQo
KSk7CisgICAgcHVzaEZpbmFsbHlDb250cm9sRmxvd1Njb3BlKGZpbmFsbHlDb250ZXh0KTsKKwor
ICAgIHsKKyAgICAgICAgUmVmPExhYmVsU2NvcGU+IHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJl
bFNjb3BlOjpMb29wKTsKKworICAgICAgICBSZWY8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVs
KCk7CisgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICBlbWl0TGFi
ZWwoKnNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKKyAgICAgICAgZW1pdExvb3BIaW50KCk7CisK
KyAgICAgICAgaWYgKGZvckxvb3BOb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChm
b3JMb29wTm9kZS0+aXNGb3JPZk5vZGUoKSk7CisgICAgICAgICAgICBwcmVwYXJlTGV4aWNhbFNj
b3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJs
ZSk7CisgICAgICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkb25l
ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmdzKCp0
aGlzLCBudWxscHRyLCAwKTsKKyAgICAgICAgICAgIG1vdmUobmV4dEFyZ3MudGhpc1JlZ2lzdGVy
KCksIGl0ZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dChkb25l
LmdldCgpLCB2YWx1ZS5nZXQoKSwgaXRlcmFibGUuZ2V0KCksIG5leHRPckluZGV4LmdldCgpLCBu
ZXh0QXJncywgbm9kZSk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBs
b29wRG9uZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwodHJ5U3RhcnRM
YWJlbC5nZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBwdXNoVHJ5KHRyeVN0YXJ0
TGFiZWwuZ2V0KCksIGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3lu
dGhlc2l6ZWRGaW5hbGx5KTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMsIHZhbHVlLmdldCgpKTsK
KyAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAvLyBJdGVyYXRv
ckNsb3NlIHNlcXVlbmNlIGZvciBhYnJ1cHQgY29tcGxldGlvbnMuCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIEZpbmFsbHkgYmxvY2sgZm9yIHRoZSBlbnVtZXJhdGlvbi4KKyAgICAgICAgICAg
IGVtaXRMYWJlbChmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBwb3BU
cnkodHJ5RGF0YSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBS
ZWY8TGFiZWw+IGZpbmFsbHlCb2R5TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZpbmFsbHlFeGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgp
OworCisgICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZmluYWxseUNvbnRl
eHQuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgZmluYWxseUNvbnRleHQuY29tcGxldGlvblR5
cGVSZWdpc3RlcigpLCB0cnlEYXRhKTsKKyAgICAgICAgICAgIG1vdmUoZmluYWxseUV4Y2VwdGlv
blJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVmFsdWVSZWdpc3Rlcigp
KTsKKyAgICAgICAgICAgIGVtaXRKdW1wKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkpOworCisgICAg
ICAgICAgICBlbWl0TGFiZWwoZmluYWxseUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIG1vdmVF
bXB0eVZhbHVlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAg
IC8vIEZpbmFsbHkgZmFsbCB0aHJvdWdoIGNhc2UuCisgICAgICAgICAgICBlbWl0TGFiZWwoZmlu
YWxseUJvZHlMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICByZXN0b3JlU2NvcGVSZWdpc3Rlcigp
OworCisgICAgICAgICAgICBSZWY8TGFiZWw+IGZpbmFsbHlEb25lID0gbmV3TGFiZWwoKTsKKwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktl
eXdvcmQpOworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisKKyAg
ICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOworICAgICAgICAg
ICAgVHJ5RGF0YSogcmV0dXJuQ2FsbFRyeURhdGEgPSBwdXNoVHJ5KHJldHVybkNhbGxUcnlTdGFy
dC5nZXQoKSwgY2F0Y2hMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkQ2F0Y2gp
OworCisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVs
bHB0cik7CisgICAgICAgICAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
aXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVy
bk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUt
PmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJs
ZUNhbGw6Ok5vKTsKKworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5l
d1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKyAgICAgICAg
ICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5RG9uZS5nZXQo
KSk7CisgICAgICAgICAgICBlbWl0RmluYWxseUNvbXBsZXRpb24oZmluYWxseUNvbnRleHQsIGVu
ZENhdGNoTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBwb3BUcnkocmV0dXJuQ2FsbFRyeURh
dGEsIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAgICAgLy8gQ2F0Y2ggYmxvY2sgZm9y
IGV4Y2VwdGlvbnMgdGhhdCBtYXkgYmUgdGhyb3duIHdoaWxlIGNhbGxpbmcgdGhlIHJldHVybgor
ICAgICAgICAgICAgLy8gaGFuZGxlciBpbiB0aGUgZW51bWVyYXRpb24gZmluYWxseSBibG9jay4g
VGhlIG9ubHkgcmVhc29uIHdlIG5lZWQgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2ggYmxvY2sg
aXMgYmVjYXVzZSBpZiBlbnRlcmVkIHRoZSBhYm92ZSBmaW5hbGx5IGJsb2NrIGR1ZSB0byBhIHRo
cm93bgorICAgICAgICAgICAgLy8gZXhjZXB0aW9uLCB0aGVuIHdlIHdhbnQgdG8gcmUtdGhyb3cg
dGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBvbiBleGl0aW5nCisgICAgICAgICAgICAvLyB0aGUgZmlu
YWxseSBibG9jay4gT3RoZXJ3aXNlLCB3ZSdsbCBsZXQgYW55IG5ldyBleGNlcHRpb24gcGFzcyB0
aHJvdWdoLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChjYXRjaExh
YmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRp
b25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRPdXRPZkxp
bmVGaW5hbGx5SGFuZGxlcihleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUNvbnRleHQu
Y29tcGxldGlvblR5cGVSZWdpc3RlcigpLCByZXR1cm5DYWxsVHJ5RGF0YSk7CisgICAgICAgICAg
ICAgICAgLy8gU2luY2UgdGhpcyBpcyBhIHN5bnRoZXNpemVkIGNhdGNoIGJsb2NrIGFuZCB3ZSdy
ZSBndWFyYW50ZWVkIHRvIG5ldmVyIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byByZXNvbHZl
IGFueSBzeW1ib2xzIGZyb20gdGhlIHNjb3BlLCB3ZSBjYW4gc2tpcCByZXN0b3JpbmcgdGhlIHNj
b3BlCisgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaGVyZS4KKworICAgICAgICAgICAgICAg
IFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdElzRW1wdHkobmV3VGVtcG9yYXJ5KCksIGZpbmFsbHlFeGNlcHRpb25S
ZWdpc3Rlci5nZXQoKSksIHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1vdmUo
ZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7
CisKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAg
ICAgICAgIGVtaXRMYWJlbChlbmRDYXRjaExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgYnJlYWtMYWJlbElzQm91bmQgPSBzY29wZS0+YnJlYWtU
YXJnZXRNYXlCZUJvdW5kKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkKKyAgICAg
ICAgICAgIGVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CisgICAgICAgIHBvcEZpbmFs
bHlDb250cm9sRmxvd1Njb3BlKCk7CisgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgewor
ICAgICAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJv
bCBmbG93LgorICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdl
dCgpLCBub2RlLCBFbWl0QXdhaXQ6Ok5vKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbWl0TGFi
ZWwobG9vcERvbmUuZ2V0KCkpOwpAQCAtNDI2NSw1NiArNDQwNCw2IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNFbXB0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYykKICAgICBPcElzRW1wdHk6OmVtaXQodGhpcywgZHN0LCBzcmMpOwogICAgIHJldHVybiBk
c3Q7CiB9Ci0gICAgCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
TmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0
IGRvRW1pdEF3YWl0KQotewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1l
bnRzKCp0aGlzLCBudWxscHRyKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBpdGVyYXRvcik7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZv
dFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0KLSAgICAg
ICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAgICAgICAgICAgZW1pdEF3
YWl0KGRzdCk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3Qg
PSBuZXdMYWJlbCgpOwotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVt
cG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVtaXRUaHJvd1R5
cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7
Ci0gICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgIH0KLSAgICByZXR1
cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
TmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRB
cmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLmFy
Z3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0
aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5v
ZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZHN0OwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAgICBSZWY8TGFi
ZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRo
b2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMo
KS5yZXR1cm5LZXl3b3JkKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3
VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOwotCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgQ2FsbEFyZ3VtZW50
cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgIG1vdmUocmV0dXJuQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7Ci0gICAgZW1pdENhbGwodmFsdWUuZ2V0KCks
IHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMs
IG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVi
dWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6Olll
cykKLSAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKLQotICAgIGVtaXRKdW1wSWZUcnVl
KGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsK
LSAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpOwotICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKLX0KIAogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6cHVzaEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2Fs
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIpCiB7CkBAIC00NTU1LDcgKzQ2NDQs
MzUgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVySUQqIHZhbHVl
KQogICAgIG1vdmUodmFsdWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAKLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJn
dW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCog
bmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRzJiBp
dGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8g
UmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVy
SUQ+LCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZs
b3c+IGNhbGxGcmFtZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9y
YXJ5KCkpOworCisgICAgaWYgKHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisg
ICAgZW1pdEV4cHJlc3Npb25JbmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwg
bm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgT3BJdGVyYXRvck9wZW46OmVtaXQodGhpcywgaXRlcmF0
b3IsIG5leHRPckluZGV4LCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUudGhpc1JlZ2lzdGVyKCks
IGl0ZXJhYmxlLnN0YWNrT2Zmc2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdp
c3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVudHMm
IGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAv
LyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0
ZXJJRD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVy
Zmxvdz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFk
ZXJTaXplSW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1w
b3JhcnkoKSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisK
KyAgICBlbWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgp
LCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yTmV4dDo6ZW1pdCh0aGlzLCBkb25l
LCB2YWx1ZSwgaXRlcmFibGUsIG5leHRPckluZGV4LCBpdGVyYXRvci50aGlzUmVnaXN0ZXIoKSwg
aXRlcmF0b3Iuc3RhY2tPZmZzZXQoKSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0
b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMo
KS5pdGVyYXRvclN5bWJvbCk7CiAgICAgZW1pdENhbGxJdGVyYXRvcihpdGVyYXRvci5nZXQoKSwg
YXJndW1lbnQsIG5vZGUpOwpAQCAtNDU2Myw2ICs0NjgwLDU3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93
YWJsZUV4CiAgICAgcmV0dXJuIGl0ZXJhdG9yLmdldCgpOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICB7
CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOworICAg
ICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFy
Z3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVu
ZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIGlmIChkb0VtaXRBd2FpdCA9PSBF
bWl0QXdhaXQ6OlllcykKKyAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOworICAgIH0KKyAgICB7
CisgICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNP
YmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICBlbWl0TGFiZWwodHlw
ZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKworUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSkKK3sKKyAgICB7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywg
bnVsbHB0ciwgMSk7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
aXRlcmF0b3IpOworICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rlcigw
KSwgdmFsdWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgp
LCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgIH0KKworICAgIHJl
dHVybiBkc3Q7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVy
aWNDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKK3sKKyAgICBSZWY8TGFiZWw+IGRvbmUg
PSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5L
ZXl3b3JkKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5
KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGRvbmUuZ2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5B
cmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1l
dGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNh
bGw6Ok5vKTsKKworICAgIGlmIChkb0VtaXRBd2FpdCA9PSBFbWl0QXdhaXQ6OlllcykKKyAgICAg
ICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKKworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09i
amVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKKyAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpOworICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKK30KKworCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1l
bnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJv
cGVydHlOYW1lcygpLmFzeW5jSXRlcmF0b3JTeW1ib2wpOwpAQCAtNDU3NSw3ICs0NzQzLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lz
dGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKICAgICBlbWl0SnVtcChhc3luY0l0ZXJhdG9yRm91bmQu
Z2V0KCkpOwogICAgIGVtaXRMYWJlbChhc3luY0l0ZXJhdG9yTm90Rm91bmQuZ2V0KCkpOwogCi0g
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEl0ZXJhdG9yKGFy
Z3VtZW50LCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBl
bWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICBtb3ZlKGl0ZXJhdG9y
LmdldCgpLCBjb21tb25JdGVyYXRvci5nZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
bmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwg
cHJvcGVydHlOYW1lcygpLm5leHQpOwpAQCAtNDYwNCw3ICs0NzcyLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50
LCBUaHJvd2FibGUKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3Jh
cnkoKTsKICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRH
ZXRBc3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVu
dCwgbm9kZSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IHBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IGVtaXRHZXRB
c3luY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoYXJn
dW1lbnQsIG5vZGUpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhvZCA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygp
Lm5leHQpOwogCiAgICAgICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAt
NDY0Miw3ICs0ODEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhy
b3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKIAogICAgICAgICAgICAg
ICAgICAgICBFbWl0QXdhaXQgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlID0gcGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gRW1pdEF3YWl0OjpZ
ZXMgOiBFbWl0QXdhaXQ6Ok5vOwotICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JDbG9z
ZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBu
b2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGVt
aXRUaHJvd1R5cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Ro
cm93JyBtZXRob2QuIl9zKTsKIApAQCAtNDcwMyw3ICs0ODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBU
aHJvd2FibGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW1pdExhYmVsKG5leHRFbGVt
ZW50LmdldCgpKTsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUu
Z2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9k
ZSk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSh2YWx1ZS5n
ZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2Rl
KTsKIAogICAgICAgICAgICAgZW1pdExhYmVsKGJyYW5jaE9uUmVzdWx0LmdldCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IGQ1MzRjZDgyOGFhYzNkMTQwYjRmNDZjODY4NzY4MDkxNGUwZGUzMjUuLjZi
NzA4ZTk2YWIxNDYwZGE2YTBhZTBjYjk1MzY4YTc5ZGNmOGVmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTgyOCw2ICs4MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERl
ZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1l
UmVnaXN0ZXIsCiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVk
IG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKKyAgICAgICAgdm9pZCBlbWl0R2Vu
ZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUs
IEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51
bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogICAgICAg
ICB2b2lkIGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRp
b25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2
b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9k
ZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRyKTsK
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0VGVtcGxhdGVPYmplY3QoUmVnaXN0ZXJJRCog
ZHN0LCBUYWdnZWRUZW1wbGF0ZU5vZGUqKTsKQEAgLTg5OCw5ICs4OTksMTUgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Rlcml2ZWRBcnJheShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwg
c3JjLCBEZXJpdmVkQXJyYXlUeXBlKTsgfQogICAgICAgICB2b2lkIGVtaXRSZXF1aXJlT2JqZWN0
Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yKTsKIAotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVn
aXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKLSAg
ICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCA9IEVtaXRBd2FpdDo6Tm8p
OworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvck9wZW4oUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJl
Z2lzdGVySUQqIG5leHRPckluZGV4LCBSZWdpc3RlcklEKiBzeW1ib2xJdGVyYXRvciwgQ2FsbEFy
Z3VtZW50cyYgaXRlcmFibGUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAg
ICAgIHZvaWQgZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiB2
YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFibGUsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBDYWxs
QXJndW1lbnRzJiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXN5
bmNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgSlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVtaXRBd2Fp
dDo6Tm8pOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhW
YWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShSZWdpc3Rl
cklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRB
d2FpdCA9IEVtaXRBd2FpdDo6Tm8pOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFy
YW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7
CiAKQEAgLTk1MCw5ICs5NTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
UHVzaENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICB2b2lkIGVtaXRQ
b3BDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotCiAgICAgICAgIHZvaWQgZW1pdEF3YWl0KFJlZ2lz
dGVySUQqKTsKICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4
IDU0YzNhOWY4MTlkZTA1NDZkOTQ3ZWY2NzRlZDUwMWFlNDZiMWNiOGEuLjkwZGVhYmU0ZGY5ZmQ4
NjczNzBkZGUxNGU2MzM5YzJiNzkyODJlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ3MzYsNyArNDczNiw3IEBA
IHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dE1ldGhv
ZCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGl0ZXJh
dG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQpOwogCiAgICAgaWYgKG1f
dGFyZ2V0UGF0dGVybnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0
b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SXRl
cmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00NzUyLDcgKzQ3NTIsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJp
bmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJh
dGlvblNraXBwZWQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEl0ZXJhdG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0
KCksIHRoaXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0
KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCks
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ3ODgsNyArNDc4OCw3IEBAIHZv
aWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobG9v
cFN0YXJ0LmdldCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVy
YXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0
aGlzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1
ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00ODA2LDcgKzQ4MDYsNyBAQCB2b2lkIEFycmF5
UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiByaHMpCiAKICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0
ZXJhdG9yQ2xvc2VkLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRl
cmF0b3IuZ2V0KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljQ2xv
c2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0
b3JDbG9zZWQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMGE0YTExZjliNDBl
NmIxM2M1OTY0MjI4ZTQxMTI4OWYxZDllZTg2Ni4uMThkYWUwMDRjNzIyY2Q2ZmRjZjg5MTJiYzVj
NDIxM2E0MzFiMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDM5OCwxMCArNDM5OCw4IEBA
IHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVl
cygKICAgICAgICAgICAgICAgICBmdW5jdG9yKGZvck5vZGUobm9kZSkpOwogICAgICAgICB9CiAg
ICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLm51bWJlck9mQXJndW1lbnRzKCk7IGkt
LTspCi0gICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hcmd1bWVudChpKSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3Rvciht
X3N0YXRlLmxvY2FsKGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5zaXplKCk7IGkt
LTspCisgICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5hdEluZGV4KGkpKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCmluZGV4IDg5N2M3MGRmZmJhMDY2YjY0OWNh
ZmRjYzFlZjA5MzM3NjgxMDRkMTMuLjQzOGUxNmRlODU5NTkyNTRkOTU1NzIxYjZmMDhkYjk1ODE0
ZmQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJz
dHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJz
dHJhY3RTdGF0ZS5oCkBAIC0xMzcsMTEgKzEzNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1ha2VI
ZWFwVG9wRm9yTm9kZShlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyB9CiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1
ZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTG9j
YWxzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxz
KCk7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
LT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCk7IH0KKyAgICBBYnN0cmFjdFZhbHVlJiBhdElu
ZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmF0KGluZGV4
KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kKSB7IHJldHVy
biBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKTsgfQogICAgIEFic3RyYWN0
VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWls
LmxvY2FsKGluZGV4KTsgfQogICAgIEFic3RyYWN0VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRl
eCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGluZGV4KTsgfQorICAg
IEFic3RyYWN0VmFsdWUmIHRtcChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVl
c0F0VGFpbC50bXAoaW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3RydWN0dXJlcygp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCAwOTk3YmFiMDUyNTI2NGU2ZjE2NDg1NDI0MmQ5NGNlM2I1N2UzNmRjLi5jZDI2
NDJlOTU0ZWVmOGZmNmIxZDYyODY3MWYzZjNmMWU4ZDM1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCkBAIC0xNTcsNyArMTU4
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEhlbHBlciBmb3IgbWluIGFuZCBtYXguCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZU1pbk1heChWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CisgICAgYm9vbCBoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9w
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAKICAgICB2b2lkIHJlZmluZVN0
YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0KTsKICAgICAvLyBCbG9j
a3MgY2FuIGVpdGhlciBiZSB0YXJnZXRhYmxlIChpLmUuIGluIHRoZSBtX2Jsb2NrTGlua2luZ1Rh
cmdldHMgb2Ygb25lIElubGluZVN0YWNrRW50cnkpIHdpdGggYSB3ZWxsLWRlZmluZWQgYnl0ZWNv
ZGVCZWdpbiwKQEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEhhbmRsZSBjYWxs
cy4gVGhpcyByZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5saW5pbmcgYW5kIGludHJpbnNp
Y3MuCiAgICAgZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5hbCB9OwogICAg
IFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9u
U2l6ZSwKKyAgICAgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgTm9kZSogY2FsbFRh
cmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IENhbGxMaW5rU3RhdHVzLAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xODgsMjcgKzE4OSwyNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCk7
CiAgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01B
WCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJp
bnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0
cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0g
ICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1l
bnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMm
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1
YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBO
b2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAgICAgdW5zaWduZWQgZ2V0
SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCk7CiAgICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0aW1pemVk
VG9KdW1wLCBJbmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3Vs
dCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVy
IHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUlu
ZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRp
b25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwotICAgIENhbGxPcHRpbWl6YXRpb25S
ZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0
dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFt
ZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgQ2FsbE9wdGltaXphdGlv
blJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCBy
ZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0
aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRl
eCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9u
QmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVz
dWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwg
Y29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3Rl
ciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJ
bmRleCBuZXh0SW5kZXgsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgotICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxv
Y2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1
bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRp
b25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICAvLyBIYW5k
bGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxz
ZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5z
aWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYywgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZURPTUpJVENhbGwo
Tm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOworICAgIGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQg
cmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZh
cmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFu
dCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAg
ICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9wZXJhbmQg
cmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0g
ICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5v
ZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cyk7CisgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRh
cmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0
QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAgICBib29s
IGhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBHZXRCeUlk
VmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihPcGVy
YW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9v
bCBoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1
bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBHZXRCeVN0YXR1cyk7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBCeXRlY29kZT4KQEAgLTMxOCwxNSArMzE5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBnZXRMb2NhbE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAgIE5vZGUqIGdldChWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVyYW5kKQogICAg
IHsKICAgICAgICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLnRv
Q29uc3RhbnRJbmRleCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3Rh
bnRzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUgfHwg
IW1fY29uc3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ29k
ZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7Ci0gICAg
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5k
KTsKLSAgICAgICAgICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJl
cHJlc2VudGF0aW9uID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9u
KG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0
Q29uc3RhbnQob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9j
ay5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1YWxSZWdpc3Rl
cigpKTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXplKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3RhbnRJbmRleCArIDEpOwog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwgbV9jb25z
dGFudHMuc2l6ZSgpOyArK2kpCkBAIC0zNDcsMTAgKzM0OCwxMCBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZy
YW1lKCktPmlzQ2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUgPSBpbmxpbmVDYWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAgICAgICAgICAg
ICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpCisgICAgICAg
ICAgICAgICAgaWYgKG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlNDb25zdGFudChjYWxsZWUp
OwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0g
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZCA9PSBW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewogICAgICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRoaXMgZW5h
YmxlcyBDcmVhdGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQgd2UgZG9u
J3QgaGF2ZSBzdWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1c2VzIG9m
IENhbGxlZSwgc2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUgZnVuY3Rp
b24gaXMgYSBzaW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00MTAsNyArNDEx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNocmluaygwKTsKICAgICB9
CiAKLSAgICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBT
ZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0KE9wZXJhbmQgb3BlcmFu
ZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJh
bmQpLCB2YWx1ZSwgc2V0TW9kZSk7CiAgICAgfQpAQCAtNjkxLDE1ICs2OTIsMjAgQEAgcHJpdmF0
ZToKICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAorICAgIE5vZGUqIGpzQ29u
c3RhbnQoRnJvemVuVmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
YWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1ZSkpOworICAgIH0KKwog
ICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJlIHN0cm9uZ2x5IG1hcmtl
ZC4KICAgICBOb2RlKiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6
ZVN0cm9uZyhjb25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgTm9kZSogd2Vh
a0pTQ29uc3RhbnQoSlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFs
dWUpKSk7CisgICAgICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGNvbnN0YW50
VmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldC9zZXQgdGhl
IHRoaXMgdmFsdWUuCkBAIC04NTAsNyArODU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAg
ICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5
cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZv
IG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwK
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChv
cCA9PSBUYWlsQ2FsbCkgewpAQCAtOTU5LDcgKzk2NSwzNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAgIH0KLSAgICAK
KworICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHF1aXRlIGEgdHJ1ZSBib3R0b20gdmFsdWUgZm9y
IGV4YW1wbGUgYW55IG9iamVjdCBzcGVjdWxhdGlvbiB3aWxsIG5vdyBiZSBPYmplY3R8T3RoZXIg
YXMgdGhpcyByZXR1cm5zIG51bGwuCisgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzIHdoZW4gd2Ug
Y2FuIGFsbG9jYXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAgRnJvemVuVmFsdWUqIGJv
dHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSBzcGVjKQorICAgIHsK
KyAgICAgICAgLy8gSXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgd2hhdCB3ZSByZXR1cm4gaGVy
ZS4KKyAgICAgICAgaWYgKHNwZWMgPT0gU3BlY05vbmUpCisgICAgICAgICAgICByZXR1cm4gbV9n
cmFwaC5mcmVlemUoSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlu
cyhzcGVjLCBTcGVjT3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpz
TnVsbCgpKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjQm9v
bGVhbikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNCb29sZWFuKHRydWUp
KTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjRnVsbE51bWJl
cikpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdW1iZXIoMCkpOworCisg
ICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNCaWdJbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKG1fdm0tPmJpZ0ludENvbnN0YW50T25lLmdldCgp
KTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjU3RyaW5nIHwg
U3BlY1N5bWJvbCkpCisgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUobV92bS0+c21h
bGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworCisgICAgICAgIGlmIChzcGVjdWxhdGlvbkNvbnRh
aW5zKHNwZWMsIFNwZWNDZWxsT3RoZXIgfCBTcGVjT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVy
biBtX2dyYXBoLmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgQVNTRVJUKHNwZWN1bGF0aW9u
Q29udGFpbnMoc3BlYywgU3BlY0VtcHR5KSk7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6
ZShKU1ZhbHVlKCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSBnZXRBcnJheU1vZGUoQXJyYXk6
OkFjdGlvbiBhY3Rpb24pCiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jazsKQEAgLTExNzQsNyArMTIxMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIE9wdGlvbmFsOiBhIGNvbnRpbnVhdGlvbiBibG9jayBmb3IgcmV0
dXJucyB0byBqdW1wIHRvLiBJdCBpcyBzZXQgYnkgZWFybHkgcmV0dXJucyBpZiBpdCBkb2VzIG5v
dCBleGlzdC4KICAgICAgICAgQmFzaWNCbG9jayogbV9jb250aW51YXRpb25CbG9jazsKIAotICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1ZTsKKyAgICAgICAgT3BlcmFuZCBtX3Jl
dHVyblZhbHVlOwogICAgICAgICAKICAgICAgICAgLy8gU3BlY3VsYXRpb25zIGFib3V0IHZhcmlh
YmxlIHR5cGVzIGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrLAogICAgICAg
ICAvLyB3aGljaCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhhdCBwYXN0IERGRyBj
b21waWxhdGlvbnMgb2YgdGhpcwpAQCAtMTE5NCw3ICsxMjMwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIENvZGVCbG9jayosCiAgICAgICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
CiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNs
b3N1cmUgY2FsbC4KLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1ZVZSLAor
ICAgICAgICAgICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCwKQEAgLTEy
NjksNiArMTMwNSw3IEBAIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFy
Z2V0YWJsZUJsb2NrKCkKICAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3
IEJhc2ljQmxvY2soQnl0ZWNvZGVJbmRleCgpLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMs
IG1fbnVtVG1wcywgMSkpOwogICAgIEJhc2ljQmxvY2sqIGJsb2NrUHRyID0gYmxvY2sucHRyKCk7
CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CisgICAgVkVSQk9TRV9M
T0coIkFkZGluZyBuZXcgdW50YXJnZXRhYmxlIGJsb2NrOiAiLCBibG9ja1B0ci0+aW5kZXgsICJc
biIpOwogICAgIHJldHVybiBibG9ja1B0cjsKIH0KIApAQCAtMTMwMSw4ICsxMzM4LDggQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3As
IENhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8Q2FsbE9w
PigpOwotICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpOwotICAg
IGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7
CisgICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fY3VycmVu
dEluZGV4LmNoZWNrcG9pbnQoKSkpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNf
Y2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBtX2N1cnJl
bnRJbmRleC5jaGVja3BvaW50KCkpKTsKIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3Rh
dHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKQEAgLTEzMTAsOCArMTM0
Nyw4IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
Q2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vCiAKICAgICBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7CiAKLSAgICByZXR1
cm4gaGFuZGxlQ2FsbChieXRlY29kZS5tX2RzdCwgb3AsIGtpbmQsIHBjLT5zaXplKCksIGNhbGxU
YXJnZXQsCi0gICAgICAgIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5r
U3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOworICAgIHJldHVybiBoYW5kbGVDYWxsKGRlc3RpbmF0
aW9uRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCksIEpJVFR5cGU6OkRG
R0pJVCksIG9wLCBraW5kLCBwYy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAorICAgICAgICBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2lu
dCgpKSwgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOwog
fQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVz
JiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCkKQEAgLTEzMjEsNyArMTM1OCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNh
bGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsCiB9CiAKIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0
eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSwKKyAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxG
cmFtZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgTm9kZSogY2Fs
bFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pCiB7CkBAIC0xNjM3LDcgKzE2NzQsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxv
Y2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
Cit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBP
cGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0
aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBz
cGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZv
cihraW5kKTsKQEAgLTE2NzEsNyArMTcwOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAg
ICAgc2l6ZV90IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0
aW9ucy5zaXplKCk7CiAKICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKLSAgICAgICAgcmVzdWx0
ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCkudmlydHVhbFJlZ2lzdGVy
KCk7CisgICAgICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1
bHQpOwogCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7
CiAgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4MjMsNyArMTg2MCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBzYXZl
ZEN1cnJlbnRJbnN0cnVjdGlvbjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRp
b25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCBy
ZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxp
bmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9D
aGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFu
ZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFs
UmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5
dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9j
ayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQogewogICAgIFZF
UkJPU0VfTE9HKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxuIik7CiAKQEAg
LTE5MDAsNyArMTkzNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgcmV0dXJuIENh
bGxPcHRpbWl6YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgY29uc3QgQ2FsbExpbmtT
dGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc0FyZ3VtZW50LAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5z
aWduZWQgYXJndW1lbnRzT2Zmc2V0LAogICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kIGtpbmQpCkBAIC0yMDQ0LDcgKzIwODEsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBh
cnNlcjo6Z2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0
YXR1cwogfQogCiBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywK
KyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5r
U3RhdHVzJiBjYWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxS
ZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LAogICAgIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNh
bGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQpAQCAtMjIyMCw3
ICsyMjU3LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBv
cCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBBU1NFUlQob3AgPT0gQXJp
dGhNaW4gfHwgb3AgPT0gQXJpdGhNYXgpOwogCkBAIC0yMjUwLDcgKzIyODcsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5
cGUgb3AsIGludCByZWdpcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQs
IEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICAgICBUaGUgaW50
cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTIzODksMjcgKzI0MjYsMTEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNp
YzogewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgICAgIEl0ZXJhdGlv
bktpbmQga2luZDsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7Ci0gICAgICAgICAg
ICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5
VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpW
YWx1ZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5S2V5
c0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUtleXNJbnRyaW5zaWM6Ci0g
ICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKLSAgICAg
ICAgICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAg
a2luZCA9IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJhdGlvbktpbmRGb3JJbnRy
aW5zaWMoaW50cmluc2ljKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEha2luZCk7CiAK
ICAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVjb21lcyBpbnZh
bGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBp
dCBpbiBGaXh1cC4KLSAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051
bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKyAgICAgICAgICAgIE5vZGUqIGtp
bmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oKmtpbmQp
KSk7CiAKICAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gZXhpc3RpbmcgZXJyb3Igc3Ry
aW5nLgogICAgICAgICAgICAgdW5zaWduZWQgZXJyb3JTdHJpbmdJbmRleCA9IFVJTlQzMl9NQVg7
CkBAIC0zNjQ3LDcgKzM2NjgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
RE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2Niw3ICszNjg3LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LAogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
Citib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1
bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQog
ewogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJh
eUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKQEAgLTM3ODAsNyArMzgwMSw3IEBAIHN0YXRpYyB2b2lk
IGJsZXNzQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01K
SVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0
dGVyKE9wZXJhbmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSog
dGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zODU5LDcgKzM4ODAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNb2R1bGVOYW1lc3BhY2VMb2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgT3Bl
cmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSB0
eXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKCFpc1R5
cGVkVmlldyh0eXBlKSkKQEAgLTM5MTYsNyArMzkzNyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5j
dGlvbigKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
SW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBWRVJCT1NFX0xP
RygiICAgIEhhbmRsaW5nIGNvbnN0YW50IGludGVybmFsIGZ1bmN0aW9uICIsIEpTVmFsdWUoZnVu
Y3Rpb24pLCAiXG4iKTsKQEAgLTY2MDQsMjAgKzY2MjUsNDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgTEFTVF9PUENPREUob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKTsKICAg
ICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJn
czogewogICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGw8T3BDb25zdHJ1Y3RWYXJhcmdzPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIENvbnN0cnVjdFZhcmFyZ3MsIENhbGxNb2RlOjpDb25zdHJ1Y3Qp
OwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9
PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUg
aW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAgICAgIH0KLSAg
ICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAg
ICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKICAgICAgICAg
ICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0ZWNvZGUubV9l
Y21hTW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0
ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YWxsX2V2YWwpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIG9wX2l0
ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAgdWludDMyX3Qgc2Vl
bk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXM7CisKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVtYWluaW5nTW9kZXMgPSBXVEY6OmJpdENvdW50KHNl
ZW5Nb2Rlcyk7CisgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA8PSBu
dW1iZXJPZkl0ZXJhdGlvbk1vZGVzKTsKKyAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ2FzZSA9
IGZhbHNlOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9y
aWdpbigpKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51bGxwdHI7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0
YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1f
Y3VycmVudEluZGV4OworCisgICAgICAgICAgICBOb2RlKiBzeW1ib2xJdGVyYXRvciA9IGdldERp
cmVjdChieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAm
IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3Qgc2V0IHVw
IHRoZSB3YXRjaHBvaW50IGNvbmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5lc3MuCisgICAg
ICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKKworICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBm
cm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gbV9ncmFwaC5mcmVlemUoZ2xvYmFsT2JqZWN0
LT5hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24oKSk7CisgICAgICAgICAgICAg
ICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW5TeW1ib2xJdGVyYXRvckZ1bmN0aW9u
KSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxl
QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRh
cmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGtub3duSXRlckZ1
bmN0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhmcm96ZW5TeW1ib2xJdGVy
YXRvckZ1bmN0aW9uKSwgc3ltYm9sSXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBpc0FycmF5ID0gYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEFycmF5VHlwZSks
IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNo
RGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAg
ICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0QXJyYXlCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFy
Z2V0KGdlbmVyaWNCbG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYW5kUmVzdWx0
ID0gYWRkVG9HcmFwaChBcml0aEJpdEFuZCwgaXNBcnJheSwga25vd25JdGVyRnVuY3Rpb24pOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGJpdCBhbmQgY2Fubm90IGhhdmUg
ZWZmZWN0cyBzbyBpdCdzIG9rIHRvIGV4aXQgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgbV9l
eGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRh
KSwgYW5kUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwor
CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgLy8gVGhlIGJyYW5jaCBhYm92ZSBtYXkgaGF2ZSBtYWRlIGV4aXQgaW52
YWxpZCBidXQgaXQncyBhY3R1YWxseSBvay4KKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAg
IE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJf
dD4oSXRlcmF0aW9uS2luZDo6VmFsdWVzKSkpOworICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJh
dG9yID0gYWRkVG9HcmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8obV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSwg
aXRlcmF0b3IsIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpT
QXJyYXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsKKyAgICAg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRvciwgaXRlcmF0b3IpOworCisgICAgICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwganNDb25zdGFudChKU1ZhbHVlKCkpKTsKKwor
ICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1
biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsK
KyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAg
ICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAm
IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Js
b2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAgICAgICAgICBU
ZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck9wZW4+KGN1cnJl
bnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsK
KyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAg
ICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFi
bGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSog
YnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAg
IGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAg
ICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdE9iamVjdEJs
b2NrKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERh
dGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVyYXRvcikpOworCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOwor
ICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBM
YXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwg
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAg
ICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVz
LmFkZChlcnJvclN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBlcnJvck1lc3Nh
Z2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJy
b3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGlzT2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
YmFzZSA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byogbmV4dEltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUobmV4dEltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUg
dHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAg
ICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVG
b3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2Vs
aW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVu
dENvZGVPcmlnaW4oKSk7CisKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5
dGVjb2RlLm1fbmV4dCwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihuZXh0SW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdl
dEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworCisgICAgICAgICAgICAgICAgICAgIC8v
IERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFn
YWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSAr
IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAg
ICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICghZ2VuZXJhdGVkQ2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9
IGpzQ29uc3RhbnQoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNl
T1NSRXhpdCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fbmV4dCwgcmVzdWx0KTsKKworICAg
ICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBv
dXIgZ2V0IGJ5IGlkIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAg
ICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7Cisg
ICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJy
ZW50SW5kZXggPSBzdGFydEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250
aW51YXRpb247CisgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9pdGVyYXRvcl9vcGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICB1aW50MzJfdCBz
ZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlczsKKworICAg
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9IFdURjo6Yml0Q291bnQo
c2Vlbk1vZGVzKTsKKyAgICAgICAgICAgIEFTU0VSVChudW1iZXJPZlJlbWFpbmluZ01vZGVzIDw9
IG51bWJlck9mSXRlcmF0aW9uTW9kZXMpOworICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDYXNl
ID0gZmFsc2U7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3Vy
cmVudEluZGV4OworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVP
cmlnaW4oKSk7CisgICAgICAgICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
KCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAg
ICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVC
bG9jaygpOworCisgICAgICAgICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6RmFz
dEFycmF5ICYmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlk
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBzZXQgdXAgdGhlIHdhdGNocG9pbnQgY29u
ZGl0aW9ucyB3ZSBuZWVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQpOworCisgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mUmVtYWluaW5nTW9kZXMgIT0gMSkg
eworICAgICAgICAgICAgICAgICAgICBOb2RlKiBoYXNOZXh0ID0gYWRkVG9HcmFwaChJc0VtcHR5
LCBnZXQoYnl0ZWNvZGUubV9uZXh0KSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9j
ayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgQmFz
aWNCbG9jayogZmFzdEFycmF5QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9i
cmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9
IEJyYW5jaFRhcmdldChmYXN0QXJyYXlCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5j
aERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KGdlbmVyaWNCbG9jayk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGhhc05leHQp
OworCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZmFzdEFycmF5QmxvY2s7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRv
cik7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVy
ZSgpKSksIGl0ZXJhdG9yKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzRG9uZUJs
b2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIG5vdERvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxl
QmxvY2soKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
ZG9uZUluZGV4ID0ganNDb25zdGFudChqc051bWJlcigtMSkpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8o
U3BlY0ludDMyT25seSksIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNE
b25lID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIGluZGV4LCBkb25lSW5kZXgpOworCisg
ICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGlzRG9uZUJyYW5jaERhdGEgPSBtX2dyYXBo
Lm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNEb25lQnJhbmNoRGF0
YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNEb25lQmxvY2spOworICAgICAgICAgICAgICAgICAg
ICBpc0RvbmVCcmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2sp
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGlzRG9uZUJy
YW5jaERhdGEpLCBpc0RvbmUpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5
TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJl
YWQpOworICAgICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRo
b3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWUpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3REb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRU
b0dyYXBoKEdldEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNB
cnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQo
Ynl0ZWNvZGUubV9pdGVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYWJs
ZSA9IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
YnV0dGVyZmx5ID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGl0ZXJhYmxlKTsKKyAgICAgICAg
ICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGl0ZXJhYmxlLCBidXR0ZXJmbHkpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIGlu
ZGV4LCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IC8vIFRo
ZSBhYm92ZSBjb21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBlZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5k
ZXggYW5kIGxlbmd0aCBhcmUgaW50MzJzLgorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9
IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hE
YXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KGRvTG9hZEJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwg
aXNEb25lKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBkb0xvYWRCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNo
ZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldElu
dGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9y
OjpGaWVsZDo6SW5kZXgpKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9p
dGVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBvbmUgPSBqc0NvbnN0YW50KGpz
TnVtYmVyKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtYWtlU2Fm
ZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBpbmRleCwgb25lKSk7CisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGZhbHNlTm9kZSA9IGpzQ29uc3RhbnQoanNCb29sZWFuKGZhbHNlKSk7CisKKworICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMg
bm90IHZhcmFyZywgc2luY2UgaXQgb25seSB1c2VzIHRocmVlIGNoaWxkCisgICAgICAgICAgICAg
ICAgICAgIC8vIHNsb3RzLgorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCisgICAgICAgICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGdldEJ5VmFsID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIEdldEJ5VmFs
LCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGdldEJ5VmFsKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgZmFsc2VOb2RlKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5t
X2l0ZXJhdG9yKSwgbmV3SW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBz
ZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0QnlWYWwgYWdhaW4gc28gd2Ug
bW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50
SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudElu
c3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAg
Zmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIFJvbGwgYmFjayB0aGUgY2hlY2twb2ludC4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrID0gaXNEb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHRydWVOb2RlID0ganNDb25z
dGFudChqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5k
ZXggPSBqc0NvbnN0YW50KGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGJvdHRvbU5vZGUgPSBqc0NvbnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUs
IGJvdHRvbU5vZGUpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCB0
cnVlTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVs
ZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJ
bmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIGRvbmVJbmRleCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuCisgICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1
cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAg
ICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZWVu
TW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdl
bmVyaWNCbG9jaykgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7
CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAg
ICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAg
ICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0
PihjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJt
aW5hbCk7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2Nr
ID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIG5vdERvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAg
ICAgICAgICAgIE9wZXJhbmQgbmV4dFJlc3VsdCA9IE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4
dDo6bmV4dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBpdGVyYXRvclJlc3VsdCA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAg
ICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOwor
ICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09i
amVjdEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBC
cmFuY2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBhZGRUb0dyYXBoKElzT2JqZWN0LCBpdGVy
YXRvclJlc3VsdCkpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBj
bGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmlu
ZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8g
aW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOwor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlK
U0NvbnN0YW50LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0
YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlv
bldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9w
SXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gaXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMo
KTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFBy
ZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0Nv
bnN0YW50KGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbih2YWx1ZVByZWRpY2l0aW9uKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byogZG9uZUltcGwgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5k
b25lLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoZG9uZUltcGwpOworCisgICAgICAgICAg
ICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0g
R2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX2RvbmUsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoZG9uZUltcGwpLCBp
ZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gU2V0IGEgdmFsdWUgZm9yIG1fdmFsdWUgc28gd2UgZG9uJ3QgdGhp
bmsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIGJvdHRvbVZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFu
Y2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJy
YW5jaFRhcmdldChjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRh
LT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEpLCBnZXQoYnl0ZWNvZGUu
bV9kb25lKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gbm90RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNh
Y2hlcygpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4dFJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0tPnByb3BlcnR5
TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodmFsdWVJbXBsKTsKKwor
ICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlk
OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRC
eVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVQcmVkaWNp
dGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
Zmllcih2YWx1ZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bj
b2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGlu
dWF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAg
ICAgICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV92YWx1ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9k
b25lLCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdl
IGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUg
bmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2Rl
SW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9u
KSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7
CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX25leHQpOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgICAgICAgICAgRnJv
emVuVmFsdWUqIGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRl
cikpOwpAQCAtNzEwNyw3ICs3NTM1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJl
Z2lzdGVyIGxhdGVyLCBhcyB0aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5n
IHRoZQogICAgICAgICAgICAgLy8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3Bl
IHJlZ2lzdGVyLgogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRTY29wZT4oKTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxs
RnJhbWVTbG90OjpjYWxsZWUpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJl
c3VsdDsKICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHlu
YW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4oKm1fdm0pKQogICAgICAgICAgICAgICAgIHJl
c3VsdCA9IHdlYWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc0ODYsNyArNzkx
NCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUg
Y2FsbC4KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJl
dHVyblZhbHVlLAogICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAg
ICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsCkBAIC03NDk1LDcgKzc5MjMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3Rh
Y2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykK
ICAgICAsIG1fcHJvZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQogICAgICwgbV9jb250aW51YXRp
b25CbG9jayhjb250aW51YXRpb25CbG9jaykKLSAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFs
dWVWUikKKyAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihi
eXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCkKIHsKICAgICB7CkBAIC03NTYxLDcgKzc5
ODksNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRy
eSgKICAgICAgICAgLy8gTWFjaGluZSBjb2RlIGJsb2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChj
b2RlQmxvY2sgPT0gYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJU
KCFjYWxsZWUpOwotICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAg
ICAgICAgQVNTRVJUKCFyZXR1cm5WYWx1ZS5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlu
bGluZUNhbGxGcmFtZVN0YXJ0LmlzVmFsaWQoKSk7CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJh
bWUgPSAwOwpAQCAtNzk3Niw3ICs4NDA0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2Uo
KQogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gbm9kZUFuZEluZGV4ID0gYmxvY2stPmZpbmRUZXJtaW5hbCgpOwotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09IFVu
cmVhY2hhYmxlKTsKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJ
bmRleC5ub2RlLCBub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CiAgICAg
ICAgICAgICAgICAgYmxvY2stPnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IGU3ZjZl
NzYyNDY2OWIzMDFmNWEwMjA0OGMyNWQ0ODE1YzNhMTMzOWQuLjYxMGQ3ZDIwZWY2NTM1ZjdhOGU5
NWJjZWExMjFlZjNiOGFiNDAyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBrZWVwT3BlcmFuZEFs
aXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVP
cmlnaW4gbm9kZU9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgdm9pZCBrZWVw
T3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxv
Y2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAg
ICAgTm9kZSogbGl2ZW5lc3NOb2RlID0gamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
b3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgaWYgKCFsaXZlbmVzc05vZGUpCkBAIC0zMDIsMTEg
KzMwMiw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBqZXR0aXNvbkJsb2NrKEJhc2ljQmxv
Y2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gYm91bmRh
cnlOb2RlT3JpZ2luKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0
aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0g
ICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5k
YXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkp
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFu
ZEFsaXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwotICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRh
cnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9y
SW5kZXgoaSkpOworCiAgICAgICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpl
dHRpc29uZWRCbG9jayk7CiAgICAgfQogICAgIApAQCAtMzUyLDExICszNTAsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgLy8gVGltZSB0byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0
IG5lZWQgdG8gYmUga2VwdCBhbGl2ZSBpbiBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhp
dCBwcmlvciB0byBoaXR0aW5nIHRoZSBmaXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAg
Z29pbmcgZG93biBhCiAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJs
b2NrLgotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpl
dHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkK
LSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRC
bG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoaSkpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNv
bmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAg
ICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJv
dW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0Qmxv
Y2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCBqZXR0aXNvbmVkQmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSkpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlY29uZEJsb2NrLT5waGlzLnNpemUo
KTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDc1OWI3NzgwYTZjYzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjYwMDMzMmYx
OTBmZjhiNDA0MmNkNTQyYWI5NWI1MDUzNmFkN2E3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI3NCw2ICsyNzQsOCBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVf
cmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX2l0ZXJhdG9y
X29wZW46CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRv
d19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6
CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6CkBAIC0zMTEsNiArMzEzLDggQEAgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVk
X2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGlu
ZToKICAgICBjYXNlIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0
b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVy
bl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ug
b3BfY29uc3RydWN0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnc19z
bG93X3JldHVybl9sb2NhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDFhNGRlY2RhMGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYu
LmRiYzgzMWMyZWJlMDg2Zjg3MzY2YTdlNTRhMzVlNTkzYTliMDc4ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjQxMSw3ICsyNDExLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTog
ewotICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFs
bEtpbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5k
ZXggYmY0MzUwYzRjZDE3ZTNkNTAwNjYzOGY1NWFhYzM1YTU2NTI5OTRhMS4uZDljOTc0MjhmZDZh
ZTVlYTUwNmQwNTcyNjczMDIwZGQxYWZmMTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRm9yQWxsS2lsbHMuaApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIGZvckFsbEtpbGxlZE9w
ZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBj
b25zdAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmJhc2VsaW5lQ29kZUJs
b2NrRm9yKGJlZm9yZUlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIGlmIChhZnRlci5ieXRlY29k
ZUluZGV4KCkuY2hlY2twb2ludCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVj
b2RlSW5kZXgoKS5jaGVja3BvaW50KCkgIT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9p
bnQoKSk7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUlu
ZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpLCAiV2hlbiB0
aGUgREZHIGRvZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmln
aW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKKyAgICAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRl
ci5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgfHwgbm9kZUFmdGVyLT5vcCgpID09IEV4aXRPSyB8
fCBub2RlQWZ0ZXItPm9wKCkgPT0gSW52YWxpZGF0aW9uUG9pbnQsICJXaGVuIHRoZSBERkcgZG9l
cyBjb2RlIG1vdGlvbiBpdCBzaG91bGQgY2hhbmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRj
aCB0aGUgc3Vycm91bmRpbmcgYnl0ZWNvZGVzLiIpOwogCiAgICAgICAgICAgICBhdXRvIGxpdmVC
ZWZvcmUgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYmVmb3JlLmJ5dGVj
b2RlSW5kZXgoKSk7CiAgICAgICAgICAgICBhdXRvIGxpdmVBZnRlciA9IHRtcExpdmVuZXNzRm9y
Q2hlY2twb2ludCgqY29kZUJsb2NrLCBhZnRlci5ieXRlY29kZUluZGV4KCkpOwpAQCAtMTAyLDgg
KzEwMiw2IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhZnRlci5ieXRlY29kZUluZGV4KCkuY2hlY2tw
b2ludCgpLCAiVHJhbnNpdGlvbmluZyBhY3Jvc3MgYSBjaGVja3BvaW50IGJ1dCBiZWZvcmUgYW5k
IGFmdGVyIGRvbid0IHNoYXJlIGFuIGlubGluZUNhbGxGcmFtZS4iKTsKLQogICAgIC8vIERldGVj
dCBraWxscyB0aGUgc3VwZXIgY29uc2VydmF0aXZlIHdheTogaXQgaXMga2lsbGVkIGlmIGl0IHdh
cyBsaXZlIGJlZm9yZSBhbmQgZGVhZCBhZnRlci4KICAgICBCaXRWZWN0b3IgbGl2ZUFmdGVyID0g
Z3JhcGgubG9jYWxzQW5kVG1wc0xpdmVJbkJ5dGVjb2RlKGFmdGVyKTsKICAgICB1bnNpZ25lZCBu
dW1Mb2NhbHMgPSBncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuY3BwCmluZGV4IDIwMmQyMjUwNTNmYTlkZmJlNWMyM2M2NGJjZjhiZTM4NGUzZTc2
NTQuLjdjYzM0YWUyZDBkNGU1Zjg0OGU2OTU3MzAyNDkyYzEyMWQ3MWZlZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
CkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNC
bG9jayhCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrKQogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQu
bnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFp
bC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkxv
Y2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
TG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkp
OworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkg
PT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKKyAgICBBU1NFUlQo
YmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2st
PnZhbHVlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZh
cmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZUbXBzKCkpOwogCiAgICAgbV9hYnN0cmFjdFZhbHVlcy5yZXNpemUoKTsKIApA
QCAtMTYxLDYgKzE2NCwxMCBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXpl
KCkKICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigp
OwogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7
CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLnRtcChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+
dmFsdWVzQXRUYWlsLnRtcChpKS5jbGVhcigpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpA
QCAtMTc1LDEzICsxODIsOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXpl
KCkKICAgICAgICAgYmxvY2stPmNmYVRoaW5rc1Nob3VsZFRyeUNvbnN0YW50Rm9sZGluZyA9IGZh
bHNlOwogICAgICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3Ry
dWN0dXJlc0FyZVdhdGNoZWQ7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3Rh
dGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBibG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewot
ICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5jbGVhcigpOwotICAg
ICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotICAgICAg
ICB9Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5u
dW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQu
bG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwo
aSkuY2xlYXIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVz
QXRIZWFkLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkW2ld
LmNsZWFyKCk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ldLmNsZWFyKCk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTIzOSw3ICsyNDIsNyBAQCBib29sIEluUGxhY2VBYnN0cmFj
dFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgog
ICAgICAgICAgICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAgICAgIC8vIFRoZSBibG9jayB0
cmFuc2ZlcnMgdGhlIHZhbHVlIGZyb20gaGVhZCB0byB0YWlsLgotICAgICAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gdmFyaWFibGVBdChpbmRleCk7CisgICAgICAgICAgICAgICAgZGVzdGluYXRp
b24gPSBhdEluZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKQEAgLTMwNCw3ICszMDcsNyBAQCBib29sIEluUGxhY2VBYnN0
cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFp
bFtpXSA9IHZhcmlhYmxlQXQoaSk7CisgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsW2ld
ID0gYXRJbmRleChpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFs
dWVQYWlyJiB2YWx1ZUF0VGFpbCA6IGJsb2NrLT5zc2EtPnZhbHVlc0F0VGFpbCkKQEAgLTM0Myw2
ICszNDYsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBm
cm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAgICAgZGF0YUxvZygiICAgTWVyZ2luZyBmcm9tICIs
IHBvaW50ZXJEdW1wKGZyb20pLCAiIHRvICIsIHBvaW50ZXJEdW1wKHRvKSwgIlxuIik7CiAgICAg
QVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpID09IHRvLT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgQVNTRVJUKGZyb20tPnZh
cmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJP
ZlRtcHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpKTsKICAgICAKICAg
ICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAKQEAgLTM1MiwxNCArMzU2LDkgQEAgYm9vbCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayog
dG8pCiAgICAgCiAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkgewogICAgIGNhc2UgVGhyZWFk
ZWRDUFM6IHsKLSAgICAgICAgZm9yIChzaXplX3QgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGZy
b20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2FyZ3VtZW50KSB7Ci0g
ICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQu
YXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxl
QmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGFy
Z3VtZW50KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCksIGZyb20tPnZh
cmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgZnJvbS0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFs
dWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5sb2NhbChsb2NhbCk7Ci0gICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBm
cm9tLT52YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVzQXRIZWFkLmxvY2Fs
KGxvY2FsKSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRv
LT52YWx1ZXNBdEhlYWQuYXQoaW5kZXgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZh
cmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmF0KGlu
ZGV4KSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5hdChpbmRleCksIGZyb20tPnZhcmlhYmxlc0F0VGFp
bC5hdChpbmRleCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRl
eCAxODY1ZTZhMWVmZmMzZGFhZWZlNTg0Y2E4NjJjNDliYzM2ODU4NTAwLi5jNWQwMjY4NzNlMDEw
ZDA3ZjM4MTFjNmM0ZmVmNTY2ZTFjYTcwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0xNTgsMTAgKzE1OCwxMiBA
QCBwdWJsaWM6CiAgICAgCiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4mIHZhcmlhYmxlc0Zv
ckRlYnVnZ2luZygpOwogCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFy
aWFibGVzLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgfQogICAgIHVuc2lnbmVk
IG51bWJlck9mTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2Nh
bHMoKTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFy
aWFibGVzLm51bWJlck9mVG1wcygpOyB9CiAgICAgCi0gICAgQWJzdHJhY3RWYWx1ZSYgdmFyaWFi
bGVBdChzaXplX3QgaW5kZXgpCisgICAgQWJzdHJhY3RWYWx1ZSYgYXRJbmRleChzaXplX3QgaW5k
ZXgpCiAgICAgewogICAgICAgICBhY3RpdmF0ZVZhcmlhYmxlSWZOZWNlc3NhcnkoaW5kZXgpOwog
ICAgICAgICByZXR1cm4gZmFzdEZvcndhcmQobV92YXJpYWJsZXNbaW5kZXhdKTsKQEAgLTE2OSwx
NyArMTcxLDE3IEBAIHB1YmxpYzoKIAogICAgIEFic3RyYWN0VmFsdWUmIG9wZXJhbmQoT3BlcmFu
ZCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMu
b3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJs
ZXMub3BlcmFuZEluZGV4KG9wZXJhbmQpKTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1
ZSYgbG9jYWwoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQo
bV92YXJpYWJsZXMubG9jYWxJbmRleChpbmRleCkpOworICAgICAgICByZXR1cm4gYXRJbmRleCht
X3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0
VmFsdWUmIGFyZ3VtZW50KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJp
YWJsZUF0KG1fdmFyaWFibGVzLmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJu
IGF0SW5kZXgobV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRleCkpOwogICAgIH0KICAgICAK
ICAgICAvLyBDYWxsIHRoaXMgYmVmb3JlIGJlZ2lubmluZyBDRkEgdG8gaW5pdGlhbGl6ZSB0aGUg
YWJzdHJhY3QgdmFsdWVzIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xhenlKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1Zh
bHVlLmgKaW5kZXggZjVlZWYyZjNkZjcyMTI5YTgzOGM3Njg2ZTI2Yjk2MGI1MGY1ODFlZS4uN2Ez
MzY2NmFhNzFhMWY2NjZjOTRiMjhiNjQ0NzQ4NGQ2N2JiYjdkOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIExhenlKU1ZhbHVlIG5ld1N0cmluZyhHcmFwaCYsIGNvbnN0IFN0cmluZyYpOwog
CiAgICAgTGF6aW5lc3NLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
bm93blZhbHVlID8gU3BlY0J5dGVjb2RlVG9wIDogU3BlY1N0cmluZzsgfQogICAgIAogICAgIEZy
b3plblZhbHVlKiB0cnlHZXRWYWx1ZShHcmFwaCYpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggYTg1MmRiZGQ5YjkzNzBkNmRlNjUzYzVh
NDg4NzExNzAwZThiODc5Yi4uNTIyMzRiNGE1ZDNmNjk3NmMyZmE5OTgxNmRjZTExMDY4MTA1NGVl
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC00OCwxMSAr
NDgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpP
U1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQs
IHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6
T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCwgdW5zaWduZWQg
ZGZnSVJJbmRleCkKICAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhp
dCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQogICAg
ICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVlUHJvZmlsZSh2
YWx1ZVByb2ZpbGUpCiAgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAgICAs
IG1fZGZnSVJJbmRleChkZmdJUkluZGV4KQogICAgICwgbV9zdHJlYW1JbmRleChzdHJlYW1JbmRl
eCkKIHsKICAgICBib29sIGNhbkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMxZDY4Nzc5NzJmMjU5
ZDYyYzFhMjMwMGIyYjE2MS4uOGNlOGI5MjA3OWFmNzUyOTk3MDNmMTdmZGRhZTJmZWMzYjljMjhj
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTE0Niw3ICsxNDYs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFp
bHVyZShDYWxsRnJhbWUqLCB2b2lkKiwgdm9pZAogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVz
IGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2luZyBpbnRvIGJhc2Vs
aW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7Ci0gICAgT1NS
RXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3Zl
cnlJbmRleCA9IFVJTlRfTUFYKTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNl
LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVk
IHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgsIHVuc2lnbmVk
IGRmZ0lSSW5kZXggPSBVSU5UX01BWCk7CiAKICAgICBmcmllbmQgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopOwogCkBAIC0xNTksNiArMTU5LDcg
QEAgc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIE1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9y
ZWNvdmVyeUluZGV4OworICAgIHVuc2lnbmVkIG1fZGZnSVJJbmRleDsKIAogICAgIENvZGVMb2Nh
dGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gY29kZUxvY2F0aW9uRm9yUmVwYXRjaCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5jcHAKaW5kZXggMWRmMzk0MzI0MWQ1YWY3OTMxOThlZjljNzEyNzNlNzU4YTBh
MjI2YS4uMDg1ZGM1MzBiM2JjMzc5ZmI0ZjNlNjA5MWNiNWM2NTIwMjc1ODdhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcApAQCAtMTU5LDkgKzE1OSwxNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0
clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogI2RlZmlu
ZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUxNigp
ID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9s
b2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IExMSW50Ojpn
ZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSkKIAogICAg
ICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewotICAgICAgICBjYXNlIElubGluZUNh
bGxGcmFtZTo6Q2FsbDoKLSAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9D
QVRJT04ob3BfY2FsbCk7CisgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7Cisg
ICAgICAgICAgICBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfY2FsbCkKKyAg
ICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwp
OworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbEluc3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3Bf
aXRlcmF0b3Jfb3BlbikKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJO
X0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICAgICAgZWxzZSBpZiAoY2FsbElu
c3RydWN0aW9uLm9wY29kZUlEKCkgPT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAgICAgICAgICAgICAg
ICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX25leHQpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJh
bWU6OkNvbnN0cnVjdDoKICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9D
QVRJT04ob3BfY29uc3RydWN0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDYgKzI0NSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NF
UlQoanVtcFRhcmdldCk7CiAgICAgcmV0dXJuIGp1bXBUYXJnZXQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKaW5kZXggMjEwMDNlZDVmZDNmYmMzODE2MmM4OTJiMzRjODQ3YjkyNzY4M2ZhZS4u
NmUwOTBhMzhiZmMwOTQ3NWE3ZDdiZDU5MWUyNTFhM2U5MzQ2ODU3YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKQEAgLTExMDEsNiArMTEwMSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9j
dXJyZW50Tm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVy
IHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDogeworICAgICAgICAgICAgc2V0UHJlZGlj
dGlvbihtX2N1cnJlbnROb2RlLT5sYXp5SlNWYWx1ZSgpLnNwZWN1bGF0ZWRUeXBlKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoK
ICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgVG9TdHJp
bmc6CkBAIC0xMzA1LDcgKzEzMTEsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFJlZ0V4
cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6
CiAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgotICAgICAgICBjYXNlIExh
enlKU0NvbnN0YW50OgogICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAgICAgIC8vIFRo
aXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0
aW9uLgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsICJVbmV4
cGVjdGVkIG5vZGUgZHVyaW5nIHByZWRpY3Rpb24gcHJvcGFnYXRpb24iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJj
ZjgzZDZjZWQ4YTFiZmYzOThjYi4uOWFlOTgwNGM3NWI5NWVjNTYxZWQyZjFhNTJiOWRlYzk4Yzg0
NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTcx
LDYgKzcxLDggQEAgcHVibGljOgogICAgICAgICAgICAgZGF0YUxvZ0YoIikgPT0gKCVzID0gIiwg
I3JpZ2h0KTsgXAogICAgICAgICAgICAgZGF0YUxvZyhyaWdodCk7IFwKICAgICAgICAgICAgIGRh
dGFMb2dGKCIpICglczolZCkuXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgICAgICAg
ICBkYXRhTG9nKCJcblxuXG4iKTsgXAorICAgICAgICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihudWxscHRyKS0+ZHVtcEJ5dGVjb2RlKCk7IFwKICAgICAgICAgICAgIGR1bXBHcmFw
aElmQXBwcm9wcmlhdGUoKTsgXAogICAgICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNsZWZ0ICIgPT0gIiAj
cmlnaHQpOyBcCiAgICAgICAgICAgICBDUkFTSCgpOyBcCkBAIC01NjgsNiArNTcwLDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBPcGVyYW5kczxzaXplX3Q+IGdldExvY2FsUG9zaXRpb25zKE9w
ZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICBPcGVyYW5k
czxzaXplX3Q+IHNldExvY2FsUG9zaXRpb25zKE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxl
c0F0SGVhZCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRtcChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC50bXAoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC50bXAoaSktPmFjY2Vz
c2VzU3RhY2sobV9ncmFwaCkpOworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9
PSBUaHJlYWRlZENQUykKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKE9wZXJhbmQ6OnRt
cChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0VGFpbC50bXAoaSkgfHwgYmxvY2stPnZh
cmlhYmxlc0F0VGFpbC50bXAoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworCisgICAgICAg
ICAgICAgICAgZ2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0OworICAgICAgICAgICAg
ICAgIHNldExvY2FsUG9zaXRpb25zLnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5u
dW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBWQUxJREFURSgodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLCBibG9jayksICFibG9jay0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJn
dW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKQEAgLTcxNiw2ICs3MjYsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgY2hlY2tPcGVyYW5kKAorICAgICAgICAgICAgICAgICAgICBibG9j
aywgZ2V0TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kOjp0bXAoaSkp
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJs
b2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgY2hlY2tPcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0TG9j
YWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dEluY2x1ZGluZ1RoaXMoaSkpOwpAQCAtOTQ0LDcgKzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGNoZWNrT3BlcmFuZCgKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2ssIE9wZXJhbmRzPHNp
emVfdD4mIGdldExvY2FsUG9zaXRpb25zLAotICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRM
b2NhbFBvc2l0aW9ucywgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgICAgIE9wZXJhbmRz
PHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBPcGVyYW5kIG9wZXJhbmQpCiAgICAgewogICAg
ICAgICBpZiAoZ2V0TG9jYWxQb3NpdGlvbnMub3BlcmFuZChvcGVyYW5kKSA9PSBub3RTZXQpCiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmlu
ZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQuLjk0ZGUzOGNiNzE2
NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIxMGM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRFNMLnJiCkBAIC0xMzcsNiArMTM3LDcgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkdl
dEJ5SWRNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkdldEJ5VmFsSGlzdG9yeS5oIgogI2luY2x1ZGUg
Ikluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5j
bHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1
dEJ5SWRGbGFncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEu
cmIKaW5kZXggN2NkMTVkMzE1ZDYzOTBhYmEyNjM1ZTk2MzU5Zjg5MGUyZWI3MWE5NS4uYzA3NzVk
OGUxYjEwNTAyZGYwMWE3NGFmMGM2ZGViNGE4NzVjYzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIE1ldGFk
YXRhCiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhKTsKIAogICAgIHB1Ymxp
YzoKKyAgICAgICAgI3tvcC5vcGNvZGVJRH0KICAgICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5j
YXBpdGFsaXplZF9uYW1lfSYjeyIgX19vcCIgaWYgaW5pdHN9KSN7aW5pdHN9IHsgfQogCiAje2Zp
ZWxkc30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlv
bi5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgppbmRleCA5
YjVlZTkwOTZlZTcxYjFiMGQzZWQ3ZjdjZDE4ZGIwNmZjYjM1ZmNmLi43ZjQzMDJkODgyZWY2ZjM1
OTU3Njc3ZWRjZjA0OWQzMjZmOTY0NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9TZWN0aW9uLnJiCkBAIC01Myw3ICs1MywxNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGVuZAog
CiAgIGRlZiBzb3J0IQotICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8IGEu
bWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIH0KKyAgICAg
IEBvcGNvZGVzID0gQG9wY29kZXMuc29ydCB7IHxhLCBifAorICAgICAgICAgIHJlc3VsdCA9IG5p
bAorICAgICAgICAgIGlmIGEuY2hlY2twb2ludHMgb3IgYi5jaGVja3BvaW50cworICAgICAgICAg
ICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRh
dGE6ICN7YS5uYW1lfSIgaWYgYS5jaGVja3BvaW50cyBhbmQgYS5tZXRhZGF0YS5lbXB0eT8KKyAg
ICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZl
IG1ldGFkYXRhOiAje2IubmFtZX0iIGlmIGIuY2hlY2twb2ludHMgYW5kIGIubWV0YWRhdGEuZW1w
dHk/CisgICAgICAgICAgICAgIHJlc3VsdCA9IGEuY2hlY2twb2ludHMgPyBiLmNoZWNrcG9pbnRz
ID8gMCA6IC0xIDogMQorICAgICAgICAgIGVsc2lmCisgICAgICAgICAgICAgIHJlc3VsdCA9IGEu
bWV0YWRhdGEuZW1wdHk/ID8gYi5tZXRhZGF0YS5lbXB0eT8gPyAwIDogMSA6IC0xIAorICAgICAg
ICAgIGVuZAorICAgICAgICAgIHJlc3VsdAorICAgICAgfQogICAgICAgQG9wY29kZXMuZWFjaCgm
OmNyZWF0ZV9pZCEpCiAgIGVuZAogCkBAIC03Myw2ICs4MywxOSBAQCBjbGFzcyBTZWN0aW9uCiAg
ICAgICBlbmQKIAogICAgICAgaWYgY29uZmlnWzplbWl0X2luX3N0cnVjdHNfZmlsZV0KKyAgICAg
ICAgICBpID0gMAorICAgICAgICAgIHdoaWxlIHRydWUKKyAgICAgICAgICAgICAgaWYgIW9wY29k
ZXNbaV0uY2hlY2twb2ludHMKKyAgICAgICAgICAgICAgICAgIHByaW50KCJGT1VORCBUSEUgTlVN
QkVSIE9GIENIRUNLUE9JTlRTIEFORCBJJ00gUFJJTlRJTkcgSVQgSU5UTyBUSEUgRklMRSBXSU5E
T1dTISIpCisgICAgICAgICAgICAgICAgICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIjZGVmaW5lIE5VTUJFUl9PRl8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRd
fV9XSVRIX0NIRUNLUE9JTlRTICN7aX1cbiIKKyAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgIGVuZAorICAg
ICAgICAgIG91dCA8PCAiXG4iCisKICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VB
Q0hfI3tjb25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFfU0laRShtYWNybykg
XFxcbiIpCiAgICAgICAgICAgaSA9IDAKICAgICAgICAgICB3aGlsZSB0cnVlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhh
NWIwZi4uOGIzYTIzOGE0ZGFmMWZjNjc5MTQwZDhiYmVjNzcwOWI4NTY4YmI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgbV9sYWJlbHNbbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpXSA9IGxhYmVsKCk7CiAKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQotICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNv
ZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAg
ICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2Rl
SW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCkBAIC00
MzgsNiArNDM4LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZ2V0X2ludGVybmFsX2ZpZWxkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2ludGVybmFsX2ZpZWxkKQogCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9vcGVu
KQorICAgICAgICBERUZJTkVfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVf
T1Aob3BfcmV0KQogICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQogICAgICAgICBERUZJTkVf
T1Aob3BfdW5zaWduZWQpCkBAIC01MjUsNyArNTI4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIHJhcmVDYXNlUHJvZmlsZSA9ICZyYXJlQ2FzZVBy
b2ZpbGVzLmF0KGJ5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CiAKICAgICAgICAgaWYgKEpJ
VEludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0
aW5nIHNsb3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9u
ZylkZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVt
aXR0aW5nIHNsb3cgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAo
bG9uZylkZWJ1Z09mZnNldCgpKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAg
ICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVTbG93UGF0aChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCksIGxhYmVsKCkpOwpAQCAtNTg5LDYgKzU5Miw5IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9n
ZXRfZnJvbV9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF90b19zY29w
ZSkKIAorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2l0ZXJhdG9yX25leHQpCisKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AodW5zaWduZWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9X
X09QKGluYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZGVjKQpAQCAtNjI2LDgg
KzYzMiw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGlm
IChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIsIGZpcnN0
VG8sICIgc2xvdzogIiwgaXRlciAtIG1fc2xvd0Nhc2VzLmJlZ2luKCksICJcbiIpOwogCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xvd0Nhc2VzLmVuZCgp
IHx8IGZpcnN0VG8gIT0gaXRlci0+dG8sICJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93
IGNhc2UgY29kZWdlbi4iKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZp
cnN0VG8gPT0gKGl0ZXIgLSAxKS0+dG8sICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBj
YXNlIGNvZGVnZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVy
ID09IG1fc2xvd0Nhc2VzLmVuZCgpIHx8IGZpcnN0VG8ub2Zmc2V0KCkgIT0gaXRlci0+dG8ub2Zm
c2V0KCksICJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8ub2Zmc2V0KCkgPT0g
KGl0ZXIgLSAxKS0+dG8ub2Zmc2V0KCksICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBj
YXNlIGNvZGVnZW4uIik7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKQogICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Mo
JnJhcmVDYXNlUHJvZmlsZS0+bV9jb3VudGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCA3MDczNTVjNmQ3MTE4MmFhMDcyOWEyNzQ5MTAwNGY0NWUxZWE2YWMxLi44M2FlMWE3YjY5OGQ2
OTMzZGJiOGEwMzcxOTA0OWVjMjI1ODE4Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTI5Nyw2ICsyOTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKIAorICAgICAgICB2b2lkIGNoZWNrcG9pbnRSZWFj
aGVkKCk7CisgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXAp
OworCiAgICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoSnVtcCk7CiAgICAgICAgIHZvaWQgYWRkU2xv
d0Nhc2UoY29uc3QgSnVtcExpc3QmKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZSgpOwpAQCAt
Njc2LDYgKzY3OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRTbG93
Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CiAKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9y
X29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOworICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisKICAgICAgICAg
dm9pZCBlbWl0UmlnaHRTaGlmdChjb25zdCBJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7
CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCkBA
IC05MTEsNiArOTE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVmVjdG9yPENhbGxS
ZWNvcmQ+IG1fY2FsbHM7CiAgICAgICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7CisgICAgICAg
IEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsKICAgICAg
ICAgVmVjdG9yPEpJVEdldEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CiAgICAgICAgIFZlY3Rv
cjxKSVRHZXRCeVZhbEdlbmVyYXRvcj4gbV9nZXRCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGUxZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3
MWZmY2IyMGI4NjYuLjAyNjE0NzZlOTZhMThhOTkwNTE4ZDA4N2U0OWQxMzQ0NTcyNmYzNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCeXRlY29kZVBy
b2ZpbGVGb3IuaCIKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgpAQCAtNDIsOCArNDQsOCBAQAogI2luY2x1ZGUgIlNldHVwVmFy
YXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVu
a0dlbmVyYXRvcnMuaCIKLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAorI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NTEsNyArNTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjplbWl0UHV0Q2Fs
bFJlc3VsdChjb25zdCBPcCYgYnl0ZWNvZGUpCiB7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9kc3QpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZGVzdGlu
YXRpb25Gb3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZpcnR1YWxS
ZWdpc3RlcigpLCByZWdUMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtNjEsMjAg
KzYzLDIxIEBAIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAsIHZvaWQ+CiBKSVQ6OmNvbXBpbGVTZXR1cEZy
YW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKIHsKKyAgICB1bnNpZ25lZCBj
aGVja3BvaW50ID0gbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJnQ291bnQg
PSBieXRlY29kZS5tX2FyZ2M7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0
PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzID0g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpOworICAg
IGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdp
c3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAgICBpZiAoT3A6Om9wY29k
ZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkpLCByZWdUMCk7CiAgICAgICAgIEp1
bXAgZG9uZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgICAgIHN0
b3JlMzIocmVnVDAsIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLmFkZHJl
c3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAsIGFycmF5
UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludCkuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpKTsKICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIAogICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3Vu
dEluY2x1ZGluZ1RoaXMpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7
CiB9CiAKIApAQCAtMjA3LDcgKzIxMCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiB7CiAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0
ZWNvZGUubV9jYWxsZWU7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGNhbGxlZUZvcihi
eXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKICAgICAvKiBDYWxsZXIg
YWx3YXlzOgogICAgICAgICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNh
bGxGcmFtZS4KQEAgLTIzNCw5ICsyMzcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNh
bGxlZS4KICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKLSAgICBpZiAoY29tcGlsZUNhbGxFdmFs
KGJ5dGVjb2RlKSkgeworICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtlZEZ1bmN0
aW9uQ2hlY2s7CiAgICAgSnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVh
bCwgcmVnVDAsIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIobnVs
bHB0cikpOwpAQCAtMzgwLDYgKzM4MiwxODQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0
cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAg
ICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwg
aXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlG
YXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lk
dGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3RfbmFycm93OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTE2OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3Rfd2lkZTMyOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZSh0cnlGYXN0RnVuY3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2Fz
ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJ
bW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKwor
ICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5r
SW5mb0luZGV4KyspOworICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1
bHQgKGl0ZXJhdG9yKSBpcyBpbiByZWdUMAorCisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmdm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIGZhc3RDYXNlLmxpbmsodGhp
cyk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93
Q2FzZTxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5k
ZXgrKyk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKwor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0
aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFZSZWcg
PSBieXRlY29kZS5tX25leHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5w
cm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFBy
b2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoreworICAgIGF1
dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byog
dHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24t
PndpZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0X25hcnJvdzsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9uZXh0
X3RyeV9mYXN0X3dpZGUxNjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0X3dpZGUzMjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCwgcmVnVDApOworICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBi
cmFuY2hJZk5vdEVtcHR5KHJlZ1QwKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlG
YXN0RnVuY3Rpb24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJy
YW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGdl
bmVyaWNDYXNlLmxpbmsodGhpcyk7CisgICAgb3I4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50OF90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSksIEFic29sdXRlQWRkcmVzcygmbWV0YWRh
dGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMpKTsKKyAgICBjb21waWxlT3BDYWxsPE9w
SXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBj
aGVja3BvaW50UmVhY2hlZCgpOworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRvbmUsIHZhbHVlIH0g
SlNPYmplY3QpIGluIHJlZ1QwCisKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMDsKKyAgICBH
UFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QyOworICAgIEdQUlJlZyBkb25lR1BSID0gcmVnVDE7
CisgICAgLy8gaXRlclJlc3VsdEdQUiB3aWxsIGdldCB0cmFzaGVkIGJ5IHRoZSBmaXJzdCBnZXQg
YnkgaWQgYmVsb3cuCisgICAgbW92ZSh2YWx1ZUdQUiwgaXRlclJlc3VsdEdQUik7CisKKyAgICB7
CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyUmVzdWx0R1BSKTsKKwor
ICAgICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpOworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7
CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgp
LnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiks
IEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fZG9uZSwgZG9uZUdQUik7CisgICAgICAgIGNoZWNrcG9pbnRSZWFj
aGVkKCk7CisgICAgfQorCisKKyAgICB7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1Qy
OworICAgICAgICBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKKyAgICAgICAgY29uc3QgYm9vbCBz
aG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBmYWxzZTsKKyAgICAgICAgSnVtcExp
c3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVH
UFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKworICAg
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRC
eUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChn
ZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKwor
ICAgICAgICBpdGVyYXRpb25Eb25lLmxpbmsodGhpcyk7CisgICAgfQorCisgICAgZmFzdENhc2Uu
bGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9w
Q2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlu
a0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgp
KTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+
KCk7CisgICAgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9uZVZSZWcgPSBieXRlY29kZS5t
X2RvbmU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisKKyAgICAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAg
ICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Cisg
ICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikp
OworCisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1l
cy0+ZG9uZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIAorICAgICAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAg
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKKyAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CisgICAgICAgIGVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAgIG5vdE9iamVjdC5s
aW5rKHRoaXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93SXRlcmF0b3JS
ZXN1bHRJc05vdE9iamVjdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpKTsKKyAgICB9CisKKyAgICB7ICAgCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOwor
ICAgICAgICBHUFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QwOworCisgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAg
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4
KytdOworCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVy
UmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQorCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcAppbmRleCA5MDY5NmNiZWMxMGUzOTNiOTk3MGYwZWIyMDExOGQyMTk3NGMz
NTI1Li5kMTQwYWFjOWJlMmQ1NDAzZDFiYzBkOTkxMmFlOWUxMDVmODBkNDMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0zNjYsNiArMzY2LDI2IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9u
KikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiop
Cit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggN2RjYmU4ZmEzYWU1NjhjYmFh
NjVjYTQxZTVlMWJhMjc1NjU1MzNmNC4uMjdhNTdmNGVlMzYxNjRhY2U4ZTM5ZjM2OGNlNzY1YmYx
NWRkZmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI2LDcg
KzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKEpJVCkKKyNpbmNsdWRlICJCeXRl
Y29kZVByb2ZpbGVGb3IuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTEwNSw3ICsxMDcsNyBAQCBBTFdBWVNfSU5MSU5FIEpJVDo6Q2FsbCBKSVQ6OmVtaXRO
YWtlZFRhaWxDYWxsKENvZGVQdHI8Tm9QdHJUYWc+IHRhcmdldCkKIAogQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKCkKIHsKLSAgICB1aW50MzJfdCBsb2NhdGlvbkJp
dHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkuYml0cygpOworICAgIHVpbnQzMl90
IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKS5i
aXRzKCk7CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgCiAgICAgLy8g
RklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyBpcyBuZWVkZWQuIEpJVE9wZXJhdGlvbnMg
dGVuZCB0byB1cGRhdGUgdGhlIHRvcCBjYWxsIGZyYW1lIG9uCkBAIC0xODMsNiArMTg1LDI1IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6Omhhc0FueVNsb3dDYXNlcyhWZWN0b3I8U2xvd0Nhc2VF
bnRyeT4mIHNsb3dDYXNlcywgVmVjdG9yCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUg
dm9pZCBKSVQ6OmNoZWNrcG9pbnRSZWFjaGVkKCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJp
bmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBz
ZXQiKTsKKyAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0
byByZXN1bHQgPSBtX2NoZWNrcG9pbnRMYWJlbHMuYWRkKG1fYnl0ZWNvZGVJbmRleCwgbGFiZWwo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwor
aW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCBqdW1w
KQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRo
b2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24s
IHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRleCA9
IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX2NoZWNrcG9pbnRMYWJlbHMu
ZmluZChtX2J5dGVjb2RlSW5kZXgpOworICAgIEFTU0VSVChpdGVyICE9IG1fY2hlY2twb2ludExh
YmVscy5lbmQoKSk7CisgICAganVtcC5saW5rVG8oaXRlci0+dmFsdWUsIHRoaXMpOworfQorCiBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjphZGRTbG93Q2FzZShKdW1wIGp1bXApCiB7CiAgICAgQVNT
RVJUKG1fYnl0ZWNvZGVJbmRleCk7IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRl
eCBpcyBzZXQuCkBAIC0zMTksNyArMzQwLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKE1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRQ
cm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEubV9wcm9maWxlKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHZhbHVlUHJv
ZmlsZUZvcihtZXRhZGF0YSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkpOwogfQogCiBp
bmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklE
IGNlbGwsIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmls
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdh
ZTE1MGNjNjYxMDc2MmJhY2M4YmU0MjIwNzNhYWQ2NGFiMzExOTEuLmE1ZTJhMjQ3Y2YxNTRkYTQ2
ZWIzM2RmYmJmMGUzMzYwZDM2ZjU1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMTM0LDYgKzEzNCwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3Qq
IGdsbwogICAgIEFTU0VSVCh2bS50YXJnZXRNYWNoaW5lUENGb3JUaHJvdyk7CiB9CiAKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGlu
dGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7Cit9CisKIGludDMyX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOGVmYjViNWFjOTgwYWVlNmM1NTIzNDQzN2M5MDI4
OTU4OTAyMjY2NS4uOWZjYzQxZGVjNDU4MmM5NjUyOTIzNjU1ZGE4ZjMwMjY5NWRmNzAxOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE1NSw2ICsxNTUs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcihW
TSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKFZNKikgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRo
dW5rKEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCopIFdU
Rl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKENvZGVCbG9jayopIFdURl9JTlRFUk5BTDsKIGludDMyX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IDhkZWE3ZjI3OGU3NjYyZTUwMzE0Y2ViOWIwODMzOWY4N2JmZGE0OTcuLjY4Njg5ZTgzMzgzM2Ix
NTZkZmM4MDlkMDEyYTA3OTY3MWM0Zjc3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
QXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVQcm9maWxlRm9yLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5j
bHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKICNpbmNsdWRlICJDb21tb25TbG93
UGF0aHNJbmxpbmVzLmgiCkBAIC04Miw2ICs4Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgTExJbnQgewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOyBcCiAgICAg
U2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwKKyAgICBkYXRhTG9n
TG5JZihMTElOVF9UUkFDSU5HICYmIE9wdGlvbnM6OnRyYWNlTExJbnRTbG93UGF0aCgpLCAiQ2Fs
bGluZyBzbG93IHBhdGggIiwgV1RGX1BSRVRUWV9GVU5DVElPTik7IFwKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNjkz
LDcgKzY5NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfZGly
ZWN0KQogfQogCiAKLXN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2Vs
bCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CitzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBKU0NlbGwqIGJhc2VDZWxs
LCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAKQEAgLTc0MSw0
NCArNzQzLDM5IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kCiAgICAgewogICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgaWYgKHNs
b3QuaXNVbnNldCgpKQotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0VW5z
ZXRNb2RlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRVbnNldE1vZGUoc3Ry
dWN0dXJlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1ZhbHVl
KCkpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0UHJvdG9Mb2FkTW9k
ZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKKyAgICAgICAgICAgIG1ldGFk
YXRhLnNldFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Quc2xvdEJhc2UoKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsK
IH0KIAotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQorc3RhdGlj
IEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1l
dGFkYXRhKQogewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEdldEJ5SWQ+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwotICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIAogICAgIEpTVmFsdWUgcmVzdWx0
ID0gYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKLSAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKLSAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9k
c3QpID0gcmVzdWx0OwotICAgIAorICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKwogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCiAgICAgICAgICYmIGJh
c2VWYWx1ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKICAgICAgICAg
JiYgIXNsb3QuaXNVbnNldCgpKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlE
IG9sZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgc3dpdGNoIChtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5tb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1vZGUpIHsKICAgICAg
ICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OkRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgb2xkU3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLmRlZmF1bHRNb2Rl
LnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBH
ZXRCeUlkTW9kZTo6VW5zZXQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAg
ICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSUQ7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpQcm90b0xv
YWQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIG9sZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgb2xkU3Ry
dWN0dXJlSUQgPSAwOwpAQCAtNzk5LDM1ICs3OTYsMTAzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSAmJiBzbG90
LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBi
eSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOworICAgICAgICAgICAg
bWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CiAKICAgICAgICAgICAg
IC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgotICAg
ICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSAwOworICAgICAgICAgICAgbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwog
ICAgICAgICAKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVD
YWNoZWFibGUoKSAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkp
IHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5z
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0g
c3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlZmF1bHRNb2RlLmNh
Y2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2Fj
aGluZyAmJiBzbG90LmlzVmFsdWUoKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWSht
ZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiBzbG90LmlzVmFsdWUoKSkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKTsKIAotICAgICAg
ICAgICAgaWYgKCEoLS1tZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2Fj
aGluZykpCisgICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNo
aW5nKSkKICAgICAgICAgICAgICAgICBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShnbG9iYWxP
YmplY3QsIHZtLCBjb2RlQmxvY2ssIHBjLCBtZXRhZGF0YSwgYmFzZUNlbGwsIHNsb3QsIGlkZW50
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAm
JiBpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgpIHsKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5z
ZXRBcnJheUxlbmd0aE1vZGUoKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0QXJyYXlM
ZW5ndGhNb2RlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQ
cm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0p
KTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwog
ICAgIH0KIAotICAgIExMSU5UX1BST0ZJTEVfVkFMVUUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEJ5SWQ+
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwor
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1M
TEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIGlkZW50
LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0
b3Jfb3Blbl9nZXRfbmV4dCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0
b3Jfb3Blbl9nZXRfbmV4dCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICBSZWdpc3RlciYgbmV4
dFJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCk7CisKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xv
YmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIG5leHRSZWdp
c3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fbmV4dFBy
b2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0
b3JfbmV4dF9nZXRfZG9uZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0
b3JfbmV4dF9nZXRfZG9uZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgLy8gV2UgdXNlIG1fdmFsdWUgdG8gaG9s
ZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVlIHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBh
c3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBsYXRlci4KKyAgICBK
U1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
dmFsdWUpOworICAgIFJlZ2lzdGVyJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoYnl0ZWNvZGUubV9kb25lKTsKKworICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3Qo
KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0
ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKKworICAgIEpT
VmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5t
X2RvbmVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGRv
bmVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1f
ZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
TExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
aXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1
ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgdG1wIHNpbmNlIGl0J3MgZWl0aGVy
IG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBs
YXRlci4KKyAgICBSZWdpc3RlciYgdmFsdWVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gdmFsdWVS
ZWdpc3Rlci5qc1ZhbHVlKCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdl
dEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJv
cGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIHZhbHVlUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAg
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS5tX2J1Y2tldHNbMF0g
PSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lO
KCk7CkBAIC0xNTYzLDcgKzE2MjgsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVw
Q2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0Nh
bGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcCYmIGJ5dGVj
b2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgT3AmJiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCB1bnNpZ25lZCBj
aGVja3BvaW50SW5kZXggPSAwKQogewogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBT
ZXQgdXAgYSBjYWxsIGZyYW1lLgpAQCAtMTU3MSwxNiArMTYzNiwxNiBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZQogICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUg
Y2FjaGUuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0
byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCiAgICAgCi0gICAgSlNWYWx1ZSBjYWxsZWVB
c1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fY2FsbGVlKTsKKyAgICBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgY2FsbGVlRm9yKGJ5
dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsKICAgICAKLSAgICBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lID0gY2FsbEZyYW1lIC0gYnl0ZWNvZGUubV9hcmd2OworICAgIENhbGxGcmFtZSogY2FsbGVl
RnJhbWUgPSBjYWxsRnJhbWUgLSBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29k
ZSwgY2hlY2twb2ludEluZGV4KTsKICAgICAKLSAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNvZGUubV9hcmdjKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3Io
Ynl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIGNhbGxlZUZyYW1lLT51bmNoZWNrZWRS
KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSA9IGNhbGxlZUFzVmFsdWU7
CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxGcmFtZSk7CiAgICAgCiAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgIHJldHVy
biBzZXRVcENhbGwoY2FsbGVlRnJhbWUsIGtpbmQsIGNhbGxlZUFzVmFsdWUsICZtZXRhZGF0YS5t
X2NhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwg
Y2FsbGVlQXNWYWx1ZSwgJmNhbGxMaW5rSW5mb0ZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4
KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQpAQCAtMTYwNCw2
ICsxNjY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywg
Y2FsbEZyYW1lLCBwYy0+YXM8T3BDb25zdHJ1Y3Q+KCksIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0K
IAorTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2Nh
bGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwor
CisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBvcGVuX2NhbGwiKTsKKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFt
ZSwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpLCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck9wZW46
OnN5bWJvbENhbGwpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9pdGVyYXRvcl9uZXh0X2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0
ZXJhdG9yX25leHRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBuZXh0X2Nh
bGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChj
b2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpLCBDb2RlRm9yQ2Fs
bCwgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKQogewogICAgIExMSU5UX0JFR0lO
KCk7CkBAIC0xOTkwLDYgKzIwNzcsNDQgQEAgc3RhdGljIHZvaWQgaGFuZGxlVmFyYXJnc0NoZWNr
cG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QKICAgICBj
YWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kc3QpID0gcmVzdWx0OwogfQogCitzdGF0
aWMgdm9pZCBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wSXRlcmF0b3JP
cGVuJiBieXRlY29kZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29k
ZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKSB7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgSlNWYWx1ZSBuZXh0ID0gaXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KSA9IG5l
eHQ7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQoVk0mIHZt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgT3BJdGVyYXRvck5leHQmIGJ5dGVjb2RlLCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZSYg
c2lkZVN0YXRlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSBzaWRlU3RhdGUuYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCk7CisKKyAgICBhdXRvJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIGF1dG8gaXRlcmF0b3JSZXN1bHRPYmplY3Qg
PSBzaWRlU3RhdGUudG1wc1tPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdF07CisgICAgYXV0byBu
ZXh0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpOyAg
ICAKKworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5v
dCBPU1IgZXhpdCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2FzZXMuIik7CisKKyAgICBhdXRv
JiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsK
KyAgICBpZiAoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7Cisg
ICAgICAgIGRvbmVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAo
ZG9uZVJlZ2lzdGVyLmpzVmFsdWUoKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAg
dmFsdWVSZWdpc3RlciA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZVJl
Z2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+dmFsdWUpOworfQorCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNo
VG9OZXh0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFt
OjpSZWYgcGMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWNvZGVCbG9jay0+dm0oKS5leGNlcHRp
b25Gb3JJbnNwZWN0aW9uKCkpOwpAQCAtMjA2Niw2ICsyMTkxLDE1IEBAIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KENhbGxGcmFtZSog
Y2FsbEZyYW1lCiAgICAgICAgIGhhbmRsZVZhcmFyZ3NDaGVja3BvaW50KHZtLCBjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wVGFpbENhbGxWYXJhcmdzPigpLCAqc2lkZVN0YXRlLmdl
dCgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAg
ICAgICAgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JOZXh0
Q2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9y
TmV4dD4oKSwgKnNpZGVTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMjEwMyw2ICsyMjM3LDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0
ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTQ2VsbCogY2VsbCkKICAgICB2
bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1
bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1
bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCit7CisgICAgZGF0YUxvZ0xuKEpTVmFsdWU6
OmRlY29kZSh2YWx1ZSkpOworfQorCiBleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gg
dm9pZCBsbGludF9jcmFzaCgpCiB7CiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBiNTY5OWMzMGQy
Y2RhZmE0ZjkzYzNhOWYwOTgwNTcxYzgxNzY3YzFhLi5mOWEzNGRhYjM2ZDlmYTUyNzU2YTE5OGIy
ZDc0Zjc1MmM1MzhhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBtYWNybyBkZWZp
bmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBzaXplKGRlZmluZU5h
cnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBmKCkgZW5kKQogZW5k
CiAKLW1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rp
b24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19M
T09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKICAg
ICBlbHNlCkBAIC0xMDQ1LDExICsxMDQ1LDExIEBAIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQCiAg
ICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1
bmV4cGVjdGVkCiAgICAgICAgICMgY3Jhc2hlcy4KICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRl
ckFmdGVyQ2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gpCisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKICAgICBl
bmQKICAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBy
ZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCkKIGVuZAogCiBtYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVt
cDIsIHRlbXAzLCBjYWxsUHRyVGFnKQpAQCAtMTExNyw3ICsxMTE3LDExIEBAIG1hY3JvIHByZXBh
cmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAg
ICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZwogZW5kCiAKLW1hY3JvIHNsb3dQYXRoRm9yQ2FsbChv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFy
ZUNhbGwpCittYWNybyBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRo
Rm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3Qs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKworbWFjcm8gc2xvd1BhdGhG
b3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAg
IGNhbGxDYWxsU2xvd1BhdGgoCiAgICAgICAgIHNsb3dQYXRoLAogICAgICAgICAjIFRob3NlIGFy
ZSByMCBhbmQgcjEKQEAgLTExMjYsNyArMTEzMCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFy
CiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAogICAgICAgICAgICAgcHJlcGFy
ZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKICAgICAgICAgLmRvbnRV
cGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xv
dywgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykK
KyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3Bh
dGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBlbmQKIApAQCAtMjAx
Niw3ICsyMDIwLDcgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGRpc3BhdGNoLCBmcmFtZVNsb3dQYXRoLCBzbG8KICAgICAgICAgICAgIHN1YnAg
cjEsIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgICAgICBlbmQKICAgICBlbmQKLSAgICBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwg
c2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwp
CiBlbmQKIAogCkBAIC0yMDc5LDcgKzIwODMsNyBAQCBlbmQpCiAjIHJldHVybnMgdGhlIEpTIHZh
bHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6Ci0gICAg
c2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAgb3Bf
Y2FsbF9ldmFsX25hcnJvdywKICAgICAgICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLApA
QCAtMjA4OCw3ICsyMDkyLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICAgICAgcHJlcGFy
ZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKLSAgICBzbG93
UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxs
X2V2YWxfd2lkZTE2LAogICAgICAgICB3aWRlMTYsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0y
MDk3LDcgKzIxMDEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICAgICAgcHJl
cGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKLSAgICBz
bG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9j
YWxsX2V2YWxfd2lkZTMyLAogICAgICAgICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBA
IC0yMTA3LDcgKzIxMTEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKIAogCiBjb21t
b25PcChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6
ZSkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxFdmFsLCBtYWNybyAoKQorICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1fcHJvZmlsZSwgbV9kc3QsIG1h
Y3JvICgpCiAgICAgICAgIGRpc3BhdGNoT3Aoc2l6ZSwgb3BfY2FsbF9ldmFsKQogICAgIGVuZCkK
IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjE4M2M4MDQyYWJkZmNlOGQ0Mzkx
MWFmNDFmNjU0YS4uNzRjNDgwZGYyMTIxNzE2NTUwYzVmZDRmMDg0NGFiMTEwOGZkYzgxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVk
KG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgICAgICBtb3Zl
IHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgICAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDApCiAgICAgICAgIGdldChtX2RzdCwgdDIp
CiAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQpAQCAtNzcsMTYgKzc3LDE3IEBAIGVuZAog
CiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCBy
ZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkK
ICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQ
QwogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBtX2RzdCwgdDMpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lz
dGVyLCB0MykKICAgICBzdG9yZWkgcjEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3Jl
aSByMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29k
ZVN0cnVjdCwgdDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMSwg
cjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIs
IHIxLCByMCkKICAgICBkaXNwYXRjaCgpCisKIGVuZAogCiBtYWNybyBjQ2FsbDIoZnVuY3Rpb24p
CkBAIC02MzIsOSArNjMzLDkgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1ZUZpZWxkTmFtZSkKICAgICAgICAgZW5kKQogZW5kCiAK
LW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQp
CittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEs
IHRhZywgcGF5bG9hZCkKICAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0YWRhdGFdCi0gICAgc3RvcmVpIHBh
eWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFBh
eWxvYWRPZmZzZXRbbWV0YWRhdGFdCisgICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFk
YXRhXQogZW5kCiAKIApAQCAtMTM3OCw3ICsxMzc5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3AKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQy
CiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJl
Y3RTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0NSwgdDAsIHQxKQorICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1
cm4odDAsIHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0MDAsNyArMTQwMSw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6
bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3Q1XSwgdDMKICAgICBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9w
cm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRBcnJh
eUxlbmd0aDoKQEAgLTE0MTMsNyArMTQxNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhb
dDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlJZCwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDApCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkK
IAogLm9wR2V0QnlJZFVuc2V0OgpAQCAtMTQyMSw3ICsxNDIyLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXQKICAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51
bnNldE1vZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgYmluZXEg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgdDUsIFVuZGVmaW5lZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCiAgICAgcmV0dXJuKFVu
ZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNDMwLDcgKzE0MzEsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDVdLCB0MgogICAgIGJp
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFNs
b3c6CkBAIC0xNDQwLDcgKzE0NDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9p
ZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9zclJl
dHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlf
aWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0
MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE1MTgsNyArMTUxOSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkK
ICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQogICAg
ICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhd
Ci0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBh
eWxvYWQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJ
bnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBA
IC0xNTI3LDcgKzE1MjgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmZDJp
aSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBzdG9yZWkgc2NyYXRjaDMsIFRh
Z09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9yZWkgc2NyYXRjaDIsIFBheWxv
YWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCiAgICAgICAgIGRpc3BhdGNo
KCkKICAgICBlbmQKIApAQCAtMTU3Miw3ICsxNTczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKIC5vcEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlW
YWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1ODUsNyArMTU4Niw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVy
blBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5k
KQpAQCAtMTk1NywxMCArMTk1OCwxMCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwg
c2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBz
dG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBz
cAogICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFn
KQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgY2FsbFRhcmdl
dEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2Rz
dCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9t
YWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoK
LSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
ZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgc2xvd1BhdGhGb3JDYWxs
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0
Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI4OCw3ICsy
Mjg5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9t
U2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0eSgp
CiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwg
dDMKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQxLCB0MikK
LSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAg
ICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjI5Nyw3ICsyMjk4LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3QwXSwgdDEKICAg
ICAgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0MF0sIHQyCiAgICAgICAgIHRkekNoZWNrSWZOZWNl
c3NhcnkodDEpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQxLCB0
MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0
MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTIzMDUsNyArMjMw
Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNj
b3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNj
b3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZHAgSlNMZXhpY2Fs
RW52aXJvbm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCiAgICAgICAg
IGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAs
IHQzLCA4XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEs
IHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjU5NCw2ICsy
NTk1LDE1IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0
TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgcmV0dXJuKEludDMyVGFnLCB0
MCkKIGVuZCkKIAorbGxpbnRPcChvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9w
X2l0ZXJhdG9yX29wZW4sIHNpemUpCisgICAgYnJlYWsKK2VuZCkKKworbGxpbnRPcChvcF9pdGVy
YXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisg
ICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9yX25leHQsIHNpemUpCisgICAg
YnJlYWsKK2VuZCkKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwg
T3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIGdldChtX2Jhc2UsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhZTJlMzc3M2ZmZGNjNDA2NzRjN2Fh
YzBjMWQ0ZmU2Y2QwZmI3ODU5Li44NjEzNmU4NTdjOWY3ODIyYjI0NDZjNjI2YmZkYzdhM2RmYmIy
ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtNjgsMjYgKzY4LDI2IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9m
aWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKICAgICBmbiht
YWNybyAodmFsdWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQx
LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDEsIHQzKQorICAgICAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MykKICAgICAgICAg
Z2V0KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAgICAgICAg
ZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBtZXRhZGF0YSwgdmFsdWUpCi0gICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0YWRhdGFdCittYWNybyB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlKQorICAgIHN0b3Jl
cSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0
c1ttZXRhZGF0YV0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMg
Y2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KLW1hY3JvIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVy
Q2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdp
c3RlciwgZGlzcGF0Y2gpCiAgICAgbG9hZFBDKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
UEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBC
Ci0gICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgbV9kc3QsIHQxKQorICAgIGdldChzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2Zy
LCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwKQogICAgIGRpc3BhdGNoKCkKIGVuZAog
CkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9k
aXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGJpbmVx
IHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6
Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIHQyLCB0
MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCkK
ICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTM0OCw1MyArMTM0
OCw1OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJ
ZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAot
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisjIFRoZSBiYXNlIG9iamVjdCBpcyBl
eHBlY3RlZCBpbiB0MworbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBt
b2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDIsIHQxKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJdLCB0MQotICAgIGdldChtX2Jhc2UsIHQw
KQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCisgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUubW9kZVt0Ml0sIHQxCiAKIC5vcEdldEJ5SWREZWZhdWx0OgogICAgIGJibmVxIHQxLCBj
b25zdGV4cHIgR2V0QnlJZE1vZGU6OkRlZmF1bHQsIC5vcEdldEJ5SWRQcm90b0xvYWQKICAgICBs
b2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAK
LSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQx
CisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUu
ZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xh
YmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5h
bWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQy
LCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgogICAgIGJibmVx
IHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVu
Z3RoCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVy
ZUlEW3QyXSwgdDMKLSAgICBiaW5lcSB0MywgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlz
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVk
T2Zmc2V0W3QyXSwgdDEKLSAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRh
ZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MworICAgIGxvYWRpICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuc3RydWN0
dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUu
Y2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAg
IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZEFycmF5
TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3Ro
LCAub3BHZXRCeUlkVW5zZXQKICAgICBtb3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZShPcEdl
dEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9m
aWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93Ci0g
ICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93CisgICAgYXJyYXlQ
cm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJh
eSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAog
ICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQog
ICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cK
KyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVyVGFnLCB0MAotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRC
eUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBs
b2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0
dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgVmFsdWVVbmRlZmluZWQpCisgICAgbG9hZGkgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVy
ZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKICAg
ICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKK2VuZAorCitsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIHBlcmZvcm1HZXRCeUlE
SGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNs
b3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICBkaXNwYXRjaCgpCkBAIC0x
NDAyLDcgKzE0MDgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRC
eUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9zclJldHVyblBvaW50
OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUp
CiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBy
MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCkKICAgICBy
ZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE0OTcsNyArMTUwMyw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkCiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQogICAgICAg
ICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0
Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcmVzdWx0KQorICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NTgsNyArMTU2NCw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdldEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIs
IHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIpCisgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgIGRpc3BhdGNoKCkKIAog
Lm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1NzEsNyArMTU3Nyw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NS
RXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQy
KQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcjApCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQogICAgIHJldHVybihyMCkKIAogZW5kKQpA
QCAtMTk0OCw2ICsxOTU0LDMwIEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3Ry
dWN0LCBnZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBz
bG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0
QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgbWV0YWRh
dGEodDUsIHQwKQorICAgIGdldENhbGxlZSh0MCkKKworICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExp
bmtCaXRbdDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQor
ICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKworICAgIGdldEFyZ3VtZW50U3RhcnQodDMp
CisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ3AgdDMKKyAgICBhZGRwIGNmciwgdDMKKyAgICBz
dG9yZXEgdDIsIENhbGxlZVt0M10KKyAgICBnZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyh0
MikKKyAgICBzdG9yZVBDKCkKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBzcAorICAgIHByZXBhcmVDYWxs
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRh
cmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgY2FsbFRhcmdldEZ1bmN0
aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKworLm9w
Q2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xv
d1BhdGgsIHByZXBhcmVDYWxsKQorZW5kCisKIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1l
LCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0NSwgdDAp
CkBAIC0xOTU2LDI0ICsxOTg2LDE5IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBz
bG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgICAg
ICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAgIGVuZCwg
bWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5D
YWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDAsIHQzKQotICAgICAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93Ci0gICAgICAg
IGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQotICAgICAgICBsc2hpZnRpIDMs
IHQzCi0gICAgICAgIG5lZ3AgdDMKLSAgICAgICAgYWRkcCBjZnIsIHQzCi0gICAgICAgIHN0b3Jl
cSB0MiwgQ2FsbGVlW3QzXQotICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdj
LCB0MikKLSAgICAgICAgc3RvcmVQQygpCi0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBtb3ZlIHQzLCBzcAot
ICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQot
ICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21h
Y2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQotICAgIC5vcENhbGxTbG93Ogot
ICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAgICBtYWNybyBnZXRDYWxsZWUo
ZHN0KQorICAgICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKKyAgICAgICAgZW5kCisKKyAgICAg
ICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFydChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9w
Y29kZVN0cnVjdCwgbV9hcmd2LCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdl
dEFyZ3VtZW50Q291bnQoZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fYXJnYywgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBjYWxsSGVscGVyKG9wY29kZU5h
bWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIHByZXBhcmVDYWxs
LCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwg
Z2V0QXJndW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI3Niw3ICsyMzAxLDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAgICAgICAgcmV0dXJuKHQyKQogICAg
IGVuZAogCkBAIC0yMjg0LDE0ICsyMzA5LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAg
ICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAK
ICAgICAgICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkK
LSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDApCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCiAgICAgICAgIHJl
dHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQogICAgICAgICBs
b2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAg
IGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJu
KHQwKQogICAgIGVuZAogCkBAIC0yNTUxLDcgKzI1NzYsNiBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCBPcFByb2ZpbGVDb250cm9sRmxvdywgbWFjcm8gKHNp
emUsCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi0KIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9y
ZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKQEAgLTI1NjcsNiArMjU5MSwxNDcgQEAgbGxp
bnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGMKIGVuZCkKIAogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0
ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5h
cnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJy
b3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0
aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFz
dFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93
aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lk
ZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91
bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2Fz
ZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJh
dG9yT3BlbkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljOgor
ICAgIG1hY3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0QnlJZFN0
YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9z
eW1ib2xJdGVyYXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNs
dWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JPcGVuLCBt
X3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1
ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKworICAg
IGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9v
cGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJhdG9yUHJvZmlsZSwgbV9pdGVyYXRvciwg
cHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0QnlJZENoZWNrcG9pbnQsIG1ldGFk
YXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVu
dEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldEJ5SWRTdGFydDoKKyAgICBtYWNybyBzdG9yZU5l
eHRBbmREaXNwYXRjaCh2YWx1ZSkKKyAgICAgICAgbW92ZSB2YWx1ZSwgdDIKKyAgICAgICAgZ2V0
KG1fbmV4dCwgdDEpCisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDEsIDhdCisgICAgICAgIGRp
c3BhdGNoKCkKKyAgICBlbmQKKworICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQz
KQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0
U2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRh
ZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoKQorCisuaXRlcmF0b3JPcGVuR2VuZXJp
Y0dldE5leHRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9y
X29wZW5fZ2V0X25leHQpCisgICAgZGlzcGF0Y2goKQorCitlbmQpCisKK2xsaW50T3BXaXRoTWV0
YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9u
ZXh0LCB0MCkKKyAgICBidHFueiB0MCwgdDAsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgbWV0
YWRhdGEoYTIsIHQ1KQorICAgIG1hY3JvIGZhc3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1Bh
dGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZh
c3RXaWRlMTYoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rf
d2lkZTE2KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xv
d1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUo
ZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwgZmFzdFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9w
KCkgZW5kKQorCisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNz
ZW1ibHkgc2luY2UgaXQncyB0aGUgImZhc3QiIGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHBy
IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgZGlzcGF0
Y2goKQorCisuaXRlcmF0b3JOZXh0R2VuZXJpYzoKKyAgICBtYWNybyBnb3RvR2V0RG9uZUNoZWNr
cG9pbnQoKQorICAgICAgICBqbXAgLmdldERvbmVTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8g
Z2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgZ2V0KG1fbmV4dCwgZHN0KQorICAgIGVuZAorCisgICAg
bWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNp
emUsIE9wSXRlcmF0b3JOZXh0LCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBt
YWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwg
ZHN0CisgICAgZW5kCisKKyAgICAjIFVzZSBtX3ZhbHVlIHNsb3QgYXMgYSB0bXAgc2luY2Ugd2Ug
YXJlIGdvaW5nIHRvIHdyaXRlIHRvIGl0IGxhdGVyLgorICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0
b3JfbmV4dCwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwsIE9wSXRlcmF0b3JO
ZXh0LCBtX25leHRSZXN1bHRQcm9maWxlLCBtX3ZhbHVlLCBwcmVwYXJlRm9yUmVndWxhckNhbGws
IHNpemUsIGdvdG9HZXREb25lQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJn
dW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KQor
CisuZ2V0RG9uZVN0YXJ0OgorICAgIG1hY3JvIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUoZG9u
ZVZhbHVlKQorICAgICAgICAjIHVzZSB0MCBiZWNhdXNlIHBlcmZvcm1HZXRCeUlESGVscGVyIHVz
dWFsbHkgcHV0cyB0aGUgZG9uZVZhbHVlIHRoZXJlIGFuZCBvZmZsaW5lYXNtIHdpbGwgZWxpZGUg
dGhlIHNlbGYgbW92ZS4KKyAgICAgICAgbW92ZSBkb25lVmFsdWUsIHQwCisgICAgICAgIGdldCht
X2RvbmUsIHQxKQorICAgICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgICAgICBqbXAg
LmdldFZhbHVlU3RhcnQKKyAgICBlbmQKKworCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1
ZSwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0RG9uZVNsb3cKKyAgICBwZXJm
b3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2Rv
bmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBU
b0dldFZhbHVlKQorCisuZ2V0RG9uZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxp
bnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKKyAgICBsb2FkVmFyaWFibGUoZ2V0
LCBtX2RvbmUsIHQwKQorCisgICAgIyBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlIHB1dHMgdGhl
IGRvbmVWYWx1ZSBpbnRvIHQwCisuZ2V0VmFsdWVTdGFydDoKKyAgICAjIEJyYW5jaCB0byBzbG93
IGlmIG5vdCBtaXNjIHByaW1pdGl2ZS4KKyAgICBidHFueiB0MCwgfjB4ZiwgLmdldFZhbHVlU2xv
dworICAgIGJ0aXogdDAsIDB4MSwgLm5vdERvbmUKKyAgICBkaXNwYXRjaCgpCisKKy5ub3REb25l
OgorICAgIG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRjaCh2KQorICAgICAgICBtb3ZlIHYsIHQy
CisgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwg
OF0KKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDAsIDB4YmFkZGIwMWUpCisg
ICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgICMgUmVsb2FkIHRoZSBuZXh0IHJlc3Vs
dCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2ZSBjbG9iYmVyZWQgdDMuCisg
ICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAgIyBXZSBkb24ndCBuZWVkIHRv
IGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMgYSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2ls
bCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUuCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIo
T3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0
VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFuZERpc3BhdGNoKQorCisuZ2V0
VmFsdWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25l
eHRfZ2V0X3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKworCiBsbGludE9wV2l0aFByb2Zp
bGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9iYXNlLCB0
MSkKICAgICBnZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbV9pbmRleCwgdDIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKaW5kZXggOGQ3Njcx
MTZjMDU0ZTVlYTY2NGVmNDA2MmM1NmYyNjA1ZTBkOGI0NS4uNTg5YWUwZTBmM2VkMzRiNjYxZTg1
NjJiY2EyOTgwMmVjMTBlNWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vdHJhbnNmb3JtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3RyYW5zZm9ybS5yYgpAQCAtNjI5LDcgKzYyOSw3IEBAIGVuZAogCiBjbGFzcyBOb2RlCiAg
ICAgZGVmIHZhbGlkYXRlCi0gICAgICAgIHJhaXNlICJVbnJlc29sdmVkICN7ZHVtcH0gYXQgI3tj
b2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgJyN7ZHVtcH0nIGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHZhbGlkYXRlQ2hp
bGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCmluZGV4IGI4ZGU5NjU1ODJmN2Q5MTI3MTMzN2Q1NDMxOTAzZTgzMThjMjZmNDcuLjkz
ZTdlNzM2MDFiZjczZTdkYWQ3NTRlYWJjMTU2M2Q4YTBlODcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNTMsOCArMTU0LDExIEBAIG5hbWVzcGFjZSBK
U0MgewogI2RlZmluZSBSRVRVUk5fUFJPRklMRUQodmFsdWVfXykgXAogICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElORyh2YWx1ZV9fLCBQUk9GSUxFX1ZBTFVFKHJldHVyblZhbHVlX18pKQogCi0jZGVm
aW5lIFBST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFs
dWUpOyBcCisjZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWVfXykgXAorICAgIFBST0ZJTEVfVkFM
VUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQorCisjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFs
dWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKKyAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBc
CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRocm93QXJpdHlDaGVja1N0YWNr
T3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBz
Y29wZSkKQEAgLTk2NSw2ICs5NjksMTI4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9i
eV9pZCkKICAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1Byb3Bl
cnR5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKSkpOwogfQogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xvd1BhdGhSZXR1cm5U
eXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIC8vIERv
bid0IHNldCBQQzsgd2UgY2FuJ3QgdGhyb3cgYW5kIGl0J3MgcmVsYXRpdmVseSBzbG93LgorICAg
IEJFR0lOX05PX1NFVF9QQygpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lk
dGg8T3BJdGVyYXRvck9wZW4sIHdpZHRoPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck9wZW46Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworICAg
IEpTVmFsdWUgaXRlcmFibGUgPSBHRVRfQyhieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1ZhbHVlKCk7
CisgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYWJsZSwgbV9pdGVyYWJsZVByb2ZpbGUpOworICAg
IEpTVmFsdWUgc3ltYm9sSXRlcmF0b3IgPSBHRVRfQyhieXRlY29kZS5tX3N5bWJvbEl0ZXJhdG9y
KS5qc1ZhbHVlKCk7CisgICAgYXV0byYgaXRlcmF0b3IgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYXRv
cik7CisKKyAgICBhdXRvIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24gPSBbJl0geworICAg
ICAgICBpZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisKKyAgICAgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVj
a2VkIHRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlkLgorICAgICAgICBKU0Z1bmN0aW9uKiBz
eW1ib2xJdGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5
bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7IAorCisgICAgICAgIGlmIChn
bG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JGdW5jdGlvbigpICE9IHN5
bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKworICAgICAgICAvLyBXZSBzaG91bGQgYmUgZ29vZCB0byBnby4KKyAgICAgICAg
bWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJh
dGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICAg
ICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkgPSBKU1ZhbHVlKCk7CisgICAgICAgIGF1dG8qIGl0ZXJh
dGVkT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oaXRlcmFibGUpOworICAgICAgICB7CisgICAg
ICAgICAgICBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktp
bmQ6OlZhbHVlcyk7CisgICAgICAgIH0KKyAgICAgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYXRv
ci5qc1ZhbHVlKCksIG1faXRlcmF0b3JQcm9maWxlKTsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
bk1vZGU6OkZhc3RBcnJheTsKKyAgICB9OworCisgICAgaWYgKGl0ZXJhYmxlLmluaGVyaXRzPEpT
QXJyYXk+KHZtKSkgeworICAgICAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbigp
ID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJh
eSkpOworICAgIH0KKworICAgIC8vIFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdl
bmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9
IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBT
TE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0
dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0
YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7
CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBj
LCBtZXRhZGF0YVB0cik7Cit9CisKK3RlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7Cisg
ICAgQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldpZHRoPE9wSXRl
cmF0b3JOZXh0LCB3aWR0aD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9ICpyZWludGVycHJldF9j
YXN0PE9wSXRlcmF0b3JOZXh0OjpNZXRhZGF0YSo+KG1ldGFkYXRhUHRyKTsKKworICAgIEFTU0VS
VCghR0VUKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpKTsKKyAgICBKU09iamVjdCogaXRlcmF0
b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihHRVQoYnl0ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgp
KTs7CisgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxlKS5qc1Zh
bHVlKCkuYXNDZWxsKCk7CisgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHluYW1pY0Nh
c3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgeworICAgICAgICBpZiAoYXV0byBh
cnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChhcnJheS0+
c3RydWN0dXJlSUQoKSk7CisKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRh
dGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJ
dGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgICAgICAgICBhdXRvJiBpbmRleFNsb3QgPSBh
cnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4
KTsKKyAgICAgICAgICAgIGludDY0X3QgaW5kZXggPSBpbmRleFNsb3QuZ2V0KCkuYXNBbnlJbnQo
KTsKKyAgICAgICAgICAgIEFTU0VSVCgwIDw9IGluZGV4ICYmIGluZGV4IDw9IG1heFNhZmVJbnRl
Z2VyKCkpOworCisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICAgICAgYm9vbCBk
b25lID0gaW5kZXggPT0gLTEgfHwgaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpOworICAgICAgICAg
ICAgR0VUKGJ5dGVjb2RlLm1fZG9uZSkgPSBqc0Jvb2xlYW4oZG9uZSk7CisgICAgICAgICAgICBp
ZiAoIWRvbmUpIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVy
ZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAgICAgICAgICAgICBp
bmRleFNsb3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4
KSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
WENFUFRJT04oKTsKKyAgICAgICAgICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBtX3Zh
bHVlUHJvZmlsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5v
IG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlzIGEgcHJpbWl0
aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpz
TnVtYmVyKC0xKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdFVChieXRlY29kZS5t
X3ZhbHVlKSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8vIFJl
dHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5l
cmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90
cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
Yywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zh
c3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7
CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBj
LCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3JfbmV4dF90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIEJFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3
MTM1ZTJiNzg0YWI2OGRiNWY1NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjdhYjA4YTJmYWQ2OWE0YjBk
NDU5MjM3NzkzNzVkY2Q4YjJlZTBhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDYsNiArMjQ2LDggQEAgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaW5fYnlfaWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV92
YWwpOworLy8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QpOwor
Ly8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfc3RyY2F0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9fcHJpbWl0aXZlKTsKQEAgLTI4Myw2ICsyODUsMTggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc3ByZWFkKTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQ
YXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxsRnJhbWUq
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdyhD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRh
KTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVu
X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQq
IG1ldGFkYXRhKTsKKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJuIFNsb3dQYXRo
UmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqLCBj
b25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdyhDYWxs
RnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dp
ZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsK
K2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1l
dGFkYXRhKTsKKwogdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlwZShT
TE9XX1BBVEggKikoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNlLi42ODc0ZWM3OTAz
NzU4Y2Y5ZGY0NDM5YTYyMzkwNjFjZjI3MDU4OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTMzMCw2ICszMzAsMjQgQEAgY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhJ
bnRyaW5zaWMgaW50cmluc2ljKQoreworICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgY2Fz
ZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5z
aWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7CisgICAgY2FzZSBBcnJh
eUtleXNJbnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNpYzoKKyAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OktleXM7CisgICAgY2FzZSBBcnJheUVudHJpZXNJbnRy
aW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVz
cGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRl
eCA2YmZmZjkwMDYzY2UyZDdkOGFjMjA1NDJlOGE4ZDdlMThjNDJiYWU5Li43MWJhM2FhZDM1OTY5
NTZhZmMyZDBhYmZjNmZkMWRlMTdhZjFlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuaApAQCAtMTg3LDYgKzE4Nyw4IEBAIGVudW0gSW50cmluc2ljIDogdWlu
dDhfdCB7CiAgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAorT3B0aW9uYWw8SXRlcmF0aW9u
S2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKKwogY29uc3QgY2hh
ciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKaW5kZXggNTk5
ZTc3NGIwM2RkM2U1YmE2ZDRkN2ZhMzRiYjk4YTk2ODdlYzYwOS4uNGZkMGExMTY1MjVjZGM1MzJh
NTNkMGI4YjVhY2I1MzM4N2E4ZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBK
U09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3Qq
PihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAgICBz
dGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCog
aXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CisgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRv
ciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBpdGVyYXRl
ZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGtpbmQpKSk7CisgICAgfQogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0
ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQyYzUzNzc3Y2Nk
ZWM1ZmNkNGRiODEwZDE4NTRmYTYwYzlmNDgxZWQuLmQzMDJiMTg2NTNlMzg0OTc4OTJiNjA1ZmEx
MjhhOTljMGY5NGYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKQEAgLTIyNSw2ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5
cGUuCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKFZNJikg
Y29uc3Q7CisgICAgYm9vbCBpc0NhbGxhYmxlKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxh
YmxlKFZNJiwgQ2FsbFR5cGUmLCBDYWxsRGF0YSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcihWTSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYsIENvbnN0cnVjdFR5
cGUmLCBDb25zdHJ1Y3REYXRhJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZTY1NzhhZWVmZjY5
YzFjZmRiZWJlYWJhZDgwYWY3Li42MmY5ZDI0ZjE1ZDA3MjQ1YWQ3NzZjNDg3OWQyMDdmMTU1N2Nh
YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKQEAgLTgyNyw2ICs4MjcsMTMgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGdW5j
dGlvbihWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGFzQ2VsbCgpLT5pc0Z1bmN0aW9uKHZtKTsK
IH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNvbnN0Cit7Cisg
ICAgQ2FsbFR5cGUgdW51c2VkVHlwZTsKKyAgICBDYWxsRGF0YSB1bnVzZWREYXRhOworICAgIHJl
dHVybiBpc0NhbGxhYmxlKHZtLCB1bnVzZWRUeXBlLCB1bnVzZWREYXRhKTsKK30KKwogaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0sIENhbGxUeXBlJiBjYWxsVHlwZSwgQ2Fs
bERhdGEmIGNhbGxEYXRhKSBjb25zdAogewogICAgIGlmICghaXNDZWxsKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGU4YjIzY2U1OTlkMzYyZGM2NWYzM2Y4ZWYy
M2FkOGY1ZDZkOTcxMWIuLmIyNTAzNTY5Yzg0MjI1NjAxMTQxYTgwY2Y1OTg0OGY1ZDY3M2I3NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC02MCwxMyArNjAsMTMg
QEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAvLyBTcGVjaWZpYyB0eXBlIG92ZXJs
b2Fkcy4KICNkZWZpbmUgRk9SX0VBQ0hfSlNfRFlOQU1JQ19DQVNUX0pTX1RZUEVfT1ZFUkxPQUQo
bWFjcm8pIFwKICAgICBtYWNybyhKU0ltbXV0YWJsZUJ1dHRlcmZseSwgSlNUeXBlOjpKU0ltbXV0
YWJsZUJ1dHRlcmZseVR5cGUsIEpTVHlwZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlKSBcCi0g
ICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUsIEpT
VHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTU3RyaW5nSXRlcmF0b3Is
IEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5
cGUpIFwKICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0T2JqZWN0VHlw
ZSkgXAogICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlLCBK
U1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6
SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhJbnRl
cm5hbEZ1bmN0aW9uLCBKU1R5cGU6OkludGVybmFsRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkludGVy
bmFsRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwgSlNUeXBlOjpBcnJheVR5cGUs
IEpTVHlwZTo6RGVyaXZlZEFycmF5VHlwZSkgXAorICAgIG1hY3JvKEpTQXJyYXlJdGVyYXRvciwg
SlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUp
IFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSwgSlNU
eXBlOjpBcnJheUJ1ZmZlclR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlldywgRmly
c3RUeXBlZEFycmF5VHlwZSwgTGFzdFR5cGVkQXJyYXlUeXBlKSBcCiAgICAgbWFjcm8oSlNQcm9t
aXNlLCBKU1R5cGU6OkpTUHJvbWlzZVR5cGUsIEpTVHlwZTo6SlNQcm9taXNlVHlwZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDI2YWEwZDdjNmVkZmE2M2UzYzhmZjYyMDhmNjI1ZjU3MDM2ODczZjAuLjExNzNhYTA4OGRjYjc2
YzA0ZmU0YjVmYzBiMWE0OTM5MzM5MWU3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU1OSwxMCArNTU5LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0Z1bmN0aW9uPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmcuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7CiAg
ICAgICAgIH0pOwotICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigKLSAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwg
aW5pdC52bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFs
dWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwotICAgICAgICB9KTsKKyAgICBtX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1Zh
bHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKIAogICAgIG1faXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rp
b24+JiBpbml0KSB7CkBAIC0xNzQ5LDcgKzE3NDYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhp
c09iamVjdC0+bV9wYXJzZUludEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcGFyc2VGbG9hdEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09i
amVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24pOwogICAg
IHRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDJjMjhlOGJm
NmNhNGU3M2I1NmNkYTM3NzRiMjE3NjQ3MWE5ZjA1MTMuLjBhY2RmYWVkOWU5YWRmYzIzOGFiN2My
MzQyZTM1NDkzMGFhNjkyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMjk5LDcgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9uOwog
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJv
dG9Ub1N0cmluZ0Z1bmN0aW9uOwotICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNG
dW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlz
ZVJlc29sdmVGdW5jdGlvbjsKQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5j
dGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0Owog
ICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0
aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAg
IEpTRnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBK
U0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9t
aXNlUmVzb2x2ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpAQCAtNjE5LDYgKzYxOSw3IEBAIHB1Ymxp
YzoKICAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9uTWFp
blRocmVhZCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhl
Y0Z1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCk7IH0KICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQogICAgIEdl
dHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJT
ZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYzI4YmZjMzRiZmU4MGY3NjM0YTQw
ZTFmMzhkMDI5N2I2YTcwZDcxZS4uYmRmYmY0YzdlMWM5OTgxOTg4OWE4N2EwODRhZjUxNzFlNzFk
ODU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBA
IC0xMTksNiArMTE5LDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1p
bmdBcGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAw
MCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRh
aWxEZWxldGVkRnJhbWVzU2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCisgICAg
dihCb29sLCB1c2VJdGVyYXRpb25JbnRyaW5zaWNzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwK
KyAgICBcCiAgICAgdihCb29sLCB1c2VPU0xvZywgZmFsc2UsIE5vcm1hbCwgIkxvZyBkYXRhTG9n
KClzIHRvIG9zX2xvZyBpbnN0ZWFkIG9mIHN0ZGVyciIpIFwKICAgICAvKiBkdW1wRGlzYXNzZW1i
bHkgaW1wbGllcyBkdW1wREZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KEJvb2wsIGR1bXBEaXNh
c3NlbWJseSwgZmFsc2UsIE5vcm1hbCwgImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFsbCBKSVQgY29t
cGlsZWQgY29kZSB1cG9uIGNvbXBpbGF0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNzY0YWQwNjVhYzAxMWUzM2MzMjM4Y2Q5ZGE5NTM5
YzE1ODM5MjNlNS4uOWMyY2U3YWZhZTZlMzhlN2E2MDgwMjZmNTE3NzExMGUzYzg1NTYyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjY4LDYg
KzEyNjgsOCBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0
LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHZvaWQgU3RydWN0dXJlOjpkdW1wQnJpZWYo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKSBjb25zdAogewogICAgIG91
dC5wcmludCgiJSIsIHN0cmluZywgIjoiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBp
ZiAoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykKKyAgICAgICAgb3V0LnByaW50
KCIsIiwgSW5kZXhpbmdUeXBlRHVtcChpbmRleGluZ1R5cGUoKSkpOwogfQogCiB2b2lkIFN0cnVj
dHVyZTo6ZHVtcENvbnRleHRIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCmluZGV4IDM1N2JhMmZhMmY3OTI5YTZhOTk4
YTlhNGVmMTRkMmJlNTc1NDYzNzEuLjU2YWJjNGI1M2VjOWZhYjYwNzViZjZkMmViYmJlZDFmMzNj
ZGY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3Zlcmxv
YWRzLmgKKysrIGIvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaApA
QCAtNTksMyArNTksOSBAQAogCiAjZGVmaW5lIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JT
X0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URUdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9SRUxBVElP
TkFMX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVn
cmFsX3Y8VD4pCiAKKyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1f
Q0xBU1NfV0hFTihlbnVtTmFtZSwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09Q
RVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHwsIGVuYWJsZUV4cHJlc3Npb24p
IFwKKyAgICBPVkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCAm
LCBlbmFibGVFeHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xB
U1NfV0hFTihlbnVtTmFtZSwgXiwgZW5hYmxlRXhwcmVzc2lvbikgXAorCisjZGVmaW5lIE9WRVJM
T0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhlbnVt
TmFtZSkgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVt
TmFtZSwgc3RkOjppc19pbnRlZ3JhbF92PFQ+KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhOTI0ZmQyMWEwYmQxOGY2M2FkZWRiYmIwYjFi
Mjk2MDBhZjJmMTIyLi5lMDcwNWE2OGY4MjM1YTIzNjc4MDAyY2I0YzkyYjk2NzBjNzYxMmRjIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDExNSBAQAorMjAyMC0wNC0xNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KKworICAgICAgICBSZWRlc2lnbiBob3cgd2UgZG8gZm9yLW9mIGl0ZXJhdGlvbiBm
b3IgSlNBcnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanM6Cisg
ICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzOgorICAg
ICAgICAoY2F0Y2gpOgorICAgICAgICAoaXRlci5yZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJ
bnRlcmZhY2VFcnJvclRlc3QpOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RS
ZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4pOgorICAg
ICAgICAqIHN0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVzLmpzOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAu
anM6CisgICAgICAgIChmaW5kKToKKyAgICAgICAgKGkubGV0LnYub2YuZmluZCk6CisgICAgICAg
ICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanM6CisgICAgICAg
IChmaW5kKToKKyAgICAgICAgKHNldCBhZGQpOgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1m
b3Itb2YtZG9uZS1nZXR0ZXIuanM6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0LnJldHVy
bi5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGku
bGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5y
ZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpz
OgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IHZhbHVlKToKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9s
Lml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgICog
c3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qczoKKyAgICAgICAg
KGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0
ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNh
dGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2Yt
aGVhZGVyLmpzOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0
Y2gpOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5q
czoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFi
bGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6Cisg
ICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0
ZXItaW4tZm9yLW9mLWhlYWRlci5qczoKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgor
ICAgICAgICAoaS5jYXRjaCk6CisKKzIwMjAtMDQtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVy
YXRpb24gZm9yIEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVz
LmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5q
czoKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKGl0ZXIucmV0dXJuKToKKyAgICAgICAgKGl0
ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlRXJy
b3JUZXN0UmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlQnJlYWtUZXN0UmV0dXJu
KToKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmct
Zm9yLW9mLW9uLW1hcC5qczogQWRkZWQuCisgICAgICAgIChmaW5kKToKKyAgICAgICAgKGkubGV0
LnYub2YuZmluZCk6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1v
Zi1vbi1zZXQuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6CisgICAgICAgIChzZXQgYWRkKToK
KyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCBkb25lKToKKyAgICAgICAg
KGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0
ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgICogc3Ry
ZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5s
ZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IHZhbHVlKToKKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAg
ICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZv
ci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6Cisg
ICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5q
czogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLmdldCBkb25lKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVy
YXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRj
aCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpz
OiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVy
bik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS12YWx1
ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVy
YWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCB2YWx1ZSk6CisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFi
bGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorCiAyMDIwLTA0LTE1ICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbRUNNQS00MDJdIEV4dGVu
c2lvbiB2YWx1ZXMgc2hvdWxkIGRlZmF1bHQgdG8gdHJ1ZSwgY2Fub25pY2FsaXplIHdpdGhvdXQg
Ii10cnVlIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJh
dGUtYXJyYXktZW50cmllcy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVy
YXRlLWFycmF5LWVudHJpZXMuanMKaW5kZXggNTVlY2MwYmZjZjkxOWNhY2FlN2ZkMTVkZGI0MGIx
NGZkY2E5NGVkYS4uMjAxMmI5MTI4NTBmNTgxMTY3ZmJkMzEwNTA1OWI3NmQ3NjYzYjZkOCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50
cmllcy5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJh
eS1lbnRyaWVzLmpzCkBAIC0zLDEwICszLDEyIEBAIGZ1bmN0aW9uIGZvbygpIHsKICAgICB2YXIg
YXJyYXkgPSBbXTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1MDAwOyBpKyspCiAgICAgICAg
IGFycmF5LnB1c2goaSk7Ci0gICAgCisKICAgICB2YXIgcmVzdWx0ID0gMDsKLSAgICBmb3IgKHZh
ciBba2V5LCB2YWx1ZV0gb2YgYXJyYXkuZW50cmllcygpKQorICAgIGZvciAodmFyIFtrZXksIHZh
bHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpIHsKKyAgICAgICAgcHJpbnQoa2V5ICsgIiAiICsgJHZt
LmluZGV4aW5nTW9kZShhcnJheSkpOwogICAgICAgICByZXN1bHQgKz0ga2V5ICsgdmFsdWUgKyBh
cnJheVtrZXldOworICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcyBiL0pTVGVzdHMvc3RyZXNzL2N1
c3RvbS1pdGVyYXRvcnMuanMKaW5kZXggZmQ2NDEzZmUzYjVlOTAzYWZmZTM4MDNmZDAwNGMwY2Ix
ZjFjNjRmMy4uZDNkMWJkN2U4NThlODc0ZmJkMTEzZDgyZjkyMTFlYTRiZDVlZjdiNSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCkBAIC0yMiw3ICsyMiw3IEBAIGZvciAodmFyIHZhbHVl
IG9mIGl0ZXIpIHsKICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsK
IH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVk
LiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAt
NTMsNyArNTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5n
KGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICgh
cmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsK
QEAgLTEwOCwxMCArMTA4LDEwIEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlm
IChTdHJpbmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1cCBuZXh0LiIpCi0gICAgICAgIHRocm93
ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBp
ZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOwor
ICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUp
ICE9PSAiRXJyb3I6IGxvb2tpbmcgdXAgcmV0dXJuLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjog
YmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiAKIApAQCAtMTY1
LDEwICsxNjUsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmlu
ZyhlKSAhPT0gIkVycm9yOiBuZXh0IGlzIGNhbGxlZC4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKHJldHVy
bkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICB0aHJv
dyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC0xODMsNyArMTgzLDcg
QEAgdmFyIGl0ZXIgPSB7CiAgICAgfSwKICAgICByZXR1cm46IGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMg
Y2FsbGVkLiI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsK
ICAgICB9CiB9OwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChl
KSB7CiAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIp
Ci0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAg
IHRocm93IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVy
biBpcyBub3QgY2FsbGVkLiI7CkBAIC0yMTAsNyArMjEwLDcgQEAgdmFyIGl0ZXIgPSB7CiAgICAg
fSwKICAgICByZXR1cm46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1
ZTsKLSAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKICAgICB9CiB9OwogdHJ5IHsKQEAg
LTIxOCw4ICsyMTgsOCBAQCB0cnkgewogICAgICAgICBicmVhazsKICAgICB9CiB9IGNhdGNoIChl
KSB7Ci0gICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiIpCi0g
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgaWYgKFN0
cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gd2FzIGNhbGxlZCIpCisgICAgICAgIHRocm93IGU7
CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3Qg
Y2FsbGVkLiI7CkBAIC0yNTUsMTAgKzI1NSwxMCBAQCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFj
ZUVycm9yVGVzdChub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAgICAgfSBjYXRjaCAo
ZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0K
ICAgICBpZiAocmV0dXJuQ2FsbGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBj
YWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwog
fQogCiBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJldHVybihub3RJdGVyYXRv
clJlc3VsdCkgewpAQCAtMjgyLDcgKzI4Miw3IEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNl
RXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNh
dGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0
ZXJhdGlvbi4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAi
ICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmICghcmV0dXJuQ2FsbGVk
KQogICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVkLiI7CkBAIC0zMTMs
NyArMzEzLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4obm90
SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAg
aWYgKFN0cmluZyhlKSAhPT0gIlR5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0
aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1
cm5DYWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI0OThhNjA0MzNkZjJkYzE3NTNhOWQ3Yjg4Yjk2YmQzMjQwMDZmODEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVzLmpzCkBAIC0wLDAg
KzEsMjMgQEAKK2Z1bmN0aW9uIHRlc3QoYXJyYXkpIHsKKyAgICBsZXQgc3VtID0gMDsKKyAgICBm
b3IgKGxldCB2IG9mIGFycmF5KSB7CisgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gIm51bWJlciIp
CisgICAgICAgICAgICBzdW0gKz0gdjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJu
IHN1bTsKKyAgICB9Cit9Citub0lubGluZSh0ZXN0KTsKKworbGV0IGFycmF5ID0gWzEsMiwzLDQs
InN0cmluZyJdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGlmICh0ZXN0
KGFycmF5KSAhPT0gMTApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCisKK2FycmF5
ID0gWzEsMiwzLDQse31dCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgaWYg
KHRlc3QoYXJyYXkpICE9PSAxMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFw
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MzhiN2VlODE0MjRhMmQyZjUzOGNlN2IyMDU5ZDhkNmU0NThlNGJhCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9y
LW9mLW9uLW1hcC5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiAqZmluZChub2RlcywgcCkK
K3sKKyAgICBmb3IgKGxldCBbYXJyYXldIG9mIG5vZGVzKSB7CisgICAgICAgIGlmICghYXJyYXku
ZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgeWll
bGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUoZmluZCk7CisKK2xldCBtYXAgPSBuZXcgTWFw
KCk7Citub0lubGluZShtYXBbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQpOworZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTI7ICsraSkKKyAgICBtYXAuc2V0KFsxLDIsNCw1LDVdLCB7fSk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmb3IgKGxldCB2IG9mIGZpbmQobWFwLCBp
ICUgMikpIHsgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRh
aW5pbmctZm9yLW9mLW9uLXNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWlu
aW5nLWZvci1vZi1vbi1zZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJmMzI3MzkwZDczNzVhMjIwMmFlNTlh
MTEyNDY1Njk4Y2I2ZWFiNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKQEAgLTAsMCArMSwyMyBAQAorZnVuY3Rp
b24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgYXJyYXkgb2Ygbm9kZXMpIHsKKyAg
ICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2ID09PSBwKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAgICB9Cit9Citub0lubGluZShmaW5kKTsKKwor
bGV0IHNldCA9IG5ldyBTZXQoKTsKK25vSW5saW5lKHNldFtTeW1ib2wuaXRlcmF0b3JdKCkubmV4
dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKQorICAgIHNldC5hZGQoWzEsMiw0LDUs
NV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGZvciAobGV0
IHYgb2YgZmluZChzZXQsIGkgJSAyKSkgeworICAgICAgICBpZiAoaSAlIDIgIT09IDEpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vIHJlc3VsdCBzaG91bGQgaGF2ZSBiZWVuIHByb2R1
Y2VkIGhlcmUiKTsKKyAgICAgICAgaWYgKCEodiBpbnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigicmVzdWx0IHdhcyBub3QgYW4gYXJyYXkiKTsKKyAgICB9Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIu
anMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWI0YzQ5YzkzYjI5ZmNiMGY3MTBjNmM4MmQxZmQ4ODAwMWEyMmUyNQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qcwpA
QCAtMCwwICsxLDIzIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0
IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4
dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgZ2V0IGRvbmUoKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbmFsVGllcigpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgRm9yY2VPU1IoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIFtT
eW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeyBy
ZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChf
IG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIHsKKyAgICB9CisgICAgaWYgKHJldHVybkNh
bGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
b3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzA5NmVlMDNlMTUy
NTczYWVkYzY0ZDA0MzlmYjJiZjIyYzY0MTViCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpAQCAtMCwwICsxLDIxIEBACitm
b3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZh
bHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgZG9uZTogMCwKKyAgICAgICAgbmV4
dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgZG9uZTogdGhpcy5k
b25lKyssCisgICAgICAgICAgICAgICAgZ2V0IHZhbHVlKCkgeyBpZiAoaXNGaW5hbFRpZXIoKSkg
Rm9yY2VPU1IoKTsgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBbU3lt
Ym9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0
dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBv
ZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxs
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzIGIvSlNUZXN0cy9z
dHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYyYmQzMmFkZDdjYzNiYTM0MzI1NGRhNzEwOGU1MTlmZjc1YjMyNTEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3Qu
anMKQEAgLTAsMCArMSwxNiBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAg
IGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAg
IG5leHQoKSB7IHJldHVybiAxOyB9LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0
dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwK
KyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKKyAgICAgICAgICAgIHRocm93IGU7Cisg
ICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1m
b3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1p
bi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YTE0MmM4YTZjNTRmNDc2ZWMwMzlhMTRl
OWUyZDNlN2I5NmRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1m
cm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNCBAQAorZm9y
IChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgbGV0IHJl
dHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7IHJldHVy
biB0aGlzOyB9LAorICAgICAgICBnZXQgZG9uZSgpIHsKKyAgICAgICAgICAgIHRocm93IGVycm9y
ID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkg
eyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJu
Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9y
IChhIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAgICAgICB0aHJvdyBl
OworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZv
ci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9m
LWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjE5NGZkN2NhNWFjNTlhZDY5NjE5NDJmODYyN2I2MGE1
YWEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1uZXh0
LWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNCBAQAorZm9yIChsZXQgaSA9IDA7IGkg
PD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxlZDsKKyAg
ICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICB0aHJvdyBl
cnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3ltYm9sLml0ZXJhdG9y
XSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgIHJl
dHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIG5vSW5saW5lKGl0ZXJh
YmxlLm5leHQpOworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcm9ycigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYg
KGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0
dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMg
Yi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUwODc4ODM1OGU0ZWQzMDYxMmFjYzZmMmVmM2EzMGQ4ZDU2NjY3OWQK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRl
ci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2ZvciAobGV0IGkgPSAwOyBp
IDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1cm5DYWxsZWQgPSBm
YWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7IHJldHVybiB0aGlz
OyB9LAorICAgICAgICBkb25lOiBmYWxzZSwKKyAgICAgICAgZ2V0IHZhbHVlKCkgeworICAgICAg
ICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW1N5
bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7Cisg
ICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAgICB0
cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFibGUpIHsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgICAgIH0KKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAg
fQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396690</attachid>
            <date>2020-04-16 12:54:04 -0700</date>
            <delta_ts>2020-04-16 13:11:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200416125403.patch</filename>
            <type>text/plain</type>
            <size>253083</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDI5MTBmMjUzY2UyYzRkYjQwNzUwZWJiZjFkYTIyYjZmNGY2YmM3Li5jNWY5ZTU1MDNiOGVjZWRi
MzM5ZTlkMzI4NDk0ODE2MGY2NmEyMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMjAtMDQtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5n
L1BoYW50b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikg
Um9sbGluZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dp
dGNoaW5nIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwgZWFjaCB2
YXJpYWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpvcjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2Vy
dmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
Ojp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
T3BlcmFuZHNGb3JDaGVja3BvaW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjphcnJheVByb2Zp
bGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAg
KEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1w
bCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZh
bHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0aW9uRm9yKToKKyAgICAgICAg
KEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbCk6Cisg
ICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTElu
dElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNl
SW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUlu
c3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1
Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lk
ZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5o
LgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6TExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc1N1YnR5cGVT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uQ29udGFpbnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJT
Y29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVy
YXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWND
bG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVy
YXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVs
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0
aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
dGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVl
cyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpE
Rkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmJvdHRv
bVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9N
SklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURP
TUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5
cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBo
YXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNh
dGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlm
aWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNpemUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3BlY3Vs
YXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5o
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAg
ICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvTWV0YWRhdGEucmI6
CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENh
bGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0
L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9v
cGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBT
bG93VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWND
YWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAo
SlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJh
dG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90
cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAo
SlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAg
ICAgIChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1l
L0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbkNvbmN1cnJlbnRseSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAyMDIwLTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3Iv
SlNTZXRJdGVyYXRvciB3aXRoIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDMyMGFi
MGUzMThhMDYxZTYwYjkzNGZmMjExYzE3ZmI4MTY1ZDNmNi4uYTlkZWYyNjg5NmQxNWY5OTNhNTkz
YzA4OWU3YjkyZmYzYTYwNzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNC0xNiAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWRlc2lnbiBo
b3cgd2UgZG8gZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0VudW1DbGFzc09wZXJhdG9yT3Zl
cmxvYWRzLmg6CisKIDIwMjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3QgdG8gV0tD
b250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGJhNjIwMTkwMjMyNWZmZDA0MjYwMjI5YWM0Yzc0MDgxZjhlOTRm
YWQuLjk1OTUzZGI0OTMwMjJhYzFlYzQwZTM5ZjEyNDc5NmY4MDU3MTU4NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNTMsNiArMTM1Myw3IEBAIFdFQktJVF9DT1BZ
X0ZJTEVTKEphdmFTY3JpcHRDb3JlX0NvcHlQcml2YXRlSGVhZGVycwogICAgIEZJTEVTICR7SmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSU30KICAgICBGTEFUVEVORUQKICkK
K2FkZF9kZXBlbmRlbmNpZXMoSmF2YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIEJ5dGVj
b2RlcyBKU0NCdWlsdGlucykKICMgSmF2YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIG5l
ZWRzIHRvIGhhdmUgYSBkaXJlY3Qgb3IgaW5kaXJlY3QKICMgZGVwZW5kZW5jeSBvZiBKYXZhU2Ny
aXB0Q29yZSBmb3IgQ01ha2UgVmlzdWFsIFN0dWRpbyBnZW5lcmF0b3IgdG8KICMgZWxpbWluYXRl
IGR1cGxpY2F0ZWQgY3VzdG9tIGNvbW1hbmRzLiBPdGhlcndpc2UsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0YjhlMTgxY2MyOGUu
LjVmNjNhZjMwYTc1MzQ3ZWU2Y2ViZTg5Yjg0YzA3OTg3YzA4ODJlNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTAzLDYgKzExMDMsOCBAQAogCQk1M0M0RjY2QjIxQjFBNDA5
MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUds
b2JhbE9iamVjdC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9w
Y29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNDNkZFRUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCAqLzsgfTsK
IAkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMwODFFQTUzM0Q4MDA3NjA0
OUQgLyogV2FzbUJCUVBsYW4uaCAqLzsgfTsKKwkJNTNEMzU0OTkyNDBEODhCRDAwODk1MEREIC8q
IEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNv
ZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5
ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERC
MURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4
RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyog
SlNWYWx1ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3
NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBA
IC0zODE0LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9w
Y29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNt
T3Bjb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcx
RUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZU9wZXJhbmRz
Rm9yQ2hlY2twb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29k
ZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVVc2VEZWYuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9u
TW9kZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Q0NDREQjFE
QUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzV2FzbUFkZHJlc3NWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQWRk
cmVzc1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NEREMURBRjA5
QTAwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2Fz
bUFkZHJlc3NWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRTFGOEY3
MjE1NDcxNDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1ZhbHVlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODIyMCw4ICs4MjI1LDEwIEBACiAJCQkJQzJGQ0FFMEUxN0E5QzI0RTAwMzRDNzM1IC8q
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgKi8sCiAJCQkJQzJGQ0FFMEYxN0E5QzI0RTAw
MzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oICovLAogCQkJCTBGNjY2RUJFMTgz
NTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCisJ
CQkJNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3Bv
aW50LmggKi8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0
ZXIuY3BwICovLAogCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3Jp
dGVyLmggKi8sCisJCQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVm
LmNwcCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYu
aCAqLywKIAkJCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywK
IAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1
LDYgKzgzMjIsNyBAQAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlv
blN0cmVhbS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0
aW9uU3RyZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFs
RnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFF
OTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3
MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4
NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJ
MEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5
OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3Jp
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0
ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyog
Qnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcgQEAKIAkJ
CQkwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJW
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJh
dGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFFOTg0QiAv
KiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFF
NzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
MTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUwNzA4MzNj
YmY1YmE1ZWJlZjBlYzguLjE1Mzk3ZThiN2Y0OGE4NGZiMjdmMTFkMmYxMzcxZTBlMmEzMDFjYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCkBAIC02ODYsNiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUz
MihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVz
dGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIExv
Z2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMyKGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAgICAg
ICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3Jl
OChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlUZW1wUmVn
aXN0ZXIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAg
ICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAg
IH0KKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG9yNjQoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTE2MDMsNyArMTYx
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFz
ZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChSZWdpc3Rl
cklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywg
Y29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
ZGRyZXNzKSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCAwKTsKQEAg
LTE2MTgsNyArMTYzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMs
IGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0
b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFRy
dXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBUcnVz
dGVkSW1tMzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAgICAgICAg
IGlmICghaW1tOC5tX3ZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggOGM2OTc5YmI5YjJmZGViMDRj
YTAyNmU3NjZkMjA4YjczYTA2M2YyZS4uMmExZGRlZGVlMzZkYmUzY2RlNTcyZjQ4NjA1YTQ2NGM4
MGI2ZTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpvcjE2OworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjg7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bG9hZDMyOwpAQCAtOTYsNiArOTcsMTIgQEAgcHVibGljOgogICAgICAgICBvcjE2KGltbSwg
QWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
ICAgIG9yOChpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKKyAgICB9CisKICAgICB2
b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVn
aXN0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKaW5kZXggZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4YzBlOGRlMjM3YjIwMS4uOTQyNjU3
YzYyZjA3NDljYTA1YzRlZWU0ZDY3Yjk1ZmU2NDU1ZDllNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApAQCAtMjA3LDEwICsyMDcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRPdXRPZkJvdW5kcygpIHsgbV9vdXRPZkJvdW5kcyA9IHRydWU7IH0K
ICAgICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRz
OyB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJl
KQotICAgIHsKLSAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgp
OwotICAgIH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1
cmVJRCkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsgfQorICAgIHZvaWQg
b2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBtX2xhc3RTZWVuU3RydWN0
dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7IH0KIAogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIHZvaWQg
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
bG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMWY1NjY5NGNlNzAwZmRlYmUx
ZmRjYmQwNDRmMmE4N2QwODhmN2VhMi4uZTI4OGE5OTcyMDA4YmM5NTI5N2Y1OGFmMDk1OWQzZmNk
OTQwZGRlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVzIFsKICAgICA6R2V0QnlWYWxIaXN0b3J5LAog
ICAgIDpHZXRQdXRJbmZvLAogICAgIDpJbmRleGluZ1R5cGUsCisgICAgOkl0ZXJhdGlvbk1vZGVN
ZXRhZGF0YSwKICAgICA6SlNDZWxsLAogICAgIDpKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCwK
ICAgICA6SlNHbG9iYWxPYmplY3QsCkBAIC0xMTYyLDYgKzExNjMsNTkgQEAgb3AgOmdldF9yZXN0
X2xlbmd0aCwKICAgICAgICAgbnVtUGFyYW1ldGVyc1RvU2tpcDogdW5zaWduZWQsCiAgICAgfQog
CisjIFNlbWFudGljYWxseSwgdGhpcyBpcyBpdGVyYXRvciA9IHN5bWJvbEl0ZXJhdG9yKGl0ZXJh
YmxlKTsgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7CisjIEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93
ZXZlciwgdGhpcyBoYXMgc3BlY2lhbCBiZWhhdmlvciB3aGVyZSBuZXh0IGJlY29tZXMgdGhlIGVt
cHR5IHZhbHVlLCB3aGljaAorIyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgaW4gYSBrbm93biBpdGVy
YXRpb24gbW9kZSB0byBvcF9pdGVyYXRvcl9uZXh0Lgorb3AgOml0ZXJhdG9yX29wZW4sCisgICAg
YXJnczogeworICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0YWNrT2Zm
c2V0OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhdGlv
bk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxlUHJvZmls
ZTogVmFsdWVQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZv
LAorICAgICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbW9kZU1l
dGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgc3ltYm9sQ2FsbDog
bmlsLAorICAgICAgICBnZXROZXh0OiBuaWwsCisgICAgfQorCisjIFNlbWFudGljYWxseSwgdGhp
cyBpcyBuZXh0UmVzdWx0ID0gbmV4dC5AY2FsbChpdGVyYXRvcik7IGRvbmUgPSBuZXh0UmVzdWx0
LmRvbmU7IHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IG5leHRSZXN1bHQudmFsdWU7CitvcCA6
aXRlcmF0b3JfbmV4dCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRvbmU6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBp
dGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQs
CisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmls
ZSwKKyAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgbmV4
dFJlc3VsdFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTog
R2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAg
IHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAg
ICBuZXh0UmVzdWx0OiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAg
ICAgY29tcHV0ZU5leHQ6IG5pbCwKKyAgICAgICAgZ2V0RG9uZTogbmlsLAorICAgICAgICBnZXRW
YWx1ZTogbmlsLAorICAgIH0KKwogb3AgOnlpZWxkLAogICAgIGFyZ3M6IHsKICAgICAgICAgZ2Vu
ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xMjkwLDYgKzEzNDQsOCBAQCBvcCA6b3BfZ2V0
X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9u
CiBvcCA6b3BfcHV0X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92YWxfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24KK29wIDpv
cF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9n
dWUKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCmluZGV4IGM2ZWZlMGQ4ZmY2Yzc5ODk2YWZkMDBlMjBjYzQyNzc5ZDNhNGIwYzcuLmQ1ODdl
ZTAzZjI2ZDhkZmI5NGQwOGQ0NDIwNDA4Y2FjNTBhMzhlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCkBAIC0yMzEsNiArMjMxLDEzIEBAIEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1w
TGl2ZW5lc3NGb3JDaGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrCiAgICAgICAg
ICAgICByZXN1bHQuc2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbjog
eworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHQ6IHsKKyAgICAgICAgcmVzdWx0LnNldChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFhY2FjZjNi
ZmVkMTVjNmMxN2NhYTZjYjFlOTU4MTI4ZDVkMmYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5o
CkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKKyNpbmNs
dWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEs
IHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2lu
dEluZGV4KTsKKyAgICByZXR1cm4gJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9m
aWxlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNB
cnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwg
Y2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0
YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFk
YXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKGhhc0FycmF5UHJv
ZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CisgICAgcmV0dXJuICphcnJheVBy
b2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JJ
bXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHBy
IChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAg
ICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9w
ZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAg
ICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0
UHJvZmlsZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorCisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6
b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9p
bnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0
dXJuICZtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0
b3JOZXh0OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQ
cm9maWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIAorICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmls
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK2Jvb2wgaGFzVmFs
dWVQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3Bv
aW50SW5kZXgpCit7CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNo
ZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+
CitWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0
YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChoYXNWYWx1ZVByb2Zp
bGVGb3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJldHVybiAqdmFsdWVQcm9m
aWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQnl0ZWNvZGU+CitPcGVyYW5kIGRlc3RpbmF0aW9uRm9yKGNvbnN0IEJ5dGVjb2RlJiBi
eXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4LCBKSVRUeXBlIHR5cGUgPSBKSVRUeXBl
OjpOb25lKQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNv
bnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAg
ICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Bl
bjo6c3ltYm9sQ2FsbDogcmV0dXJuIGJ5dGVjb2RlLm1faXRlcmF0b3I7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgICAg
IGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2Rl
SUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRl
eCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogeworICAgICAg
ICAgICAgaWYgKHR5cGUgPT0gSklUVHlwZTo6REZHSklUIHx8IHR5cGUgPT0gSklUVHlwZTo6REZH
SklUKQorICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5leHQ6
Om5leHRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fdmFsdWU7IC8vIFdl
IHJldXNlIHZhbHVlIGFzIGEgdGVtcCBiZWNhdXNlIGl0cyBlaXRoZXIgbm90IHVzZWQgaW4gc3Vi
c2VxdWVudCBieXRlY29kZXMgb3Igd3JpdHRlbiBhcyB0aGUgdGVtcCBvYmplY3QgLgorICAgICAg
ICB9CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBieXRlY29k
ZS5tX2RvbmU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4g
Ynl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZQorICAg
ICAgICByZXR1cm4gYnl0ZWNvZGUubV9kc3Q7Cit9CisKKy8vIENhbGwtbGlrZSBvcGNvZGUgbG9j
YXRpb25zCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZUZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRl
eCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4
cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFT
U0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAg
ICAgICByZXR1cm4gYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcjsKKyAgICB9IGVsc2UgaWYgY29u
c3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAg
ICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7
CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgfSBlbHNlCisgICAgICAgIHJl
dHVybiBieXRlY29kZS5tX2NhbGxlZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+
Cit1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0Zvcihjb25zdCBCeXRlY29kZSYg
Ynl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
Y2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9
PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0g
T3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVs
c2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkg
eworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21w
dXRlTmV4dCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV9hcmdjOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3B0cmRp
ZmZfdCBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChjb25zdCBCeXRlY29kZSYgYnl0ZWNv
ZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2tw
b2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9p
dGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVy
YXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhYmxlLm9mZnNldCgpOworICAgIH0gZWxz
ZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7
CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1
dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
IC0gYnl0ZWNvZGUubV9pdGVyYXRvci5vZmZzZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0
dXJuIGJ5dGVjb2RlLm1fYXJndjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRh
ZGF0YT4KK0xMSW50Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm9Gb3IoQnl0ZWNvZGVNZXRhZGF0
YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oY2hlY2twb2ludEluZGV4KTsKKyAgICByZXR1cm4gbWV0YWRhdGEubV9jYWxsTGlua0luZm87
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBm
Njk3ZjcwZTBkNTYyNmMxMy4uYTVhNTA3ZWQyZTkyZGNlZTNmYzE1MWJkZWIyYTYyNzI3M2MyMjc1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCkBAIC0yNTksNiArMjU5LDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKIAogICAg
IFVTRVMoT3BZaWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKIAorICAgIFVTRVMoT3BJdGVyYXRv
ck9wZW4sIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZSkKKyAgICBVU0VTKE9wSXRlcmF0b3JOZXh0
LCBpdGVyYXRvciwgbmV4dCwgaXRlcmFibGUpCisKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRo
X3NwcmVhZDoKICAgICAgICAgaGFuZGxlTmV3QXJyYXlMaWtlKGluc3RydWN0aW9uLT5hczxPcE5l
d0FycmF5V2l0aFNwcmVhZD4oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw2ICs0ODksOSBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogCiAgICAgREVGUyhPcENhdGNoLCBleGNlcHRpb24s
IHRocm93blZhbHVlKQogCisgICAgREVGUyhPcEl0ZXJhdG9yT3BlbiwgaXRlcmF0b3IsIG5leHQp
CisgICAgREVGUyhPcEl0ZXJhdG9yTmV4dCwgZG9uZSwgdmFsdWUpCisKICAgICBjYXNlIG9wX2Vu
dGVyOiB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVZhcnM7IGktLTspCiAgICAgICAg
ICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDI5ZjYwZTk0Mjgy
MjU5MTk0Nzc2ODU1N2VhODdhNjU3ZjIzYTYwYi4uOTE1Y2M2MzFkYmQyODQ1ZWU5MTM4ZTEzOWVi
NjllOTYzNDE3NTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKQEAgLTQwLDE4ICs0MCwzNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQ2Fs
bExpbmtJbmZvOjpDYWxsVHlwZSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKE9wY29kZUlEIG9w
Y29kZUlEKQogewotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9w
X2NhbGxfZXZhbCkKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKKyAg
ICAgICAgcmV0dXJuIFRhaWxDYWxsVmFyYXJnczsgICAgICAgIAorCisgICAgY2FzZSBvcF9jYWxs
OgorICAgIGNhc2Ugb3BfY2FsbF9ldmFsOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgICAgIHJldHVybiBDYWxsOwotICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoK
ICAgICAgICAgcmV0dXJuIENhbGxWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25z
dHJ1Y3QpCisKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICAgICAgcmV0dXJuIENvbnN0cnVj
dDsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MpCisKKyAgICBjYXNl
IG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ29uc3RydWN0VmFyYXJnczsK
LSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKQorCisgICAgY2FzZSBvcF90YWlsX2Nh
bGw6CiAgICAgICAgIHJldHVybiBUYWlsQ2FsbDsKLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKTsKLSAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOworCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIENhbGw7CiB9CiAKIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4
IGYxM2QxNzM0YTAyYzU4YTMyMTc1OTI1ZDI4ODU1YTJhMjYwMDE4MTguLmI5MGY4MjQ2ZmM2MTEx
Mzc4YWViZWY5MDI1NmYxMTVlZjE3ZTNiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtODEsNiArODEsMTMgQEAgQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgQ29kZUIKICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FsbExp
bmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcFRhaWxDYWxsPigpLm1ldGFkYXRhKHByb2ZpbGVk
QmxvY2spLm1fY2FsbExpbmtJbmZvOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW46CisgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgY2FsbExpbmtJ
bmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShwcm9maWxl
ZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0OTIwYjZhODc4MTU3
ZTYxNjBiNjUzZTdhNGU3MzA0YjIuLjcyYTA5NGVlNjhlNDc2OGI4MTEyYTEzYTNhMmQyYzdiMzIz
MjYxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtNTgzLDYgKzU4NCwyMCBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxl
Q29udHJvbEZsb3cpCiAKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAg
ICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBt
X251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAg
ICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAg
bV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAg
ICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsMTQg
KzEyMzksMjcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQog
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NjQxOAogICAgICAgICAvLyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9y
ZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRp
bWUgc2NvcGUgcmVzb2x1dGlvbi4KIAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0
QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgIGF1dG8g
Y2xlYXJJZk5lZWRlZCA9IFsmXSAoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhLCBB
U0NJSUxpdGVyYWwgb3BOYW1lKSB7CisgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUg
IT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0
cnVjdHVyZUlEID0gbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAg
ICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNs
ZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNo
ZShtZXRhZGF0YSk7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICJDbGVhcmluZyAiLCBvcE5hbWUsICIgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOworICAg
ICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpj
bGVhckxMSW50R2V0QnlJZENhY2hlKG1vZGVNZXRhZGF0YSk7CisgICAgICAgIH07CisKKyAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgeworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwg
Iml0ZXJhdG9yIG9wZW4iX3MpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAg
ICBjbGVhcklmTmVlZGVkKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG5l
eHQiX3MpOworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1l
dGFkYXRhLCAiaXRlcmF0b3IgbmV4dCJfcyk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAg
ICAgICBjbGVhcklmTmVlZGVkKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCAiZ2V0IGJ5IGlkIl9z
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWRE
aXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM1NCwyNyBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xl
YXIgPSBbJl0gKCkgewogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09
IG9wX2dldF9ieV9pZCkgeworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwot
ICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigp
Lm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rp
b24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0
ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJi
b3NlT1NSKCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4i
KTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4
dDogeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwg
IkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNh
Y2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25l
IHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4uCisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAg
ICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7Cisg
ICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMDg3LDExIEBAIFZhbHVlUHJv
ZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVj
b2RlSW5kZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29w
ZW46CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
OworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2Zp
bGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBi
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tJbmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRj
ZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0z
OSwxMiArMzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3Qg
RnVuY3RvciYgZnVuYykKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9f
b3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1f
cHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxV
RV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRh
ZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAg
ICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKwor
ICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1l
dGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUs
IGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2Up
OworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICB9KTsKKyAgICB9ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJ
U0lUMQogI3VuZGVmIFZJU0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVy
YXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRh
dGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBh
Y2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4YzIuLjIyMmViMTk1ZDEzMDYxOTc3MDZhZmQy
NmI0ODFmMzYxMjczNzI5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5U3RhdHVzLmNwcApAQCAtODYsNiArODYsMzYgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0
dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUlu
ZGUKICAgICBjYXNlIG9wX2dldF9ieV92YWw6CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhO
b0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAg
ICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVu
OjpnZXROZXh0KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19s
b2FkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MDM5CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5
SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3Jt
YXRpb24sIGZhbHNlKTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5w
cm9wZXJ0eU5hbWVzLT5uZXh0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlm
IChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkg
eworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdl
dEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhO
b0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
IGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIEFTU0VSVChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWUpOworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fdmFsdWVNb2Rl
TWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgc3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVj
dHVyZUlEOworICAgICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OiB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaAppbmRleCAwODVhZThkMTk5NzZiODg2ZjAwMTlmODVmYTY3YjAyYmUxNGNk
YTVlLi4zZDcwY2Q1NDNlY2ZhZTkwMjI1MDI5NjAxYTBkNDA1ZWM2NzFiMmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMzIsNyArMzIsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBP
cGNvZGVJRCA9IDo6SlNDOjpPcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlE
IG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+
KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNv
ZGVzV2l0aE1ldGFkYXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9
IG9wX3dpZGUxNjsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IG9wX3dp
ZGUzMjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhz
ID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7CkBAIC00MSw3ICs0Myw5IEBAIHN0cnVjdCBKU09wY29k
ZVRyYWl0cyB7CiAKIHN0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJ
RCA9IFdhc21PcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9m
Qnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9P
Rl9XQVNNX1dJVEhfQ0hFQ0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQg
bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVN
QkVSX09GX1dBU01fV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5
dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSB3YXNtX3dpZGUxNjsKICAg
ICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IHdhc21fd2lkZTMyOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSB3YXNtT3Bjb2Rl
TGVuZ3RoczsKQEAgLTk4LDEyICsxMDIsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFy
cm93KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKICAg
ICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAg
ICBPcGNvZGVTaXplIHdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1dpZGUzMjxU
cmFpdHM+KCkpCisgICAgICAgICAgICByZXR1cm4gT3Bjb2RlU2l6ZTo6V2lkZTMyOworICAgICAg
ICByZXR1cm4gaXNXaWRlMTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2Rl
U2l6ZTo6TmFycm93OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNX
aXRoTWV0YWRhdGE7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNP
cGNvZGVUcmFpdHM+CisgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhDaGVja3BvaW50czsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7
CkBAIC0xMzcsNiArMTU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CisgICAgVCBhc0tub3duV2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgcmV0dXJuIFQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRoPjo6dW5zaWduZWRUeXBlKj4odGhpcyAr
ICh3aWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAxIDogMikpKTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBU
KiBjYXN0KCkKICAgICB7CkBAIC0xNjEsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHsKIAogICAg
ICAgICBBU1NFUlQoaXNXaWRlMTY8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4oYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4odGhpcyArIDEpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgpAQCAtMTY5LDE0ICsxOTQs
MTYgQEAgcHVibGljOgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNXaWRlMzI8VHJhaXRzPigp
KTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXpl
OjpXaWRlMzI+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4o
dGhpcyArIDEpOwogICAgIH0KIH07CiAKIHN0cnVjdCBJbnN0cnVjdGlvbiA6IHB1YmxpYyBCYXNl
SW5zdHJ1Y3Rpb248T3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnN0cnVj
dGlvbikgPT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsK
IAogc3RydWN0IFdhc21JbnN0YW5jZSA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29k
ZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbUluc3RhbmNlKSA9PSAxLCAiU28g
cG9pbnRlciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRp
b25Nb2RlTWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRp
b25Nb2RlTWV0YWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmQ2OTE5MzFjNmM3OTQ4ZTU1N2U0ZjU2OTIz
YWUzNDkwZmViOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgSXRlcmF0aW9uTW9kZSA6IHVpbnQ4X3QgeworICAg
IEdlbmVyaWMgPSAxIDw8IDAsCisgICAgRmFzdEFycmF5ID0gMSA8PCAxLAorfTsKKworY29uc3Rl
eHByIHVpbnQ4X3QgbnVtYmVyT2ZJdGVyYXRpb25Nb2RlcyA9IDI7CisKK09WRVJMT0FEX0JJVFdJ
U0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhJdGVyYXRpb25Nb2Rl
KTsKKworc3RydWN0IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSB7CisgICAgdWludDhfdCBzZWVuTW9k
ZXMgeyAwIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc2Vlbk1vZGVzKSkg
PT0gc2l6ZW9mKEl0ZXJhdGlvbk1vZGUpKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cAppbmRleCAyZDE0M2I5Y2Y2NzQzMDVkNDBjOTFlYjBhZTM1MTMzMTI1Njk0NDFmLi5iYmUxZjY3
ZmZiZWZlOGU4YmIxMzY3ZWI2YzdlZDY3Y2JhYThhYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNjAsMTQgKzYw
LDMxIEBAIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAgICAgfQogCiAgICAgYXV0byYgaW5zdHJ1
Y3Rpb24gPSBtX293bmVyLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlT2Zmc2V0LmdldCgp
KTsKLSAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+
KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkpOworICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCkpIHsKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2xlYXJMTEludEdl
dEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIu
Z2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0
ZXJhdG9yX29wZW46CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFk
YXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCku
bWV0YWRhdGEobV9vd25lci5nZXQoKSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUo
bWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRD
YWNoZShtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCi12b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6
Ok1ldGFkYXRhJiBtZXRhZGF0YSkKK3ZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRh
dGEmIG1ldGFkYXRhKQogewotICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFs
dWUuCi0gICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91
dENhY2hlKCk7CisgICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7
CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKaW5kZXggMjIwZmZmM2UzYmY1NDM0MWU5NjFj
ODJkZjhjNGU4YzkwMDA3MzRiZS4uMWQ1OTU3ZWZmODEwOTJhMWRhYmRlZTUwMjVjYWM1ZTZmMzg2
NzgyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3RhbGwo
Vk0mKTsKIAotICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlk
OjpNZXRhZGF0YSYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0
QnlJZE1vZGVNZXRhZGF0YSYpOwogCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
IGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAppbmRleCAxODUxYjYzYzdjYTZhZWYyZmIzNmJmMmY4N2U5MmExOWUwZDQw
YzE4Li5hYTg4NTlhZGQ2Mjg2MGZmZGFkYjRkMjIyODdjMzRiMDdjZTViMzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0
TVNCU2V0Q29uc3RleHByKG0KICAgICBtYWNybyhPcFRhaWxDYWxsKSBcCiAgICAgbWFjcm8oT3BD
YWxsRXZhbCkgXAogICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCisgICAgbWFjcm8oT3BJdGVyYXRv
ck9wZW4pIFwKKyAgICBtYWNybyhPcEl0ZXJhdG9yTmV4dCkgXAorCiAKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidHlwZS1saW1pdHMiKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkNzZkNGZhN2I0NmU5OGI5Zjk3
MDBkYzM4NjMwZjQuLjk0NjU4YjA5NmJmMTkzYzg3Y2ZkNzFhOWY1YmRlMTVmNjEzMzJhODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBA
IC0xMjAsNiArMTIwLDE2IEBAIGlubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBib29sIGlzU3VidHlwZVNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sK
KyAgICByZXR1cm4gISh2YWx1ZSAmIH5jYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKK2lubGluZSBi
b29sIHNwZWN1bGF0aW9uQ29udGFpbnMoU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0ZWRU
eXBlIGNhdGVnb3J5KQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIGNhdGVnb3J5KSAmJiB2YWx1
ZTsKK30KKwogaW5saW5lIGJvb2wgaXNDZWxsU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiB7CiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYmICEodmFsdWUgJiB+U3Bl
Y0NlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVy
U2FtcGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5o
CmluZGV4IDk2MTBkY2U1Y2RiYzNlYzA5Y2UzM2IxZDZiY2M0YjNmZjhhNmMzYzguLmU5YmY5NTMx
ZjdiYTU5NTczMTEwZTMxYTdhNDRjZDIyOGI3NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAgLTQ4LDYgKzQ4LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKICAgICB9CiAKKyAgICB2b2lkIHJl
bGVhc2UoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZG9TYW1wbGUpOworICAgICAgICBnX3N1
cGVyU2FtcGxlckNvdW50LS07CisgICAgICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsKKyAgICB9CisK
IHByaXZhdGU6CiAgICAgYm9vbCBtX2RvU2FtcGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
NjNkMzYyY2FjMTlkNDkzOTg5NDc3N2JlZGE3YzBhYzJkNjM2MDYzZi4uOGZlZGU2MmI1MzBlYmQx
MDFmZWRhNjFhYmFiOTQ5YTNmM2IzNTliNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwMTYsMTQg
KzQwMTYsMTUgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9u
SWZOZWVkZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ss
IEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxs
QmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRh
YmxlKQogewogICAgIGJvb2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2RlID8gZm9yTG9vcE5vZGUt
PmlzRm9yQXdhaXQoKSA6IGZhbHNlOwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNGb3JB
d2FpdCAmJiBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CisgICAgYXV0
byBzaG91bGRFbWl0QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdh
aXQ6Ok5vOworICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJzZU1v
ZGUocGFyc2VNb2RlKCkpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3
VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5
bmNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihzdWJqZWN0
LmdldCgpLCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3
YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0
R2VuZXJpY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdl
dCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0g
bmV3TGFiZWwoKTsKQEAgLTQxMzAsNyArNDEzMSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lv
CiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KHZh
bHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JB
d2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0
SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0
b3IuZ2V0KCksIG5vZGUsIHNob3VsZEVtaXRBd2FpdCk7CiAKICAgICAgICAgICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2
YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00MTQz
LDcgKzQxNDQsMTQ1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIHBvcEZpbmFs
bHlDb250cm9sRmxvd1Njb3BlKCk7CiAgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgewog
ICAgICAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJv
bCBmbG93LgotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91
bGRFbWl0QXdhaXQpOworICAgICAgICB9CisgICAgfQorICAgIGVtaXRMYWJlbChsb29wRG9uZS5n
ZXQoKSk7Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCop
PiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BT
eW1ib2xUYWJsZSkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNpY3Mo
KSB8fCBpczMyQml0KCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0
KCkpKSB7CisgICAgICAgIGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9kZSwgc3ViamVjdE5vZGUs
IGNhbGxCYWNrLCBmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYWJsZSA9IG5ld1RlbXBv
cmFyeSgpOworICAgIGVtaXROb2RlKGl0ZXJhYmxlLmdldCgpLCBzdWJqZWN0Tm9kZSk7CisKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JTeW1ib2wgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgaXRlcmFibGUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRPckluZGV4ID0gbmV3VGVtcG9yYXJ5KCk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2Fs
bEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBtb3ZlKGFyZ3MudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhYmxlLmdldCgpKTsKKyAgICBlbWl0SXRlcmF0b3JPcGVuKGl0ZXJhdG9y
LmdldCgpLCBuZXh0T3JJbmRleC5nZXQoKSwgaXRlcmF0b3JTeW1ib2wuZ2V0KCksIGFyZ3MsIG5v
ZGUpOworCisgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExh
YmVsPiB0cnlTdGFydExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlW
aWFUaHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlMYWJlbCA9
IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKyAg
ICBSZWY8TGFiZWw+IGVuZENhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOworCisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdExvYWQodmFsdWUuZ2V0
KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9y
J3MgbGlmZXRpbWUgbXVzdCBiZSBsb25nZXIgdGhhbiBJdGVyYXRvckNsb3NlQ29udGV4dC4KKyAg
ICBGaW5hbGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dCgqdGhpcywgZmluYWxseUxhYmVsLmdldCgp
KTsKKyAgICBwdXNoRmluYWxseUNvbnRyb2xGbG93U2NvcGUoZmluYWxseUNvbnRleHQpOworCisg
ICAgeworICAgICAgICBSZWY8TGFiZWxTY29wZT4gc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVs
U2NvcGU6Okxvb3ApOworCisgICAgICAgIFJlZjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgIGVtaXRMYWJl
bCgqc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOworICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKwor
ICAgICAgICBpZiAoZm9yTG9vcE5vZGUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZv
ckxvb3BOb2RlLT5pc0Zvck9mTm9kZSgpKTsKKyAgICAgICAgICAgIHByZXBhcmVMZXhpY2FsU2Nv
cGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxl
KTsKKyAgICAgICAgICAgIGVtaXREZWJ1Z0hvb2soZm9yTG9vcE5vZGUtPmxleHByKCkpOworICAg
ICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRvbmUg
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3MoKnRo
aXMsIG51bGxwdHIsIDApOworICAgICAgICAgICAgbW92ZShuZXh0QXJncy50aGlzUmVnaXN0ZXIo
KSwgaXRlcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KGRvbmUu
Z2V0KCksIHZhbHVlLmdldCgpLCBpdGVyYWJsZS5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIG5l
eHRBcmdzLCBub2RlKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGxv
b3BEb25lLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXRMYWJlbCh0cnlTdGFydExh
YmVsLmdldCgpKTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IHB1c2hUcnkodHJ5U3RhcnRM
YWJlbC5nZXQoKSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50
aGVzaXplZEZpbmFsbHkpOworICAgICAgICBjYWxsQmFjaygqdGhpcywgdmFsdWUuZ2V0KCkpOwor
ICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgIC8vIEl0ZXJhdG9y
Q2xvc2Ugc2VxdWVuY2UgZm9yIGFicnVwdCBjb21wbGV0aW9ucy4KKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gRmluYWxseSBibG9jayBmb3IgdGhlIGVudW1lcmF0aW9uLgorICAgICAgICAgICAg
ZW1pdExhYmVsKGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHBvcFRy
eSh0cnlEYXRhLCBmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJl
ZjxMYWJlbD4gZmluYWxseUJvZHlMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7
CisKKyAgICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihmaW5hbGx5Q29udGV4
dC5jb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlw
ZVJlZ2lzdGVyKCksIHRyeURhdGEpOworICAgICAgICAgICAgbW92ZShmaW5hbGx5RXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkp
OworICAgICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAg
ICAgICAgIGVtaXRMYWJlbChmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgbW92ZUVt
cHR5VmFsdWUoZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAg
Ly8gRmluYWxseSBmYWxsIHRocm91Z2ggY2FzZS4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5h
bGx5Qm9keUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3RvcmVTY29wZVJlZ2lzdGVyKCk7
CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gZmluYWxseURvbmUgPSBuZXdMYWJlbCgpOworCisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5
d29yZCk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVt
cG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAg
ICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5DYWxsVHJ5U3RhcnQgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgZW1pdExhYmVsKHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSk7CisgICAgICAgICAg
ICBUcnlEYXRhKiByZXR1cm5DYWxsVHJ5RGF0YSA9IHB1c2hUcnkocmV0dXJuQ2FsbFRyeVN0YXJ0
LmdldCgpLCBjYXRjaExhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRDYXRjaCk7
CisKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyKTsKKyAgICAgICAgICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJu
TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+
ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxl
Q2FsbDo6Tm8pOworCisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3
VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwgZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAg
ICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBh
biBvYmplY3QuIl9zKTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlEb25lLmdldCgp
KTsKKyAgICAgICAgICAgIGVtaXRGaW5hbGx5Q29tcGxldGlvbihmaW5hbGx5Q29udGV4dCwgZW5k
Q2F0Y2hMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIHBvcFRyeShyZXR1cm5DYWxsVHJ5RGF0
YSwgZmluYWxseURvbmUuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBDYXRjaCBibG9jayBmb3Ig
ZXhjZXB0aW9ucyB0aGF0IG1heSBiZSB0aHJvd24gd2hpbGUgY2FsbGluZyB0aGUgcmV0dXJuCisg
ICAgICAgICAgICAvLyBoYW5kbGVyIGluIHRoZSBlbnVtZXJhdGlvbiBmaW5hbGx5IGJsb2NrLiBU
aGUgb25seSByZWFzb24gd2UgbmVlZCB0aGlzCisgICAgICAgICAgICAvLyBjYXRjaCBibG9jayBp
cyBiZWNhdXNlIGlmIGVudGVyZWQgdGhlIGFib3ZlIGZpbmFsbHkgYmxvY2sgZHVlIHRvIGEgdGhy
b3duCisgICAgICAgICAgICAvLyBleGNlcHRpb24sIHRoZW4gd2Ugd2FudCB0byByZS10aHJvdyB0
aGUgb3JpZ2luYWwgZXhjZXB0aW9uIG9uIGV4aXRpbmcKKyAgICAgICAgICAgIC8vIHRoZSBmaW5h
bGx5IGJsb2NrLiBPdGhlcndpc2UsIHdlJ2xsIGxldCBhbnkgbmV3IGV4Y2VwdGlvbiBwYXNzIHRo
cm91Z2guCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFi
ZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlv
blJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdE91dE9mTGlu
ZUZpbmFsbHlIYW5kbGVyKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5j
b21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIHJldHVybkNhbGxUcnlEYXRhKTsKKyAgICAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgc3ludGhlc2l6ZWQgY2F0Y2ggYmxvY2sgYW5kIHdlJ3Jl
IGd1YXJhbnRlZWQgdG8gbmV2ZXIgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUg
YW55IHN5bWJvbHMgZnJvbSB0aGUgc2NvcGUsIHdlIGNhbiBza2lwIHJlc3RvcmluZyB0aGUgc2Nv
cGUKKyAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBoZXJlLgorCisgICAgICAgICAgICAgICAg
UmVmPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShlbWl0SXNFbXB0eShuZXdUZW1wb3JhcnkoKSwgZmluYWxseUV4Y2VwdGlvblJl
Z2lzdGVyLmdldCgpKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbW92ZShl
eGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsK
KworICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBlbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgZW1pdExhYmVsKGVuZENhdGNoTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBicmVha0xhYmVsSXNCb3VuZCA9IHNjb3BlLT5icmVha1Rh
cmdldE1heUJlQm91bmQoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKQorICAgICAg
ICAgICAgZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKKyAgICAgICAgcG9wRmluYWxs
eUNvbnRyb2xGbG93U2NvcGUoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7Cisg
ICAgICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9s
IGZsb3cuCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIG5vZGUsIEVtaXRBd2FpdDo6Tm8pOwogICAgICAgICB9CiAgICAgfQogICAgIGVtaXRMYWJl
bChsb29wRG9uZS5nZXQoKSk7CkBAIC00MjY1LDU2ICs0NDA0LDYgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKQogICAgIE9wSXNFbXB0eTo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CiAgICAgcmV0dXJuIGRz
dDsKIH0KLSAgICAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQg
ZG9FbWl0QXdhaXQpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90
U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgICAg
ICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgICAgICBlbWl0QXdh
aXQoZHN0KTsKLSAgICB9Ci0gICAgewotICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVjdCA9
IG5ld0xhYmVsKCk7Ci0gICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1w
b3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgZW1pdFRocm93VHlw
ZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsK
LSAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgfQotICAgIHJldHVy
biBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSkKLXsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFy
Z3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOwotICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRo
b2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwot
ICAgIH0KLQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIFJlZjxMYWJl
bD4gZG9uZSA9IG5ld0xhYmVsKCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhv
ZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygp
LnJldHVybktleXdvcmQpOwotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0KLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBDYWxsQXJndW1lbnRz
IHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgbW92ZShyZXR1cm5Bcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwg
cmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOwotCi0gICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVz
KQotICAgICAgICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkpOwotCi0gICAgZW1pdEp1bXBJZlRydWUo
ZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwot
ICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7Ci0gICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwotfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxS
ZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlcikKIHsKQEAgLTQ1NTUsNyArNDY0NCwz
NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUp
CiAgICAgbW92ZSh2YWx1ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIAotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SXRlcmF0b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBu
ZXh0T3JJbmRleCwgUmVnaXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0
ZXJhYmxlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBS
ZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJ
RD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxv
dz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3Jh
cnkoKSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAg
ICBlbWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBu
b2RlLT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yT3Blbjo6ZW1pdCh0aGlzLCBpdGVyYXRv
ciwgbmV4dE9ySW5kZXgsIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZS50aGlzUmVnaXN0ZXIoKSwg
aXRlcmFibGUuc3RhY2tPZmZzZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lz
dGVySUQqIGl0ZXJhYmxlLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYg
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8v
IFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3Rl
cklEPiwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBjYWxsRnJhbWU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVyczsgKytpKQorICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBv
cmFyeSgpKTsKKworICAgIGlmIChzaG91bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBlbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKwor
ICAgIGVtaXRFeHByZXNzaW9uSW5mbyhub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCkpOworICAgIE9wSXRlcmF0b3JOZXh0OjplbWl0KHRoaXMsIGRvbmUs
IHZhbHVlLCBpdGVyYWJsZSwgbmV4dE9ySW5kZXgsIGl0ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvci5zdGFja09mZnNldCgpKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRv
ciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygp
Lml0ZXJhdG9yU3ltYm9sKTsKICAgICBlbWl0Q2FsbEl0ZXJhdG9yKGl0ZXJhdG9yLmdldCgpLCBh
cmd1bWVudCwgbm9kZSk7CkBAIC00NTYzLDYgKzQ2ODAsNTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dh
YmxlRXgKICAgICByZXR1cm4gaXRlcmF0b3IuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIHsK
KyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAg
ICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAg
ICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJn
dW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVt
aXRBd2FpdDo6WWVzKQorICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7CisgICAgfQorICAgIHsK
KyAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBl
bWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09i
amVjdC5nZXQoKSk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBl
SXNPYmplY3QuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRv
ciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
KQoreworICAgIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBu
dWxscHRyLCAxKTsKKyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvcik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDAp
LCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgfQorCisgICAgcmV0
dXJuIGRzdDsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIFJlZjxMYWJlbD4gZG9uZSA9
IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktl
eXdvcmQpOworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jhcnko
KSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIHJldHVybkFy
Z3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0
aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2
b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2Fs
bDo6Tm8pOworCisgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAg
ICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkpOworCisgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2Jq
ZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOworICAgIGVtaXRU
aHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiJfcyk7CisgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworfQorCisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVu
dCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9w
ZXJ0eU5hbWVzKCkuYXN5bmNJdGVyYXRvclN5bWJvbCk7CkBAIC00NTc1LDcgKzQ3NDMsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YQogICAgIGVtaXRKdW1wKGFzeW5jSXRlcmF0b3JGb3VuZC5n
ZXQoKSk7CiAgICAgZW1pdExhYmVsKGFzeW5jSXRlcmF0b3JOb3RGb3VuZC5nZXQoKSk7CiAKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0SXRlcmF0b3IoYXJn
dW1lbnQsIG5vZGUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25JdGVyYXRvciA9IGVt
aXRHZXRHZW5lcmljSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgIG1vdmUoaXRlcmF0b3Iu
Z2V0KCksIGNvbW1vbkl0ZXJhdG9yLmdldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkubmV4dCk7CkBAIC00NjA0LDcgKzQ3NzIsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFy
eSgpOwogICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdl
dEFzeW5jSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50
LCBub2RlKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFz
eW5jSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1
bWVudCwgbm9kZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1p
dEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
bmV4dCk7CiAKICAgICAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00
NjQyLDcgKzQ4MTAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVn
YXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAg
ICAgICBlbWl0SnVtcElmRmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJv
d01ldGhvZC5nZXQoKSksIHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOwogCiAgICAgICAgICAgICAg
ICAgICAgIEVtaXRBd2FpdCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6Olll
cyA6IEVtaXRBd2FpdDo6Tm87Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3Nl
KGl0ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIGVtaXRBd2FpdEluSXRlcmF0b3JDbG9zZSk7CiAKICAgICAgICAgICAgICAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhy
b3cnIG1ldGhvZC4iX3MpOwogCkBAIC00NzAzLDcgKzQ4NzEsNyBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRo
cm93YWJsZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1l
bnQuZ2V0KCkpOwotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5n
ZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2Rl
KTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKHZhbHVlLmdl
dCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUp
OwogCiAgICAgICAgICAgICBlbWl0TGFiZWwoYnJhbmNoT25SZXN1bHQuZ2V0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggZWE2Y2QyYjZkNWJhNzk5NDk1NjQ4NjJmMzAzMDFhMzFlYTgxMThkZS4uNzFl
OWE1ZjNkZjMwZTE1MmVmYzJmNDk2NjMyNmE3OWZlZWQ4MzViNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
ODI4LDYgKzgyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQg
b3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5l
cmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVs
bHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAgICAgICAg
IHZvaWQgZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlv
bk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2Rl
KiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBk
c3QsIFRhZ2dlZFRlbXBsYXRlTm9kZSopOwpAQCAtOTAwLDkgKzkwMSwxNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzRGVyaXZlZEFycmF5KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIERlcml2ZWRBcnJheVR5cGUpOyB9CiAgICAgICAgIHZvaWQgZW1pdFJlcXVpcmVPYmplY3RD
b2VyY2libGUoUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3IpOwogCi0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwotICAg
ICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7
CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVn
aXN0ZXJJRCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJn
dW1lbnRzJiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAg
ICAgdm9pZCBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZh
bHVlLCBSZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxB
cmd1bWVudHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0
OjpObyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZh
bHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSk7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVy
SUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3
YWl0ID0gRW1pdEF3YWl0OjpObyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJh
bWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsK
IApAQCAtOTUyLDkgKzk1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQ
dXNoQ2F0Y2hTY29wZShWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBv
cENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0KICAgICAgICAgdm9pZCBlbWl0QXdhaXQoUmVnaXN0
ZXJJRCopOwogICAgICAgICB2b2lkIGVtaXRHZXRTY29wZSgpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklEKiBvYmplY3RTY29wZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
MDdmMDA4YjNmZWZlN2U3YzY2YTQwYzMxMGY1NjQ4ZjhhNTFkNTk2Mi4uMDI0NjY4NTdlZWMxZGYz
Njk3Yzc0NGI4MTQ2M2I5YjEzZGI1ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDgyMCw3ICs0ODIwLDcgQEAg
dm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9k
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaXRlcmF0
b3IuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBpZiAobV90
YXJnZXRQYXR0ZXJucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRv
ckNsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVy
YXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0
aW9uU2tpcHBlZC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQo
KSwgdGhpcyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQo
dmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDg3Miw3ICs0ODcyLDcgQEAgdm9p
ZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChsb29w
U3RhcnQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJh
dG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRo
aXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVl
LmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ4OTAsNyArNDg5MCw3IEBAIHZvaWQgQXJyYXlQ
YXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIHJocykKIAogICAgIFJlZjxMYWJlbD4gaXRlcmF0b3JDbG9zZWQgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRl
cmF0b3JDbG9zZWQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVy
YXRvci5nZXQoKSwgdGhpcyk7CisgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9z
ZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRv
ckNsb3NlZC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA3ZTI2MzgwYzYwNTY1
YmI4MDI5YmMwODExMzU5MWIwZTFjM2ViMjZjLi41MDdjMmJkZTVkZWU3NzM4ZTBjZTgyMTk5NzY5
NmM2MjQ3MjA3MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Mzk4LDEwICs0Mzk4LDggQEAg
dm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVz
KAogICAgICAgICAgICAgICAgIGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0t
OykKLSAgICAgICAgZnVuY3RvcihtX3N0YXRlLmFyZ3VtZW50KGkpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gbV9zdGF0ZS5udW1iZXJPZkxvY2FscygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1f
c3RhdGUubG9jYWwoaSkpOworICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnNpemUoKTsgaS0t
OykKKyAgICAgICAgZnVuY3RvcihtX3N0YXRlLmF0SW5kZXgoaSkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKaW5kZXggODk3YzcwZGZmYmEwNjZiNjQ5Y2Fm
ZGNjMWVmMDkzMzc2ODEwNGQxMy4uNDM4ZTE2ZGU4NTk1OTI1NGQ5NTU3MjFiNmYwOGRiOTU4MTRm
ZDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmgKQEAgLTEzNywxMSArMTM3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbWFrZUhl
YXBUb3BGb3JOb2RlKGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5zaXplKCk7IH0KICAgICB1
bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVl
c0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2Nh
bHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMo
KTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2st
PnZhbHVlc0F0VGFpbC5udW1iZXJPZlRtcHMoKTsgfQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5k
ZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgp
OyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpIHsgcmV0dXJu
IG1fYmxvY2stPnZhbHVlc0F0VGFpbC5vcGVyYW5kKG9wZXJhbmQpOyB9CiAgICAgQWJzdHJhY3RW
YWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwu
bG9jYWwoaW5kZXgpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaW5kZXgpOyB9CisgICAg
QWJzdHJhY3RWYWx1ZSYgdG1wKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVz
QXRUYWlsLnRtcChpbmRleCk7IH0KICAgICAKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IGQyZjRmMDA4NDBjOTExZmFlMDkyNjQxYzM1ZDM3NGYyMDE4OWQ4YTAuLmI1ZDZh
MTQzMWE5OWEzOGRmYjRlZjljZGFmYmFjMzcwNTc3NmMxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZU9wZXJhbmRzRm9yQ2hl
Y2twb2ludC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAt
MTU5LDcgKzE2MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIZWxwZXIgZm9yIG1pbiBhbmQgbWF4
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVN
aW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgCiAgICAgdm9p
ZCByZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCk7CiAg
ICAgLy8gQmxvY2tzIGNhbiBlaXRoZXIgYmUgdGFyZ2V0YWJsZSAoaS5lLiBpbiB0aGUgbV9ibG9j
a0xpbmtpbmdUYXJnZXRzIG9mIG9uZSBJbmxpbmVTdGFja0VudHJ5KSB3aXRoIGEgd2VsbC1kZWZp
bmVkIGJ5dGVjb2RlQmVnaW4sCkBAIC0xNzYsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBI
YW5kbGUgY2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJvdW5kaW5nIGlubGluaW5nIGFu
ZCBpbnRyaW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBUZXJtaW5hbCwgTm9uVGVybWlu
YWwgfTsKICAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBp
bnN0cnVjdGlvblNpemUsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgICAgIE5v
ZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTkwLDI3ICsxOTEsMjcg
QEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGVtaXRGdW5jdGlvbkNoZWNr
SWZOZWVkZWQpOwogICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1
cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50
aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5n
LiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQg
YSBjYWxsLgotICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCBy
ZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lz
dGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBl
IGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
ZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50
c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwogICAgIHVu
c2lnbmVkIGdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQpOwogICAgIGVudW0gY2xhc3MgQ2FsbE9wdGltaXphdGlvblJlc3VsdCB7
IE9wdGltaXplZFRvSnVtcCwgSW5saW5lZCwgRGlkTm90aGluZyB9OwotICAgIENhbGxPcHRpbWl6
YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1
YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Qnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayog
Y29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKLSAgICBDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9m
ZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIENhbGxP
cHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUs
IE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFs
UmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5
dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNv
bnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSk7CisgICAgQ2FsbE9wdGlt
aXphdGlvblJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFu
ZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0
dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFt
ZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
LCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9w
ZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayog
Y29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAg
ICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2Nl
ZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVE
T01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVl
LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVy
KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0dl
dHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cihPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNp
Z25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUq
IGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgPSBHZXRCeU9mZnNldCk7
Ci0gICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29u
c3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgYm9vbCBoYW5kbGVET01KSVRH
ZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05v
ZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
OwogICAgIGJvb2wgaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMpOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CkBAIC0zMjAsMTUgKzMyMSwxNSBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gZ2V0TG9jYWxPclRtcChvcGVyYW5kKTsKICAgICB9CiAKLSAgICBOb2Rl
KiBnZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgTm9kZSogZ2V0KE9wZXJhbmQgb3Bl
cmFuZCkKICAgICB7CiAgICAgICAgIGlmIChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewotICAgICAg
ICAgICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9IG9wZXJhbmQudG9Db25zdGFudEluZGV4KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC52aXJ0dWFsUmVn
aXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9sZFNpemUg
PSBtX2NvbnN0YW50cy5zaXplKCk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBv
bGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkgewogICAgICAgICAgICAgICAg
IGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3Rh
bnQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbihvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29k
ZUJsb2NrLmdldENvbnN0YW50KG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24g
PSBjb2RlQmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3BlcmFuZC52aXJ0
dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0gb2xk
U2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2NvbnN0YW50cy5ncm93KGNvbnN0YW50SW5k
ZXggKyAxKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkU2l6ZTsg
aSA8IG1fY29uc3RhbnRzLnNpemUoKTsgKytpKQpAQCAtMzQ5LDEwICszNTAsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWlu
bGluZUNhbGxGcmFtZSgpLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICAgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0gaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlZUNvbnN0YW50KCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
KQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha0pTQ29uc3Rh
bnQoY2FsbGVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kLm9m
ZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgeworICAgICAgICB9IGVsc2UgaWYgKG9w
ZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpIHsKICAgICAg
ICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gc29tZSBjb25zdGFudC1mb2xkaW5nIGhlcmUgYmVjYXVz
ZSB0aGlzIGVuYWJsZXMgQ3JlYXRlVGhpcyBmb2xkaW5nLiBOb3RlCiAgICAgICAgICAgICAvLyB0
aGF0IHdlIGRvbid0IGhhdmUgc3VjaCB3YXRjaHBvaW50LWJhc2VkIGZvbGRpbmcgZm9yIGlubGlu
ZWQgdXNlcyBvZiBDYWxsZWUsIHNpbmNlIGluIHRoYXQKICAgICAgICAgICAgIC8vIGNhc2UgaWYg
dGhlIGZ1bmN0aW9uIGlzIGEgc2luZ2xldG9uIHRoZW4gd2UgYWxyZWFkeSBrbm93IGl0LgpAQCAt
NDEyLDcgKzQxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5zaHJpbmso
MCk7CiAgICAgfQogCi0gICAgTm9kZSogc2V0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2Rl
KiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQorICAgIE5vZGUqIHNldChPcGVy
YW5kIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAg
ICAgewogICAgICAgICByZXR1cm4gc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChvcGVyYW5kKSwgdmFsdWUsIHNldE1vZGUpOwogICAgIH0KQEAgLTY5MywxNSArNjk0LDIw
IEBAIHByaXZhdGU6CiAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKICAgICB9CiAKKyAgICBO
b2RlKiBqc0NvbnN0YW50KEZyb3plblZhbHVlKiBjb25zdGFudFZhbHVlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGNvbnN0YW50VmFsdWUpKTsK
KyAgICB9CisKICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIGNvbnN0YW50IHNob3VsZCBiZSBzdHJv
bmdseSBtYXJrZWQuCiAgICAgTm9kZSoganNDb25zdGFudChKU1ZhbHVlIGNvbnN0YW50VmFsdWUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9n
cmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIGpzQ29u
c3RhbnQobV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpOwogICAgIH0KIAogICAg
IE5vZGUqIHdlYWtKU0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShj
b25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6
ZShjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBn
ZXQvc2V0IHRoZSB0aGlzIHZhbHVlLgpAQCAtODUyLDcgKzg1OCw3IEBAIHByaXZhdGU6CiAgICAg
fQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3Vu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUg
b3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAg
ICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKQEAgLTk2MSw3ICs5NjcsMzcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHJldHVybiBnZXRQcmVkaWN0aW9uKG1fY3VycmVudEluZGV4KTsKICAg
ICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBxdWl0ZSBhIHRydWUgYm90dG9t
IHZhbHVlIGZvciBleGFtcGxlIGFueSBvYmplY3Qgc3BlY3VsYXRpb24gd2lsbCBub3cgYmUgT2Jq
ZWN0fE90aGVyIGFzIHRoaXMgcmV0dXJucyBudWxsLgorICAgIC8vIFdlIHNob3VsZCBmaXggdGhp
cyB3aGVuIHdlIGNhbiBhbGxvY2F0ZSBvbiB0aGUgQ29tcGlsZXIgdGhyZWFkLgorICAgIEZyb3pl
blZhbHVlKiBib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgc3Bl
YykKKyAgICB7CisgICAgICAgIC8vIEl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIHdoYXQgd2Ug
cmV0dXJuIGhlcmUuCisgICAgICAgIGlmIChzcGVjID09IFNwZWNOb25lKQorICAgICAgICAgICAg
cmV0dXJuIG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0
aW9uQ29udGFpbnMoc3BlYywgU3BlY090aGVyKSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBo
LmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3Bl
YywgU3BlY0Jvb2xlYW4pKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzQm9v
bGVhbih0cnVlKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3Bl
Y0Z1bGxOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVtYmVy
KDApKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjQmlnSW50
KSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShtX3ZtLT5iaWdJbnRDb25zdGFu
dE9uZS5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3Bl
Y1N0cmluZyB8IFNwZWNTeW1ib2wpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXpl
KG1fdm0tPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKKworICAgICAgICBpZiAoc3BlY3Vs
YXRpb25Db250YWlucyhzcGVjLCBTcGVjQ2VsbE90aGVyIHwgU3BlY09iamVjdCkpCisgICAgICAg
ICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisgICAgICAgIEFTU0VSVChz
cGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNFbXB0eSkpOworICAgICAgICByZXR1cm4gbV9n
cmFwaC5mcmVlemUoSlNWYWx1ZSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlN
b2RlKEFycmF5OjpBY3Rpb24gYWN0aW9uKQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2s7CkBAIC0xMTc2LDcgKzEy
MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBPcHRpb25hbDogYSBjb250aW51YXRpb24gYmxv
Y2sgZm9yIHJldHVybnMgdG8ganVtcCB0by4gSXQgaXMgc2V0IGJ5IGVhcmx5IHJldHVybnMgaWYg
aXQgZG9lcyBub3QgZXhpc3QuCiAgICAgICAgIEJhc2ljQmxvY2sqIG1fY29udGludWF0aW9uQmxv
Y2s7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fcmV0dXJuVmFsdWU7CisgICAgICAgIE9w
ZXJhbmQgbV9yZXR1cm5WYWx1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNwZWN1bGF0aW9ucyBh
Ym91dCB2YXJpYWJsZSB0eXBlcyBjb2xsZWN0ZWQgZnJvbSB0aGUgcHJvZmlsZWQgY29kZSBibG9j
aywKICAgICAgICAgLy8gd2hpY2ggYXJlIGJhc2VkIG9uIE9TUiBleGl0IHByb2ZpbGVzIHRoYXQg
cGFzdCBERkcgY29tcGlsYXRpb25zIG9mIHRoaXMKQEAgLTExOTYsNyArMTIzMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBDb2RlQmxvY2sqLAogICAgICAgICAgICAgQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLAogICAgICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCAvLyBOdWxsIGlmIHRo
aXMgaXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJu
VmFsdWVWUiwKKyAgICAgICAgICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAgICAgICAgICAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQsCkBAIC0xMjcxLDYgKzEzMDcsNyBAQCBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpCiAgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRv
cHRSZWYoKm5ldyBCYXNpY0Jsb2NrKEJ5dGVjb2RlSW5kZXgoKSwgbV9udW1Bcmd1bWVudHMsIG1f
bnVtTG9jYWxzLCBtX251bVRtcHMsIDEpKTsKICAgICBCYXNpY0Jsb2NrKiBibG9ja1B0ciA9IGJs
b2NrLnB0cigpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOworICAg
IFZFUkJPU0VfTE9HKCJBZGRpbmcgbmV3IHVudGFyZ2V0YWJsZSBibG9jazogIiwgYmxvY2tQdHIt
PmluZGV4LCAiXG4iKTsKICAgICByZXR1cm4gYmxvY2tQdHI7CiB9CiAKQEAgLTEzMDMsOCArMTM0
MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5h
bGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5v
ZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPENhbGxPcD4oKTsKLSAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGJ5dGVjb2RlLm1fY2Fs
bGVlKTsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29k
ZS5tX2FyZ3YpOworICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoY2FsbGVlRm9yKGJ5dGVjb2Rl
LCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSAtc3RhdGljX2Nhc3Q8aW50PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29k
ZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7CiAKICAgICBDYWxsTGlua1N0YXR1cyBj
YWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCkBAIC0x
MzEyLDggKzEzNDksOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBObwogCiAgICAgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1vZGUpOwog
Ci0gICAgcmV0dXJuIGhhbmRsZUNhbGwoYnl0ZWNvZGUubV9kc3QsIG9wLCBraW5kLCBwYy0+c2l6
ZSgpLCBjYWxsVGFyZ2V0LAotICAgICAgICBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0
LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKKyAgICByZXR1cm4gaGFuZGxlQ2Fs
bChkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpLCBK
SVRUeXBlOjpERkdKSVQpLCBvcCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKKyAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4
LmNoZWNrcG9pbnQoKSksIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGlj
dGlvbigpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5lU3RhdGljYWxseShDYWxs
TGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQpCkBAIC0xMzIzLDcg
KzEzNjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5r
U3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbAogfQogCiBCeXRlQ29kZVBhcnNlcjo6
VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCi0gICAgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNp
Z25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAg
IE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJl
Z2lzdGVyT2Zmc2V0LAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKQogewpAQCAtMTYzOSw3ICsxNjc2LDcgQEAgdW5zaWduZWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVu
dENvdW50SW5jbHUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLXZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5k
LCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGNvbnN0IEluc3RydWN0aW9uKiBzYXZlZEN1cnJl
bnRJbnN0cnVjdGlvbiA9IG1fY3VycmVudEluc3RydWN0aW9uOwogICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXph
dGlvbktpbmRGb3Ioa2luZCk7CkBAIC0xNjczLDcgKzE3MTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBDYQogICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJn
dW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHQpLnZpcnR1
YWxSZWdpc3RlcigpOworICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9w
ZXJhbmQocmVzdWx0KTsKIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUg
PSBudWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CkBAIC0xODI1LDcg
KzE4NjIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIG1fY3VycmVudEluc3RydWN0
aW9uID0gc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb247CiB9CiAKLUJ5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNp
Z25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9v
bCBuZWVkc1RvQ2hlY2tDYWxsZWUpCitCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJl
c3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNl
dCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtp
bmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2Us
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkK
IHsKICAgICBWRVJCT1NFX0xPRygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJc
biIpOwogCkBAIC0xOTAyLDcgKzE5MzksNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXph
dGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogYwogICAg
IHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVkOwogfQogCi1ib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdz
SW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LAogICAgIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IGZpcnN0RnJlZVJlZywgVmlydHVh
bFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJn
dW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwKICAgICBOb2RlVHlwZSBjYWxsT3AsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQpAQCAtMjA0Niw3ICsyMDgzLDcgQEAgdW5zaWduZWQg
Qnl0ZUNvZGVQYXJzZXI6OmdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYg
Y2FsbExpbmtTdGF0dXMKIH0KIAogQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1
bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAotICAgIE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExp
bmtTdGF0dXMsCisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25z
dCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywKICAgICBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9w
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
QEAgLTIyMjIsNyArMjI1OSw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVz
dWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgQVNTRVJU
KG9wID09IEFyaXRoTWluIHx8IG9wID09IEFyaXRoTWF4KTsKIApAQCAtMjI1Miw3ICsyMjg5LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJh
bmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAg
ICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBAIC0yMzkxLDI3ICsy
NDI4LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIGNhc2UgQXJyYXlWYWx1
ZXNJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIGluc2VydENoZWNrcygpOwogCi0gICAgICAgICAg
ICBJdGVyYXRpb25LaW5kIGtpbmQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgewot
ICAgICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2Ug
VHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0
aW9uS2luZDo6VmFsdWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBBcnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50
cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpLZXlzOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBcnJheUVudHJpZXNJbnRyaW5z
aWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgotICAgICAg
ICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4ga2luZCA9IGludGVyYXRpb25L
aW5kRm9ySW50cmluc2ljKGludHJpbnNpYyk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
IWtpbmQpOwogCiAgICAgICAgICAgICAvLyBBZGQgdGhlIGNvbnN0YW50IGJlZm9yZSBleGl0IGJl
Y29tZXMgaW52YWxpZCBiZWNhdXNlIHdlIG1heSB3YW50IHRvIGluc2VydCAocmVkdW5kYW50KSBj
aGVja3Mgb24gaXQgaW4gRml4dXAuCi0gICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29u
c3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtpbmQpKSk7CisgICAgICAgICAg
ICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KCpraW5kKSkpOwogCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFuIGV4aXN0aW5n
IGVycm9yIHN0cmluZy4KICAgICAgICAgICAgIHVuc2lnbmVkIGVycm9yU3RyaW5nSW5kZXggPSBV
SU5UMzJfTUFYOwpAQCAtMzcxMSw3ICszNzMyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQs
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4oMSArIHNpZ25hdHVyZS0+YXJn
dW1lbnRDb3VudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MzAsNyArMzc1MSw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9w
ZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFy
aWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKICAgICBjYXNl
IFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CkBAIC0zODQ0LDcgKzM4NjUsNyBAQCBz
dGF0aWMgdm9pZCBibGVzc0NhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlh
bnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKQogewogICAgIGlmICghdmFyaWFudC5kb21BdHRyaWJ1dGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzkyMyw3ICszOTQ0LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBT
cGVjdWxhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LAorICAgIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRB
cnJheVR5cGUgdHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAg
IGlmICghaXNUeXBlZFZpZXcodHlwZSkpCkBAIC0zOTgwLDcgKzQwMDEsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24oCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
CisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0
aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAg
VkVSQk9TRV9MT0coIiAgICBIYW5kbGluZyBjb25zdGFudCBpbnRlcm5hbCBmdW5jdGlvbiAiLCBK
U1ZhbHVlKGZ1bmN0aW9uKSwgIlxuIik7CkBAIC02NjY4LDIwICs2Njg5LDQyOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50cyk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY29uc3Ry
dWN0X3ZhcmFyZ3M6IHsKICAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsPE9wQ29uc3RydWN0
VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3RWYXJhcmdzLCBDYWxsTW9kZTo6
Q29uc3RydWN0KTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5z
dHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNo
IG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlv
biIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0X3ZhcmFyZ3MpOwogICAg
ICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZh
bD4oKTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7
CiAgICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxsRXZhbCwgT3BJbmZvKGJ5
dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2Fy
Z2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVp
bnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVz
OworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RGOjpi
aXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWluaW5n
TW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdlbmVy
YXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3Vy
cmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sg
PSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICBCeXRlY29kZUluZGV4IHN0YXJ0
SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgTm9kZSogc3ltYm9sSXRlcmF0
b3IgPSBnZXREaXJlY3QoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICBh
dXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5h
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisKKyAgICAgICAgICAgIGlmIChz
ZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZp
cnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3Ru
ZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29u
Y3VycmVudGx5KCksICJUaGUgb25seSB3YXkgd2UgY291bGQgaGF2ZSBzZWVuIEZhc3RBcnJheSBp
cyBpZiB3ZSBzYXcgdGhpcyBmdW5jdGlvbiBpbiB0aGUgTExJbnQvQmFzZWxpbmUgc28gdGhlIGl0
ZXJhdG9yIGZ1bmN0aW9uIHNob3VsZCBiZSBhbGxvY2F0ZWQuIik7CisgICAgICAgICAgICAgICAg
RnJvemVuVmFsdWUqIGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBtX2dyYXBoLmZyZWV6
ZShnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNvbmN1cnJlbnRseSgpKTsK
KyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9PSAxKQorICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plblN5bWJvbEl0
ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJsb2NrID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmljQmxvY2sg
PSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSoga25vd25JdGVyRnVuY3Rpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcVB0ciwgT3BJbmZvKGZy
b3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGlzQXJyYXkgPSBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcElu
Zm8oQXJyYXlUeXBlKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKworICAgICAgICAgICAg
ICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRk
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0
KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFr
ZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBhbmRSZXN1bHQgPSBhZGRUb0dyYXBoKEFyaXRoQml0QW5kLCBpc0FycmF5LCBrbm93bkl0
ZXJGdW5jdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgYml0IGFu
ZCBjYW5ub3QgaGF2ZSBlZmZlY3RzIHNvIGl0J3Mgb2sgdG8gZXhpdCBoZXJlLgorICAgICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJ
bmZvKGJyYW5jaERhdGEpLCBhbmRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZv
clRlcm1pbmFsKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0
QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgYnJhbmNoIGFib3ZlIG1heSBoYXZl
IG1hZGUgZXhpdCBpbnZhbGlkIGJ1dCBpdCdzIGFjdHVhbGx5IG9rLgorICAgICAgICAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7Cisg
ICAgICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25LaW5kOjpWYWx1ZXMpKSk7CisgICAgICAgICAgICAg
ICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0ludGVybmFsRmllbGRPYmplY3QsIE9w
SW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRv
clN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxG
aWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxk
OjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBpdGVyYXRv
ciwga2luZE5vZGUpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2l0ZXJhdG9yLCBp
dGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCBqc0NvbnN0
YW50KEpTVmFsdWUoKSkpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMu
IFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRo
ZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNv
ZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVl
KCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRp
b24pKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworCisgICAgICAg
ICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykgeworICAgICAgICAg
ICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdl
bmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGdlbmVy
aWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFnZW5lcmF0ZWRDYXNlKTsK
KworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlQ2FsbDxP
cEl0ZXJhdG9yT3Blbj4oY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxh
cik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5hbGl0eSwgdGVybWluYWxp
dHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2tw
b2ludCgpOworCisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUu
bV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90T2JqZWN0QmxvY2sg
PSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAg
ICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRk
KCk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNP
YmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFu
Y2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJh
bmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yKSk7
CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
ID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6
Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4g
b2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1f
Z3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8p
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5m
byhFcnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
ICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9j
azsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBuZXh0SW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPm5l
eHQuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShuZXh0SW1wbCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworCisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9uZXh0LCBwcmVkaWN0aW9uLCBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKG5leHRJbXBsKSwg
aWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8g
cnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4K
KyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3Vy
cmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUo
KTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51
YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAg
ICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNv
ZGUubV9pdGVyYXRvciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9u
ZXh0LCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdl
IGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUg
bmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2Rl
SW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9u
KSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7
CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAg
ICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRh
dGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01v
ZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJl
ck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAg
ICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgQnl0ZWNvZGVJbmRl
eCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNC
bG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMg
JiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1
cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAg
ICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZS
ZW1haW5pbmdNb2RlcyAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGhhc05leHQg
PSBhZGRUb0dyYXBoKElzRW1wdHksIGdldChieXRlY29kZS5tX25leHQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAg
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFu
Y2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJp
Y0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhi
cmFuY2hEYXRhKSwgaGFzTmV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdl
dChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNr
U3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2xvYmFsT2JqZWN0LT5h
cnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSwgaXRlcmF0b3IpOworCisgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdl
dGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGRvTG9hZEJsb2NrID0g
YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpzTnVtYmVyKC0xKSk7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5h
bEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6Rmll
bGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgaXRlcmF0b3IpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcSwgaW5k
ZXgsIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogaXNEb25l
QnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAg
ICAgICBpc0RvbmVCcmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7
CisgICAgICAgICAgICAgICAgICAgIGlzRG9uZUJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNo
VGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJh
bmNoLCBPcEluZm8oaXNEb25lQnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAgICAgICAgICAgICAg
ICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1faXRlcmFi
bGVQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVkaWN0aW9u
ID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdERvbmVCbG9jazsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8o
U3BlY0ludDMyT25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGl0ZXJhYmxlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpOworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBidXR0ZXJmbHkgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwg
aXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBhZGRUb0dyYXBo
KEdldEFycmF5TGVuZ3RoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgaXRlcmFibGUsIGJ1
dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzRG9uZSA9IGFkZFRvR3JhcGgo
Q29tcGFyZUdyZWF0ZXJFcSwgaW5kZXgsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsgLy8gVGhlIGFib3ZlIGNvbXBhcmUgZG9lc24ndCBwcm9kdWNlIGVmZmVj
dHMgc2luY2Ugd2Uga25vdyBpbmRleCBhbmQgbGVuZ3RoIGFyZSBpbnQzMnMuCisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFu
Y2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzRG9uZUJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJn
ZXQoZG9Mb2FkQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwg
T3BJbmZvKGJyYW5jaERhdGEpLCBpc0RvbmUpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZv
clRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGRvTG9hZEJsb2NrOworICAgICAgICAg
ICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRl
eCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMyT25s
eSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IG9uZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSkpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBuZXdJbmRleCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQsIGluZGV4LCBvbmUpKTsK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogZmFsc2VOb2RlID0ganNDb25zdGFudChqc0Jvb2xl
YW4oZmFsc2UpKTsKKworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBj
b25zaWRlciBtYWtpbmcgdGhpcyBub3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5IHVzZXMgdGhyZWUg
Y2hpbGQKKyAgICAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCisgICAgICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoaW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3Rv
cmFnZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0QnlWYWwgPSBhZGRUb0dyYXBoKE5v
ZGU6OlZhckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8o
cHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwg
Z2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCBmYWxz
ZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5k
ZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBuZXdJbmRleCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBn
ZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgu
b2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0
T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOwor
ICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgLy8gUm9sbCBiYWNrIHRoZSBjaGVja3BvaW50LgorICAgICAg
ICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc0RvbmVCbG9jazsKKyAg
ICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSogdHJ1ZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGRvbmVJbmRleCA9IGpzQ29uc3RhbnQoanNOdW1iZXIoLTEpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYm90dG9tTm9kZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVN
YXRjaGluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RvbmUsIHRydWVOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJy
YXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSwgZG9u
ZUluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4KKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVu
dEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsK
KworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRp
b24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsK
KyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sg
PSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVk
Q2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRs
ZUNhbGw8T3BJdGVyYXRvck5leHQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6
OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRl
cm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4
dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJs
b2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFi
bGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgT3BlcmFuZCBuZXh0UmVzdWx0ID0gT3BlcmFu
ZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yUmVzdWx0ID0gZ2V0KG5leHRSZXN1bHQp
OworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5t
X2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2Vu
ID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFu
Y2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRv
R3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgIGZs
dXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIExh
enlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1fZ3JhcGgubV9sYXp5SlNWYWx1ZXMu
YWRkKGVycm9yU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGVycm9yTWVzc2Fn
ZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8pOworICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5mbyhFcnJvclR5cGU6OlR5cGVFcnJv
ciksIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlUHJlZGlj
aXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1cnJl
bnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CisKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2NrOworICAgICAgICAgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBib3R0b21WYWx1ZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9u
KHZhbHVlUHJlZGljaXRpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBkb25lSW1wbCA9IG1f
dm0tPnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShkb25l
SW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlw
ZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0g
Y3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlT
dGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250
ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsK
KworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fZG9uZSwgcHJl
ZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihkb25lSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBv
cGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYSB2YWx1ZSBmb3IgbV92
YWx1ZSBzbyB3ZSBkb24ndCB0aGluaworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV92YWx1ZSwgYm90dG9tVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4
dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hE
YXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
YW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGNvbnRpbnVhdGlvbik7CisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdERvbmVCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNo
RGF0YSksIGdldChieXRlY29kZS5tX2RvbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3REb25lQmxvY2s7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
YmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdmFsdWVJ
bXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVu
c3VyZSh2YWx1ZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9
IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29k
ZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAg
ICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFw
LCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVP
cmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZVByZWRpY2l0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZhbHVlSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdl
dEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBwcm9n
cmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGdlbmVy
YXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdlbmVy
YXRlZENhc2UpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBqc0NvbnN0YW50KEpT
VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAg
ICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCByZXN1bHQpOworICAgICAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX2RvbmUsIHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICAvLyBE
byBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2Fp
biBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJl
bnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHBy
b2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAs
IE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJ
bmRleDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgICAg
ICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0
b3JfbmV4dCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+
KCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRl
Y29kZS5tX3NwZWNpYWxQb2ludGVyKSk7CkBAIC03MTcxLDcgKzc2MDAsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gbG9h
ZHMgZnJvbSB0aGUgc2NvcGUgcmVnaXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0
aGUgREZHIGZyb20gdHJhY2tpbmcgdGhlCiAgICAgICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBs
aXZlbmVzcyBvZiB0aGUgc2NvcGUgcmVnaXN0ZXIuCiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFNjb3BlPigpOwotICAgICAgICAgICAgTm9k
ZSogY2FsbGVlID0gZ2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisgICAgICAgICAgICBOb2Rl
KiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwog
ICAgICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigqbV92bSkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gd2Vha0pTQ29uc3RhbnQoZnVuY3Rpb24tPnNjb3Bl
KCkpOwpAQCAtNzU1MCw3ICs3OTc5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50
cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSwgLy8gTnVsbCBp
ZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1
ZVZSLAorICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGlu
ZUNhbGxGcmFtZVN0YXJ0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAg
ICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwKQEAgLTc1NTksNyArNzk4OCw3IEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICwgbV9j
b2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKHByb2ZpbGVkQmxvY2sp
CiAgICAgLCBtX2NvbnRpbnVhdGlvbkJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrKQotICAgICwgbV9y
ZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZVZSKQorICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1
ZSkKICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wKQogewog
ICAgIHsKQEAgLTc2MjUsNyArODA1NCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0Vu
dHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAvLyBNYWNoaW5lIGNvZGUgYmxvY2sgY2Fz
ZS4KICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxv
Y2spOwogICAgICAgICBBU1NFUlQoIWNhbGxlZSk7Ci0gICAgICAgIEFTU0VSVCghcmV0dXJuVmFs
dWVWUi5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlLmlzVmFsaWQoKSk7
CiAgICAgICAgIEFTU0VSVCghaW5saW5lQ2FsbEZyYW1lU3RhcnQuaXNWYWxpZCgpKTsKIAogICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZSA9IDA7CkBAIC04MDQwLDcgKzg0NjksNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOwogCiAgICAgICAgICAgICAgICAgYXV0byBub2RlQW5kSW5kZXggPSBibG9jay0+
ZmluZFRlcm1pbmFsKCk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZUFuZElu
ZGV4Lm5vZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUpOworICAgICAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbm9kZUFuZEluZGV4Lm5vZGUsIG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09
IFVucmVhY2hhYmxlKTsKICAgICAgICAgICAgICAgICBibG9jay0+cmVzaXplKG5vZGVBbmRJbmRl
eC5pbmRleCArIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAKaW5kZXggZTdmNmU3NjI0NjY5YjMwMWY1YTAyMDQ4YzI1ZDQ4MTVjM2ExMzM5ZC4u
NjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
CkBAIC0yODAsNyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpl
dHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCkKKyAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2lj
QmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcGVyYW5kIG9w
ZXJhbmQpCiAgICAgewogICAgICAgICBOb2RlKiBsaXZlbmVzc05vZGUgPSBqZXR0aXNvbmVkQmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICBpZiAoIWxpdmVu
ZXNzTm9kZSkKQEAgLTMwMiwxMSArMzAyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGpl
dHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9j
aywgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4pCiAgICAgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
QXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpl
dHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpl
dHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAg
ICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRh
cnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7Ci0gICAgICAgIAorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRI
ZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0
dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFi
bGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7CisKICAgICAgICAgZml4SmV0dGlzb25lZFBy
ZWRlY2Vzc29ycyhibG9jaywgamV0dGlzb25lZEJsb2NrKTsKICAgICB9CiAgICAgCkBAIC0zNTIs
MTEgKzM1MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBUaW1lIHRvIGluc2VydCBnaG9z
dGllcyBmb3IgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBrZXB0IGFsaXZlIGluIGNhc2Ugd2UgT1NS
CiAgICAgICAgICAgICAvLyBleGl0IHByaW9yIHRvIGhpdHRpbmcgdGhlIGZpcnN0QmxvY2sncyB0
ZXJtaW5hbCwgYW5kIGVuZCB1cCBnb2luZyBkb3duIGEKICAgICAgICAgICAgIC8vIGRpZmZlcmVu
dCBwYXRoIHRoYW4gc2Vjb25kQmxvY2suCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmly
c3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9j
YWxzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ss
IGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIGtlZXBP
cGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmln
aW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2Vj
b25kQmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBhNmNjN2RlY2E3MDI0ODhmOGUxYzJh
MGI2NzBiZjk5Zi4uNjAwMzMyZjE5MGZmOGI0MDQyY2Q1NDJhYjk1YjUwNTM2YWQ3YTc5NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjc0
LDYgKzI3NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9jYXRjaDoK
ICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgor
ICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAg
ICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2df
c2hhZG93X2NoaWNrZW5fdGFpbDoKICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKQEAgLTMxMSw2
ICszMTMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29k
ZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2UgY2hlY2twb2ludF9v
c3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lOgogICAgIGNhc2UgY2hlY2twb2lu
dF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNhc2UgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY2FsbF9yZXR1cm5f
bG9jYXRpb246CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNh
c2Ugb3BfY2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGQ3ZGUyNzFkYjA5OTYxNGI1YmM1
YTk4N2NhY2IyZDhlOGVmODY3MC4uNWEzYWJkMzlhNTY0ODllOWExMzdiNmE2MjllZTQ1YzEwMzM0
MGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0yNDExLDcgKzI0MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBJ
ZGVudGl0eVdpdGhQcm9maWxlOiB7Ci0gICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRm9yQWxsS2lsbHMuaAppbmRleCBiZjQzNTBjNGNkMTdlM2Q1MDA2NjM4ZjU1YWFjMzVhNTY1
Mjk5NGExLi5kOWM5NzQyOGZkNmFlNWVhNTA2ZDA1NzI2NzMwMjBkZDFhZmYxMTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3Jl
LCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoYmVmb3JlSW5saW5lQ2FsbEZyYW1lKTsKICAgICAg
ICAgaWYgKGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpIHsKICAgICAgICAgICAg
IEFTU0VSVChiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSAhPSBhZnRlci5ieXRl
Y29kZUluZGV4KCkuY2hlY2twb2ludCgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29kZUluZGV4
KCkub2Zmc2V0KCksICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBpdCBzaG91bGQgY2hh
bmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vycm91bmRpbmcgYnl0ZWNvZGVz
LiIpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJbmRl
eCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSB8fCBub2RlQWZ0
ZXItPm9wKCkgPT0gRXhpdE9LIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBJbnZhbGlkYXRpb25Qb2lu
dCwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNob3VsZCBjaGFuZ2UgdGhlIGZv
ckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBieXRlY29kZXMuIik7CiAKICAg
ICAgICAgICAgIGF1dG8gbGl2ZUJlZm9yZSA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29k
ZUJsb2NrLCBiZWZvcmUuYnl0ZWNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGF1dG8gbGl2ZUFm
dGVyID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGFmdGVyLmJ5dGVjb2Rl
SW5kZXgoKSk7CkBAIC0xMDIsOCArMTAyLDYgQEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFmdGVyLmJ5
dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCksICJUcmFuc2l0aW9uaW5nIGFjcm9zcyBhIGNoZWNr
cG9pbnQgYnV0IGJlZm9yZSBhbmQgYWZ0ZXIgZG9uJ3Qgc2hhcmUgYW4gaW5saW5lQ2FsbEZyYW1l
LiIpOwotCiAgICAgLy8gRGV0ZWN0IGtpbGxzIHRoZSBzdXBlciBjb25zZXJ2YXRpdmUgd2F5OiBp
dCBpcyBraWxsZWQgaWYgaXQgd2FzIGxpdmUgYmVmb3JlIGFuZCBkZWFkIGFmdGVyLgogICAgIEJp
dFZlY3RvciBsaXZlQWZ0ZXIgPSBncmFwaC5sb2NhbHNBbmRUbXBzTGl2ZUluQnl0ZWNvZGUoYWZ0
ZXIpOwogICAgIHVuc2lnbmVkIG51bUxvY2FscyA9IGdyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggMjAyZDIyNTA1M2ZhOWRmYmU1
YzIzYzY0YmNmOGJlMzg0ZTNlNzY1NC4uN2NjMzRhZTJkMGQ0ZTVmODQ4ZTY5NTczMDI0OTJjMTIx
ZDcxZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKEJhc2ljQmxvY2sqIGJhc2ljQmxvY2spCiAgICAgQVNT
RVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2lj
QmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNC
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFs
dWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZU
bXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZU
bXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1wcygpKTsKKyAgICBB
U1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09IGJhc2lj
QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CiAKICAgICBtX2Fic3RyYWN0
VmFsdWVzLnJlc2l6ZSgpOwogCkBAIC0xNjEsNiArMTY0LDEwIEBAIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRh
aWwubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQudG1wKGkpLmNsZWFyKCk7CisgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwudG1wKGkpLmNsZWFyKCk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7CkBAIC0xNzUsMTMgKzE4Miw5IEBAIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICBibG9jay0+Y2ZhVGhpbmtzU2hvdWxkVHJ5
Q29uc3RhbnRGb2xkaW5nID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKICAgICAgICAgYmxvY2stPmNm
YVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50
KGkpLmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICAgICAg
YmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2st
PnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGJs
b2NrLT52YWx1ZXNBdEhlYWRbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNB
dFRhaWxbaV0uY2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM5LDcgKzI0Miw3IEBA
IGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFsdWUgZnJvbSBoZWFkIHRvIHRhaWwu
Ci0gICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSB2YXJpYWJsZUF0KGluZGV4KTsKKyAgICAg
ICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGF0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMzA0LDcgKzMwNyw3
IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gdmFyaWFibGVBdChpKTsKKyAgICAgICAgICAgIGJs
b2NrLT52YWx1ZXNBdFRhaWxbaV0gPSBhdEluZGV4KGkpOwogICAgICAgICB9CiAKICAgICAgICAg
Zm9yIChOb2RlQWJzdHJhY3RWYWx1ZVBhaXImIHZhbHVlQXRUYWlsIDogYmxvY2stPnNzYS0+dmFs
dWVzQXRUYWlsKQpAQCAtMzQzLDYgKzM0Niw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6
Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgICAgICBkYXRhTG9n
KCIgICBNZXJnaW5nIGZyb20gIiwgcG9pbnRlckR1bXAoZnJvbSksICIgdG8gIiwgcG9pbnRlckR1
bXAodG8pLCAiXG4iKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9m
QXJndW1lbnRzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpKTsK
ICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gdG8t
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NFUlQoZnJvbS0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZUbXBzKCkpOwogICAgIAogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgIApAQCAtMzUy
LDE0ICszNTYsOSBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2Nr
KiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAKICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3Jt
KSB7CiAgICAgY2FzZSBUaHJlYWRlZENQUzogewotICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVu
dCA9IDA7IGFyZ3VtZW50IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRz
KCk7ICsrYXJndW1lbnQpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9u
ID0gdG8tPnZhbHVlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1
ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpLCB0by0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGFyZ3VtZW50KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwg
PCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewotICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmxv
Y2FsKGxvY2FsKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5C
bG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5sb2NhbChsb2NhbCksIHRvLT52
YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubG9jYWwo
bG9jYWwpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGZyb20tPnZh
cmlhYmxlc0F0VGFpbC5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIEFic3RyYWN0VmFs
dWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5hdChpbmRleCk7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9t
LT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpLCB0by0+dmFyaWFibGVzQXRIZWFkLmF0KGluZGV4KSwg
ZnJvbS0+dmFyaWFibGVzQXRUYWlsLmF0KGluZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oCmluZGV4IDE4NjVlNmExZWZmYzNkYWFlZmU1ODRjYTg2MmM0OWJjMzY4
NTg1MDAuLmM1ZDAyNjg3M2UwMTBkMDdmMzgxMWM2YzRmZWY1NjZlMWNhNzBmOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgK
QEAgLTE1OCwxMCArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGVyYW5kczxBYnN0cmFj
dFZhbHVlPiYgdmFyaWFibGVzRm9yRGVidWdnaW5nKCk7CiAKKyAgICB1bnNpZ25lZCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZkFyZ3VtZW50
cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZUbXBzKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZUbXBzKCk7IH0KICAgICAKLSAgICBB
YnN0cmFjdFZhbHVlJiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkKKyAgICBBYnN0cmFjdFZhbHVl
JiBhdEluZGV4KHNpemVfdCBpbmRleCkKICAgICB7CiAgICAgICAgIGFjdGl2YXRlVmFyaWFibGVJ
Zk5lY2Vzc2FyeShpbmRleCk7CiAgICAgICAgIHJldHVybiBmYXN0Rm9yd2FyZChtX3ZhcmlhYmxl
c1tpbmRleF0pOwpAQCAtMTY5LDE3ICsxNzEsMTcgQEAgcHVibGljOgogCiAgICAgQWJzdHJhY3RW
YWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gdmFy
aWFibGVBdChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOworICAgICAgICByZXR1
cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOwogICAgIH0KICAg
ICAKICAgICBBYnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAg
ICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7CisgICAg
ICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5kZXgpKTsKICAgICB9
CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRl
eCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5hcmd1bWVudEluZGV4KGlu
ZGV4KSk7CiAgICAgfQogICAgIAogICAgIC8vIENhbGwgdGhpcyBiZWZvcmUgYmVnaW5uaW5nIENG
QSB0byBpbml0aWFsaXplIHRoZSBhYnN0cmFjdCB2YWx1ZXMgb2YKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAppbmRleCBmNWVlZjJmM2RmNzIxMjlhODM4Yzc2ODZl
MjZiOTYwYjUwZjU4MWVlLi43YTMzNjY2YWE3MWExZjY2NmM5NGIyOGI2NDQ3NDg0ZDY3YmJiN2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCkBAIC03Nyw2
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGF6eUpTVmFsdWUgbmV3U3RyaW5nKEdyYXBo
JiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBMYXppbmVzc0tpbmQga2luZCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZDsgfQorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRUeXBlKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtub3duVmFsdWUgPyBTcGVjQnl0ZWNvZGVUb3AgOiBTcGVjU3Ry
aW5nOyB9CiAgICAgCiAgICAgRnJvemVuVmFsdWUqIHRyeUdldFZhbHVlKEdyYXBoJikgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUy
ZGJkZDliOTM3MGQ2ZGU2NTNjNWE0ODg3MTE3MDBlOGI4NzliLi41MjIzNGI0YTVkM2Y2OTc2YzJm
YTk5ODE2ZGNlMTEwNjgxMDU0ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKQEAgLTQ4LDExICs0OCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292
ZXJ5SW5kZXgpCitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2Ug
anNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUs
IFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNv
dmVyeUluZGV4LCB1bnNpZ25lZCBkZmdJUkluZGV4KQogICAgIDogT1NSRXhpdEJhc2Uoa2luZCwg
aml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3Jp
Z2luLndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAg
ICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fcmVjb3ZlcnlJbmRleChy
ZWNvdmVyeUluZGV4KQorICAgICwgbV9kZmdJUkluZGV4KGRmZ0lSSW5kZXgpCiAgICAgLCBtX3N0
cmVhbUluZGV4KHN0cmVhbUluZGV4KQogewogICAgIGJvb2wgY2FuRXhpdCA9IGppdC0+bV9vcmln
aW4uZXhpdE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCA5ZTli
Y2VhNDgxYzFkNjg3Nzk3MmYyNTlkNjJjMWEyMzAwYjJiMTYxLi44Y2U4YjkyMDc5YWY3NTI5OTcw
M2YxN2ZkZGFlMmZlYzNiOWMyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1
Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSosIHZvaWQqLCB2b2lkCiAvLyBUaGlz
IHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGggYnkK
IC8vIGdvaW5nIGludG8gYmFzZWxpbmUgY29kZS4KIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9T
UkV4aXRCYXNlIHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOworICAgIE9TUkV4aXQoRXhp
dEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1
bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgg
PSBVSU5UX01BWCwgdW5zaWduZWQgZGZnSVJJbmRleCA9IFVJTlRfTUFYKTsKIAogICAgIGZyaWVu
ZCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQoQ2FsbEZyYW1lKik7
CiAKQEAgLTE1OSw2ICsxNTksNyBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFz
ZSB7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAg
ICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV9kZmdJUklu
ZGV4OwogCiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBjb2RlTG9jYXRp
b25Gb3JSZXBhdGNoKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCAxZGYzOTQzMjQxZDVhZjc5
MzE5OGVmOWM3MTI3M2U3NThhMGEyMjZhLi4wODVkYzUzMGIzYmMzNzlmYjRmM2U2MDkxY2I1YzY1
MjAyNzU4N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xNTksOSArMTU5LDE1IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIo
KSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7Ci0g
ICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgotICAgICAgICAgICAganVtcFRhcmdl
dCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAgY2FzZSBJbmxpbmVD
YWxsRnJhbWU6OkNhbGw6IHsKKyAgICAgICAgICAgIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2Rl
SUQoKSA9PSBvcF9jYWxsKQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRV
Uk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rp
b24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3Jfb3Blbik7CisgICAgICAg
ICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9u
ZXh0KQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04o
b3BfaXRlcmF0b3JfbmV4dCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0OgogICAgICAgICAgICAganVtcFRhcmdl
dCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3QpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0yMzksNiArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAg
fQogICAgIH0KIAorICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKICAgICByZXR1cm4ganVtcFRhcmdl
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZTQ5YzMxMzAzNjkxYjZiZjI0Y2E5
ZWFiODUyYWUxMzhiZTY2ZjEyLi5kYzBlMWZmODczMWUyNzBhZGYzODhiYmU0MmRhOWFiZjE2MDVi
MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTEwNCw2ICsxMTA0LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2Rl
Qnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7Cisg
ICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmxhenlKU1ZhbHVlKCkuc3Bl
Y3VsYXRlZFR5cGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoK
ICAgICAgICAgY2FzZSBUb1N0cmluZzoKQEAgLTEzMDgsNyArMTMxNCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJl
Z0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTTog
ewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRo
aXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uCiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9jdXJyZW50Tm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSBkdXJpbmcgcHJlZGljdGlvbiBwcm9wYWdh
dGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAw
ZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiLi45YWU5ODA0Yzc1Yjk1ZWM1
NjFlZDJmMWE1MmI5ZGVjOThjODQ1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkYXRh
TG9nRigiKSA9PSAoJXMgPSAiLCAjcmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRhTG9nKHJpZ2h0
KTsgXAogICAgICAgICAgICAgZGF0YUxvZ0YoIikgKCVzOiVkKS5cbiIsIF9fRklMRV9fLCBfX0xJ
TkVfXyk7IFwKKyAgICAgICAgICAgIGRhdGFMb2coIlxuXG5cbiIpOyBcCisgICAgICAgICAgICBt
X2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG51bGxwdHIpLT5kdW1wQnl0ZWNvZGUoKTsgXAog
ICAgICAgICAgICAgZHVtcEdyYXBoSWZBcHByb3ByaWF0ZSgpOyBcCiAgICAgICAgICAgICBXVEZS
ZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5D
VElPTiwgI2xlZnQgIiA9PSAiICNyaWdodCk7IFwKICAgICAgICAgICAgIENSQVNIKCk7IFwKQEAg
LTU2OCw2ICs1NzAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4g
Z2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsK
ICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4gc2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNM
aWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1w
cygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBi
bG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVz
QXRIZWFkLnRtcChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CisgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQorICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWls
LnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKS0+YWNjZXNzZXNTdGFjayht
X2dyYXBoKSk7CisKKyAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0aW9ucy50bXAoaSkgPSBu
b3RTZXQ7CisgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
aSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkgfHwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQpAQCAtNzE2
LDYgKzcyNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09
IExvYWRTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCisgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlv
bnMsIE9wZXJhbmQ6OnRtcChpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50
cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCiAgICAgICAgICAgICAg
ICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlvbnMsIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CkBAIC05NDQsNyArOTU5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tPcGVyYW5kKAogICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jaywgT3BlcmFuZHM8c2l6ZV90PiYgZ2V0TG9jYWxQb3NpdGlvbnMsCi0gICAgICAgIE9w
ZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkKKyAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIE9wZXJhbmQg
b3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChnZXRMb2NhbFBvc2l0aW9ucy5vcGVyYW5kKG9w
ZXJhbmQpID09IG5vdFNldCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIKaW5kZXggNGE4YjFlNTgxNDQxZmRhNjg3NmU2NTJjOTg0NjAxYTJi
M2I3OWQzNC4uOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEwYzgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzNyw2ICsxMzcsNyBAQCBtb2R1
bGUgRFNMCiAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiR2V0QnlWYWxI
aXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9NZXRhZGF0YS5yYgppbmRleCA3Y2QxNWQzMTVkNjM5MGFiYTI2MzVlOTYzNTlm
ODkwZTJlYjcxYTk1Li5jMDc3NWQ4ZTFiMTA1MDJkZjAxYTc0YWYwYzZkZWI0YTg3NWNjNjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKQEAgLTY3LDYg
KzY3LDcgQEAgY2xhc3MgTWV0YWRhdGEKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0
YWRhdGEpOwogCiAgICAgcHVibGljOgorICAgICAgICAje29wLm9wY29kZUlEfQogICAgICAgICBN
ZXRhZGF0YShjb25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29wIiBpZiBpbml0c30p
I3tpbml0c30geyB9CiAKICN7ZmllbGRzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9TZWN0aW9uLnJiCmluZGV4IDliNWVlOTA5NmVlNzFiMWIwZDNlZDdmN2NkMThkYjA2ZmNiMzVm
Y2YuLjdmNDMwMmQ4ODJlZjZmMzU5NTc2NzdlZGNmMDQ5ZDMyNmY5NjQ0MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTUzLDcgKzUzLDE3IEBAIGNs
YXNzIFNlY3Rpb24KICAgZW5kCiAKICAgZGVmIHNvcnQhCi0gICAgICBAb3Bjb2RlcyA9IEBvcGNv
ZGVzLnNvcnQgeyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/
IDAgOiAxIDogLTEgfQorICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8Cisg
ICAgICAgICAgcmVzdWx0ID0gbmlsCisgICAgICAgICAgaWYgYS5jaGVja3BvaW50cyBvciBiLmNo
ZWNrcG9pbnRzCisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMgd2l0aCBjaGVja3BvaW50
cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3thLm5hbWV9IiBpZiBhLmNoZWNrcG9pbnRzIGFuZCBh
Lm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hl
Y2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7Yi5uYW1lfSIgaWYgYi5jaGVja3BvaW50
cyBhbmQgYi5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmVzdWx0ID0gYS5jaGVja3Bv
aW50cyA/IGIuY2hlY2twb2ludHMgPyAwIDogLTEgOiAxCisgICAgICAgICAgZWxzaWYKKyAgICAg
ICAgICAgICAgcmVzdWx0ID0gYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/
IDAgOiAxIDogLTEgCisgICAgICAgICAgZW5kCisgICAgICAgICAgcmVzdWx0CisgICAgICB9CiAg
ICAgICBAb3Bjb2Rlcy5lYWNoKCY6Y3JlYXRlX2lkISkKICAgZW5kCiAKQEAgLTczLDYgKzgzLDE5
IEBAIGNsYXNzIFNlY3Rpb24KICAgICAgIGVuZAogCiAgICAgICBpZiBjb25maWdbOmVtaXRfaW5f
c3RydWN0c19maWxlXQorICAgICAgICAgIGkgPSAwCisgICAgICAgICAgd2hpbGUgdHJ1ZQorICAg
ICAgICAgICAgICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50cworICAgICAgICAgICAgICAgICAg
cHJpbnQoIkZPVU5EIFRIRSBOVU1CRVIgT0YgQ0hFQ0tQT0lOVFMgQU5EIEknTSBQUklOVElORyBJ
VCBJTlRPIFRIRSBGSUxFIFdJTkRPV1MhIikKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAiXG4i
CisgICAgICAgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgTlVNQkVSX09GXyN7Y29uZmlnWzpt
YWNyb19uYW1lX2NvbXBvbmVudF19X1dJVEhfQ0hFQ0tQT0lOVFMgI3tpfVxuIgorICAgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgaSArPSAx
CisgICAgICAgICAgZW5kCisgICAgICAgICAgb3V0IDw8ICJcbiIKKwogICAgICAgICAgIG91dC53
cml0ZSgiI2RlZmluZSBGT1JfRUFDSF8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9N
RVRBREFUQV9TSVpFKG1hY3JvKSBcXFxuIikKICAgICAgICAgICBpID0gMAogICAgICAgICAgIHdo
aWxlIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOWExYTE5
NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmLi44YjNhMjM4YTRkYWYxZmM2NzkxNDBkOGJiZWM3NzA5
Yjg1NjhiYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNjEsNyArMjYxLDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBtX2xhYmVsc1tt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCldID0gbGFiZWwoKTsKIAogICAgICAgICBpZiAoSklUSW50
ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcg
Y29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09m
ZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIGNv
ZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZz
ZXQoKSk7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
Pm9wY29kZUlEKCk7CiAKQEAgLTQzOCw2ICs0MzgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfaW50ZXJuYWxfZmllbGQpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfaW50ZXJuYWxfZmllbGQpCiAKKyAgICAgICAgREVGSU5F
X09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9uZXh0
KQorCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hp
ZnQpCiAgICAgICAgIERFRklORV9PUChvcF91bnNpZ25lZCkKQEAgLTUyNSw3ICs1MjgsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgcmFyZUNhc2VQ
cm9maWxlID0gJnJhcmVDYXNlUHJvZmlsZXMuYXQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNl
KTsKIAogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRh
TG9nTG4oIk9sZCBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgs
ICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJCYXNlbGluZSBKSVQgZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5k
ZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIGlmICht
X2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRlY29k
ZVNsb3dQYXRoKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbGFiZWwoKSk7CkBAIC01ODksNiAr
NTkyLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcHV0X3RvX3Njb3BlKQogCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9p
dGVyYXRvcl9vcGVuKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3JfbmV4
dCkKKwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh1bnNpZ25lZCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xP
V19PUChkZWMpCkBAIC02MjYsOCArNjMyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQXQgIiwgZmlyc3RUbywgIiBzbG93OiAiLCBpdGVyIC0gbV9zbG93Q2FzZXMuYmVn
aW4oKSwgIlxuIik7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIg
PT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUbyAhPSBpdGVyLT50bywgIk5vdCBlbm91Z2gg
anVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUbyA9PSAoaXRlciAtIDEpLT50bywgIlRvbyBtYW55IGp1
bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5vZmZz
ZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNs
b3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uo
Zmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBtYW55IGp1
bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIo
MSksIEFic29sdXRlQWRkcmVzcygmcmFyZUNhc2VQcm9maWxlLT5tX2NvdW50ZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxMTgyYWEwNzI5YTI3NDkxMDA0ZjQ1ZTFl
YTZhYzEuLjgzYWUxYTdiNjk4ZDY5MzNkYmI4YTAzNzE5MDQ5ZWMyMjU4MThmNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaApAQCAtMjk3LDYgKzI5Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogCisgICAgICAg
IHZvaWQgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hv
dEZvckNoZWNrcG9pbnQoSnVtcCk7CisKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShKdW1wKTsK
ICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYpOwogICAgICAgICB2b2lk
IGFkZFNsb3dDYXNlKCk7CkBAIC02NzYsNiArNjc5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAorICAgICAgICB2
b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9u
KiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNl
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJv
b2wgaXNVbnNpZ25lZCk7CiAKQEAgLTkxMSw2ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExhYmVs
PiBtX2xhYmVsczsKKyAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVj
a3BvaW50TGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRC
eUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsK
ICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dp
dGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZTFlNTY1ZGM1
MjQ5ZjZhY2ZkYWEyNGJmZmI0NDcxZmZjYjIwYjg2Ni4uNzg3NWM5OTYwZmJiN2EwMDk1NzI1YzY4
MTliOGZiOGY0YjYxMDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBA
IC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKEpTVkFMVUU2NCkKICNpbmNsdWRlICJKSVQuaCIKIAor
I2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCisjaW5jbHVkZSAiQ2Fj
aGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxlci5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKQEAgLTQy
LDggKzQ0LDggQEAKICNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgogI2luY2x1ZGUgIlN0
YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCi0jaW5jbHVkZSA8
d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUxLDcgKzUzLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+CiB2b2lkIEpJVDo6ZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmIGJ5dGVjb2Rl
KQogewogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5dGVj
b2RlSW5kZXguY2hlY2twb2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKSwgcmVnVDApOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTYxLDIwICs2MywyMSBAQCBzdGQ6OmVuYWJsZV9pZl90
PAogLCB2b2lkPgogSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENh
bGxMaW5rSW5mbyopCiB7CisgICAgdW5zaWduZWQgY2hlY2twb2ludCA9IG1fYnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayk7Ci0gICAgaW50IGFyZ0NvdW50ID0gYnl0ZWNvZGUubV9hcmdjOwotICAgIGlu
dCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7Cisg
ICAgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
Rm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50KTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3Rh
dGljX2Nhc3Q8aW50PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hl
Y2twb2ludCkpOwogCiAgICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVt
aXRQcm9maWxpbmcoKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxS
ZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRp
bmdUaGlzKDApKSwgcmVnVDApOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5vdENlbGwo
cmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgcmVnVDApOwotICAgICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRhZGF0YS5tX2Nh
bGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkp
OworICAgICAgICBzdG9yZTMyKHJlZ1QwLCBhcnJheVByb2ZpbGVGb3IobWV0YWRhdGEsIGNoZWNr
cG9pbnQpLmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgIGRvbmUubGlu
ayh0aGlzKTsKICAgICB9CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0
ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFt
ZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1t
MzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7Cisg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzKSwgQWRkcmVzcyhz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNl
dCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogfQogCiAKQEAgLTIwNyw3ICsyMTAsNyBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gT3A6
Om9wY29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2FsbGVlOworICAgIFZpcnR1
YWxSZWdpc3RlciBjYWxsZWUgPSBjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpOwogCiAgICAgLyogQ2FsbGVyIGFsd2F5czoKICAgICAgICAgLSBVcGRhdGVz
IGNhbGxGcmFtZVJlZ2lzdGVyIHRvIGNhbGxlZSBjYWxsRnJhbWUuCkBAIC0yMzQsOSArMjM3LDgg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNh
bGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAgICAgc3RvcmU2NChyZWdUMCwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOwogCi0gICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpIHsKKyAgICBpZiAoY29t
cGlsZUNhbGxFdmFsKGJ5dGVjb2RlKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIERh
dGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIEp1bXAgc2xvd0Nh
c2UgPSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRG
dW5jdGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKQEAgLTM4MCw2ICszODIsMTg0
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9w
Q29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgr
Kyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T3BJdGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7Cisg
ICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJy
b3c6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdzsKKyAgICAgICAgY2FzZSBX
aWRlMTY6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNjsKKyAgICAgICAgY2Fz
ZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMjsKKyAgICAgICAg
ZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0p
KCk7CisgICAgc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9uKT4oaW5zdHJ1
Y3Rpb24sICZtZXRhZGF0YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayh0cnlG
YXN0RnVuY3Rpb24pOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0
b3JPcGVuPihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBjaGVja3Bv
aW50UmVhY2hlZCgpOworICAgIC8vIGNhbGwgcmVzdWx0IChpdGVyYXRvcikgaXMgaW4gcmVnVDAK
KworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJnZtKCkucHJvcGVydHlOYW1lcy0+bmV4
dDsKKyAgICAKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOworCisgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9nZXRCeUlkcy5h
cHBlbmQoZ2VuKTsKKworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
bmV4dCk7CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck9wZW4+KGluc3Ry
dWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1Rv
SG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIG5leHRWUmVnID0gYnl0ZWNvZGUubV9uZXh0OworICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7
CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZElu
ZGV4KytdOworICAgIAorICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAs
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQp
LnJhd0JpdHMoKSk7CisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkg
eworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2Ug
TmFycm93OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3c7CisgICAgICAgIGNh
c2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTY7CisgICAgICAg
IGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzI7CisgICAg
ICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9KSgpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIHJl
Z1QwKTsKKyAgICBKdW1wIGdlbmVyaWNDYXNlID0gYnJhbmNoSWZOb3RFbXB0eShyZWdUMCk7Cisg
ICAgc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJ5RmFzdEZ1bmN0aW9uKT4oaW5zdHJ1Y3Rpb24s
ICZtZXRhZGF0YSk7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayh0cnlGYXN0RnVu
Y3Rpb24pOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJh
dGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBnZW5lcmljQ2FzZS5saW5rKHRoaXMpOworICAg
IG9yOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oSXRlcmF0aW9uTW9kZTo6R2Vu
ZXJpYykpLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vl
bk1vZGVzKSk7CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yTmV4dD4oaW5zdHJ1Y3Rpb24s
IG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAv
LyBjYWxsIHJlc3VsdCAoeyBkb25lLCB2YWx1ZSB9IEpTT2JqZWN0KSBpbiByZWdUMAorCisgICAg
R1BSUmVnIHZhbHVlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdU
MjsKKyAgICBHUFJSZWcgZG9uZUdQUiA9IHJlZ1QxOworICAgIC8vIGl0ZXJSZXN1bHRHUFIgd2ls
bCBnZXQgdHJhc2hlZCBieSB0aGUgZmlyc3QgZ2V0IGJ5IGlkIGJlbG93LgorICAgIG1vdmUodmFs
dWVHUFIsIGl0ZXJSZXN1bHRHUFIpOworCisgICAgeworICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoaXRlclJlc3VsdEdQUik7CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgcHJlc2Vy
dmVkUmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKKyAgICAg
ICAgcHJlc2VydmVkUmVncy5hZGQodmFsdWVHUFIpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwo
KSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgQWNj
ZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
KyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRC
eUlkcy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFk
YXRhKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RvbmUsIGRv
bmVHUFIpOworICAgICAgICBjaGVja3BvaW50UmVhY2hlZCgpOworICAgIH0KKworCisgICAgewor
ICAgICAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gy
ID0gcmVnVDM7CisgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gZmFsc2U7CisgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFuY2hJ
ZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBm
cFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CisKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBn
ZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKG1ldGFkYXRhKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUdQUik7CisKKyAgICAgICAgaXRlcmF0aW9uRG9uZS5saW5r
KHRoaXMpOworICAgIH0KKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yTmV4
dD4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgZW1pdEp1
bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIHsKKyAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGRvbmVWUmVnID0gYnl0ZWNvZGUubV9kb25lOworICAgICAgICBHUFJSZWcgaXRl
clJlc3VsdEdQUiA9IHJlZ1QyOworCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Cisg
ICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFu
Y2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikpOworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJy
YW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKKworICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwor
ICAgICAgICAKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAg
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRv
bmVWUmVnLCByZWdUMSk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV92YWx1ZSwgcmVnVDApOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
anVtcCgpKTsKKworICAgICAgICBub3RPYmplY3QubGluayh0aGlzKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgeyAgIAor
ICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmFsdWVWUmVnID0gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRH
UFIgPSByZWdUMDsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnBy
b3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKwor
ICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAg
IH0KKworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggOTA2OTZj
YmVjMTBlMzkzYjk5NzBmMGViMjAxMThkMjE5NzRjMzUyNS4uZDE0MGFhYzliZTJkNTQwM2QxYmMw
ZDk5MTJhZTllMTA1ZjgwZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcApAQCAtMzY2LDYgKzM2NiwyNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNs
b3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQog
ICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
aXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit7Cisg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCmluZGV4IDdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQuLjRi
OTRhYjg0MWZkMTUxNDhkNGEzMjNlMTM4MWQyMzU5N2YzMGE5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yNiw3ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShKSVQpCisjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQu
aCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNSw3ICsx
MDcsNyBAQCBBTFdBWVNfSU5MSU5FIEpJVDo6Q2FsbCBKSVQ6OmVtaXROYWtlZFRhaWxDYWxsKENv
ZGVQdHI8Tm9QdHJUYWc+IHRhcmdldCkKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRl
VG9wQ2FsbEZyYW1lKCkKIHsKLSAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCkuYml0cygpOworICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKS5iaXRzKCk7CiAgICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90
IGNsZWFyIHRoYXQgdGhpcyBpcyBuZWVkZWQuIEpJVE9wZXJhdGlvbnMgdGVuZCB0byB1cGRhdGUg
dGhlIHRvcCBjYWxsIGZyYW1lIG9uCkBAIC0xODMsNiArMTg1LDI1IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKSVQ6Omhhc0FueVNsb3dDYXNlcyhWZWN0b3I8U2xvd0Nhc2VFbnRyeT4mIHNsb3dDYXNl
cywgVmVjdG9yCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBKSVQ6OmNoZWNr
cG9pbnRSZWFjaGVkKCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRl
eCwgIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0
aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICBtX2J5
dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9i
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0byByZXN1bHQgPSBtX2No
ZWNrcG9pbnRMYWJlbHMuYWRkKG1fYnl0ZWNvZGVJbmRleCwgbGFiZWwoKSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSklU
OjplbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCBqdW1wKQoreworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRl
Y29kZUluZGV4IGlzIHNldCIpOworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsg
MSk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX2NoZWNrcG9pbnRMYWJlbHMuZmluZChtX2J5dGVjb2Rl
SW5kZXgpOworICAgIEFTU0VSVChpdGVyICE9IG1fY2hlY2twb2ludExhYmVscy5lbmQoKSk7Cisg
ICAganVtcC5saW5rVG8oaXRlci0+dmFsdWUsIHRoaXMpOworfQorCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjphZGRTbG93Q2FzZShKdW1wIGp1bXApCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJ
bmRleCk7IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2Nv
bGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQuCkBAIC0z
MTksNyArMzQwLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKE1l
dGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEubV9wcm9m
aWxlKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHZhbHVlUHJvZmlsZUZvcihtZXRhZGF0
YSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVy
SUQgaW5kZXhpbmdUeXBlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZTE1MGNjNjYxMDc2MmJh
Y2M4YmU0MjIwNzNhYWQ2NGFiMzExOTEuLmE1ZTJhMjQ3Y2YxNTRkYTQ2ZWIzM2RmYmJmMGUzMzYw
ZDM2ZjU1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtMTM0LDYgKzEzNCwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dT
dGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIEFTU0VS
VCh2bS50YXJnZXRNYWNoaW5lUENGb3JUaHJvdyk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7Cit9CisKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKaW5kZXggOGVmYjViNWFjOTgwYWVlNmM1NTIzNDQzN2M5MDI4OTU4OTAyMjY2NS4uOWZj
YzQxZGVjNDU4MmM5NjUyOTIzNjU1ZGE4ZjMwMjY5NWRmNzAxOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcihWTSopIFdURl9JTlRFUk5B
TDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZNSGFuZGxlRXhjZXB0aW9uKFZNKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2Jq
ZWN0KikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRl
cmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENvZGVC
bG9jayopIFdURl9JTlRFUk5BTDsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDhkZWE3ZjI3OGU3NjYy
ZTUwMzE0Y2ViOWIwODMzOWY4N2JmZGE0OTcuLjc5ZmE2MDIxNzJiMTFhNDg0YzQ0YjRhOGU0YmZj
NmE1MmUzYmJkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVP
cGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
c0lubGluZXMuaCIKQEAgLTgyLDYgKzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKICAgICBTbG93
UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIGRhdGFMb2dMbklm
KExMSU5UX1RSQUNJTkcgJiYgT3B0aW9uczo6dHJhY2VMTEludFNsb3dQYXRoKCksICJDYWxsaW5n
IHNsb3cgcGF0aCAiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsgXAogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNpZm5kZWYgTkRFQlVHCkBAIC02OTMsNyAr
Njk1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3Qp
CiB9CiAKIAotc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBi
YXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0
YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFBy
b3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNzQxLDQ0ICs3
NDMsMzkgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB7CiAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICBpZiAoc2xvdC5p
c1Vuc2V0KCkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRVbnNldE1v
ZGUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNldFVuc2V0TW9kZShzdHJ1Y3R1
cmUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7
Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0
cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RCYXNlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEu
c2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQog
Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCitzdGF0aWMgSlNW
YWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZh
bHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRh
dGEpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
R2V0QnlJZD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZp
ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwotICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwotICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkg
PSByZXN1bHQ7Ci0gICAgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OworCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZh
bHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQogICAgICAgICAmJiAh
c2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xk
U3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
Lm1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubW9kZSkgewogICAgICAgICAg
ICAgY2FzZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwor
ICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5
SWRNb2RlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OlByb3RvTG9hZDoK
LSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1
cmVJRCA9IDA7CkBAIC03OTksMzUgKzc5NiwxMDMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNs
ZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CisgICAgICAgICAgICBtZXRh
ZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKIAogICAgICAgICAgICAgLy8g
UHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAg
ICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7
CisgICAgICAgICAgICBtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hl
YWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewot
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVj
dHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1
Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVk
T2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICB2bS5oZWFwLndy
aXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KFVOTElLRUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5n
ICYmIHNsb3QuaXNWYWx1ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFk
YXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIHNsb3QuaXNWYWx1ZSgpKSkgewogICAgICAg
ICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlVmFsdWUpOwogCi0gICAgICAgICAg
ICBpZiAoISgtLW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5n
KSkKKyAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcp
KQogICAgICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGdsb2JhbE9iamVj
dCwgdm0sIGNvZGVCbG9jaywgcGMsIG1ldGFkYXRhLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlz
SlNBcnJheShiYXNlVmFsdWUpICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkg
ewogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldEFy
cmF5TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0Nl
bGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0
aE1vZGUoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2Zp
bGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwog
ICAgICAgICB9CiAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAg
fQogCi0gICAgTExJTlRfUFJPRklMRV9WQUxVRShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZD4oKTsK
KyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9v
cGVuX2dldF9uZXh0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9v
cGVuX2dldF9uZXh0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgIFJlZ2lzdGVyJiBuZXh0UmVn
aXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIEpT
VmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgbmV4dFJlZ2lzdGVy
ID0gcmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmls
ZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9u
ZXh0X2dldF9kb25lKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9u
ZXh0X2dldF9kb25lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRo
ZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgc2luY2UgaXQncyBlaXRoZXIgbm90IGxpdmUgcGFzdCB0
aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVyLgorICAgIEpTVmFs
dWUgaXRlcmF0b3JSZXR1cm4gPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1
ZSk7CisgICAgUmVnaXN0ZXImIGRvbmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihi
eXRlY29kZS5tX2RvbmUpOworCisgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09iamVjdCgpKQor
ICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0
b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOworCisgICAgSlNWYWx1
ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9u
ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZG9uZVJl
Z2lzdGVyID0gcmVzdWx0OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25l
UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElO
VF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVy
YXRvcl9uZXh0X2dldF92YWx1ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRl
cmF0b3JfbmV4dF9nZXRfdmFsdWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIC8vIFdlIHVzZSBtX3ZhbHVlIHRv
IGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1ZSB0bXAgc2luY2UgaXQncyBlaXRoZXIgbm90
IGxpdmUgcGFzdCB0aGlzIGJ5dGVjb2RlIG9yIGl0J3MgZ29pbmcgdG8gYmUgZmlsbGVkIGxhdGVy
LgorICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5
dGVjb2RlLm1fdmFsdWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lz
dGVyLmpzVmFsdWUoKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJ
RChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgdmFsdWVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCisKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
QEAgLTE1NjMsNyArMTYyOCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxs
KENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUg
Z2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBP
cCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCA9IDApCiB7CiAgICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1
cCBhIGNhbGwgZnJhbWUuCkBAIC0xNTcxLDE2ICsxNjM2LDE2IEBAIGlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2Fs
bEZyYW1lCiAgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNo
ZS4KICAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9jYWxsZWUpOworICAgIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBjYWxsZWVGb3IoYnl0ZWNv
ZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIAotICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUg
PSBjYWxsRnJhbWUgLSBieXRlY29kZS5tX2FyZ3Y7CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZSA9IGNhbGxGcmFtZSAtIHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBj
aGVja3BvaW50SW5kZXgpOwogICAgIAotICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyhieXRlY29kZS5tX2FyZ2MpOworICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRl
Y29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmly
dHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKICAg
ICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJhbWUoY2FsbEZyYW1lKTsKICAgICAKICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHNl
dFVwQ2FsbChjYWxsZWVGcmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJm1ldGFkYXRhLm1fY2Fs
bExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxs
ZWVBc1ZhbHVlLCAmY2FsbExpbmtJbmZvRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpKTsK
IH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwpCkBAIC0xNjA0LDYgKzE2
NjksMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCkKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBjYWxs
RnJhbWUsIHBjLT5hczxPcENvbnN0cnVjdD4oKSwgQ29kZUZvckNvbnN0cnVjdCkpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fY2FsbCk7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisKKy8v
ICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG9wZW5fY2FsbCIpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBw
Yy0+YXM8T3BJdGVyYXRvck9wZW4+KCksIENvZGVGb3JDYWxsLCBPcEl0ZXJhdG9yT3Blbjo6c3lt
Ym9sQ2FsbCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2l0
ZXJhdG9yX25leHRfY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0
b3JfbmV4dF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CisKKy8vICAgIGRhdGFMb2dMbigiQ2FsbGluZyBzbG93IG5leHRfY2FsbCIp
OworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGNvZGVC
bG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCksIENvZGVGb3JDYWxsLCBP
cEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
QEAgLTE5OTAsNiArMjA3Nyw0NCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVWYXJhcmdzQ2hlY2twb2lu
dChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdAogICAgIGNhbGxG
cmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RzdCkgPSByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2
b2lkIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck9wZW4m
IGJ5dGVjb2RlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1f
aXRlcmF0b3IpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlIG5leHQgPSBpdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpID0gbmV4dDsK
K30KKworc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludChWTSYgdm0sIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBP
cEl0ZXJhdG9yTmV4dCYgYnl0ZWNvZGUsIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlJiBzaWRl
U3RhdGUpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCA9IHNpZGVTdGF0ZS5ieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKTsKKworICAgIGF1dG8mIHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgYXV0byBpdGVyYXRvclJlc3VsdE9iamVjdCA9IHNp
ZGVTdGF0ZS50bXBzW09wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0XTsKKyAgICBhdXRvIG5leHQg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KS5qc1ZhbHVlKCk7ICAgIAor
CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG5leHQsICJXZSBzaG91bGQgbm90IE9T
UiBleGl0IHRvIGEgY2hlY2twb2ludCBmb3IgZmFzdCBjYXNlcy4iKTsKKworICAgIGF1dG8mIGRv
bmVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX2RvbmUpOworICAg
IGlmIChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmdldERvbmUpIHsKKyAgICAg
ICAgZG9uZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+ZG9uZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChkb25l
UmVnaXN0ZXIuanNWYWx1ZSgpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKQorICAgICAgICB2YWx1
ZVJlZ2lzdGVyID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlUmVnaXN0
ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZSk7Cit9CisKIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05l
eHRJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiBwYykKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghY29kZUJsb2NrLT52bSgpLmV4Y2VwdGlvbkZv
ckluc3BlY3Rpb24oKSk7CkBAIC0yMDY2LDYgKzIxOTEsMTUgQEAgZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgc2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUKICAgICAgICAgaGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LCBwYy0+YXM8T3BUYWlsQ2FsbFZhcmFyZ3M+KCksICpzaWRlU3RhdGUuZ2V0KCkp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAg
ICBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBoYW5kbGVJdGVyYXRvck5leHRDaGVj
a3BvaW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0
PigpLCAqc2lkZVN0YXRlLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVm
YXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0yMTAzLDYgKzIyMzcsMTIgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2Jh
cnJpZXJfc2xvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBjZWxsKQogICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92
YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZHVtcF92
YWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBkYXRhTG9nTG4oSlNWYWx1ZTo6ZGVj
b2RlKHZhbHVlKSk7Cit9CisKIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IGxsaW50X2NyYXNoKCkKIHsKICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjZGFm
YTRmOTNjM2E5ZjA5ODA1NzFjODE3NjdjMWEuLmY5YTM0ZGFiMzZkOWZhNTI3NTZhMTk4YjJkNzRm
NzUyYzUzOGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEwMzIsNyArMTAzMiw3IEBAIG1hY3JvIGRlZmluZU9T
UkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93
LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdpZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAot
bWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
ZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Ag
b3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVs
c2UKQEAgLTEwNDUsMTEgKzEwNDUsMTEgQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFAKICAgICAg
ICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhw
ZWN0ZWQKICAgICAgICAgIyBjcmFzaGVzLgogICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0
ZXJDYWxsKCkKLSAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCkKKyAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAog
ICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3Rv
cmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQog
ZW5kCiAKIG1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwg
dGVtcDMsIGNhbGxQdHJUYWcpCkBAIC0xMTE3LDcgKzExMTcsMTEgQEAgbWFjcm8gcHJlcGFyZUZv
clRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBq
bXAgY2FsbGVlLCBjYWxsUHRyVGFnCiBlbmQKIAotbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKK21hY3JvIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JD
YWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlz
cGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNh
bGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2Fs
bENhbGxTbG93UGF0aCgKICAgICAgICAgc2xvd1BhdGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIw
IGFuZCByMQpAQCAtMTEyNiw3ICsxMTMwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXIKICAg
ICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2Fs
bChjYWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0
ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAg
ICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gs
IGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0yMDE2LDcg
KzIwMjAsNyBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIGZyYW1lU2xvd1BhdGgsIHNsbwogICAgICAgICAgICAgc3VicCByMSwg
Q2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiAgICAgICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQ
YXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUs
IHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVu
ZAogCiAKQEAgLTIwNzksNyArMjA4Myw3IEBAIGVuZCkKICMgcmV0dXJucyB0aGUgSlMgdmFsdWUg
dGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KIAogX2xsaW50X29wX2NhbGxfZXZhbDoKLSAgICBzbG93
UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAgICAgICBvcF9jYWxs
X2V2YWxfbmFycm93LAogICAgICAgICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCkBAIC0y
MDg4LDcgKzIwOTIsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgICAgICBwcmVwYXJlRm9y
UmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgotICAgIHNsb3dQYXRo
Rm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxfZXZh
bF93aWRlMTYsCiAgICAgICAgIHdpZGUxNiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIwOTcs
NyArMjEwMSw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogICAgICAgICBwcmVwYXJl
Rm9yUmVndWxhckNhbGwpCiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgotICAgIHNsb3dQ
YXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAgICAgIG9wX2NhbGxf
ZXZhbF93aWRlMzIsCiAgICAgICAgIHdpZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwKQEAgLTIx
MDcsNyArMjExMSw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogCiAKIGNvbW1vbk9w
KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50LCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQot
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1hY3JvICgpCisgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BDYWxsRXZhbCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8g
KCkKICAgICAgICAgZGlzcGF0Y2hPcChzaXplLCBvcF9jYWxsX2V2YWwpCiAgICAgZW5kKQogZW5k
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQppbmRleCA4MTg5MWMyMmU2MTgzYzgwNDJhYmRmY2U4ZDQzOTExYWY0
MWY2NTRhLi43NGM0ODBkZjIxMjE3MTY1NTBjNWZkNGYwODQ0YWIxMTA4ZmRjODFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQpAQCAtNjcsNyArNjcsNyBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bj
b2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAgICAgICAgIG1vdmUgcGF5
bG9hZCwgdDAKIAogICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHQ1LCB0MSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MCkKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAg
ICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCkBAIC03NywxNiArNzcsMTcgQEAgZW5kCiAKIAog
IyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lz
dGVycyBhcmUgbm90IHVzZWQuCi1tYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoKQorbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAg
IGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3Ry
dWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1f
ZHN0LCB0MykKKyAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IHQzKQogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIxLCByMCkK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEs
IHIwKQogICAgIGRpc3BhdGNoKCkKKwogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbikKQEAg
LTYzMiw5ICs2MzMsOSBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9u
bWVudChzaXplLCBnZXQsIHZhbHVlRmllbGROYW1lKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFj
cm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKK21h
Y3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFn
LCBwYXlsb2FkKQogICAgIHN0b3JlaSB0YWcsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9w
cm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KLSAgICBzdG9yZWkgcGF5bG9h
ZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgUGF5bG9h
ZE9mZnNldFttZXRhZGF0YV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFd
CiBlbmQKIAogCkBAIC0xMzc4LDcgKzEzNzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAog
ICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKICAg
ICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNs
b3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0
MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNd
LCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2Zp
bGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVu
Z3RoOgpAQCAtMTQxMyw3ICsxNDE0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
aWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBs
b2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAogICAgIGxvYWRpIC1zaXplb2YgSW5k
ZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0s
IHQwCiAgICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCB0NSwgSW50MzJUYWcsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1f
cHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogCiAu
b3BHZXRCeUlkVW5zZXQ6CkBAIC0xNDIxLDcgKzE0MjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdAogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0
TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCkKICAgICByZXR1cm4oVW5kZWZp
bmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVsdDoKQEAgLTE0MzAsNyArMTQzMSw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJv
ZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoK
QEAgLTE0NDAsNyArMTQ0MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBP
cEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJu
UG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwg
c2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwg
dDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCBy
MSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTUxOCw3ICsxNTE5LDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAg
ICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAg
IHN0b3JlaSByZXN1bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9h
ZCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMy
VGFnLCByZXN1bHRQYXlsb2FkKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1
MjcsNyArMTUyOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRC
eVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZkMmlpIHJl
c3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gzCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zm
c2V0W2Nmciwgc2NyYXRjaDEsIDhdCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9m
ZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwg
dDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKICAgICAgICAgZGlzcGF0Y2goKQog
ICAgIGVuZAogCkBAIC0xNTcyLDcgKzE1NzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAog
Lm9wR2V0QnlWYWxOb3RFbXB0eToKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5v
dEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU4NSw3ICsxNTg2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9p
bnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBA
IC0xOTU3LDEwICsxOTU4LDEwIEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93
UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIHN0b3Jl
aSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCiAg
ICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0g
ICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFj
aGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBk
aXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hp
bmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgotICAg
ICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwg
c2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjg4LDcgKzIyODks
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29w
ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAg
ICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0Mwog
ICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAg
ICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yMjk3LDcgKzIyOTgsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAg
ICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2Fy
eSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0
MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjMwNSw3ICsyMzA2LDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6
Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZp
cm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9h
ZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMs
IDhdLCB0MgotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MSwgdDIp
CisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEs
IHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTk0LDYgKzI1OTUs
MTUgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5n
dGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQog
ZW5kKQogCitsbGludE9wKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRl
cmF0b3Jfb3Blbiwgc2l6ZSkKKyAgICBicmVhaworZW5kKQorCitsbGludE9wKG9wX2l0ZXJhdG9y
X25leHQsIE9wSXRlcmF0b3JOZXh0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAgICBk
ZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3JfbmV4dCwgc2l6ZSkKKyAgICBicmVh
aworZW5kKQogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdl
dEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAg
Z2V0KG1fYmFzZSwgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGFlMmUzNzczZmZkY2M0MDY3NGM3YWFjMGMx
ZDRmZTZjZDBmYjc4NTkuLjg2MTM2ZTg1N2M5Zjc4MjJiMjQ0NmM2MjZiZmRjN2EzZGZiYjJmZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCkBAIC02OCwyNiArNjgsMjYgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVk
KG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3Jv
ICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQy
KQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MSwgdDMpCisgICAgICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQo
bV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNw
YXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0c1ttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZh
bHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21l
dGFkYXRhXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFp
bWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxs
KHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVy
LCBkaXNwYXRjaCkKICAgICBsb2FkUEMoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgog
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAg
ICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2RzdCwgdDEpCisgICAgZ2V0KHNpemUsIG9wY29k
ZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQx
LCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVl
UHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjApCiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAg
LTEzNDAsNyArMTM0MCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVj
dCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgYmluZXEgdDAs
IHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0
YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgdDIsIHQwKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAg
IHJldHVybih0MCkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xMzQ4LDUzICsxMzQ4LDU5
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGly
ZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi1sbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVj
dGVkIGluIHQzCittYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVN
ZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEs
IHJldHVybikKICAgICBtZXRhZGF0YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9kZVt0Ml0sIHQxCi0gICAgZ2V0KG1fYmFzZSwgdDApCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xv
dykKKyAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1l
JS5tb2RlW3QyXSwgdDEKIAogLm9wR2V0QnlJZERlZmF1bHQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0
ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAogICAgIGxvYWRp
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAg
IGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAg
ICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwK
KyAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUu
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQw
KQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0
MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CiAgICAgYmJuZXEgdDEs
IGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgK
ICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0
QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURb
dDJdLCB0MwotICAgIGJpbmVxIHQzLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZz
ZXRbdDJdLCB0MQotICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJ
RFt0Ml0sIHQzCisgICAgYmluZXEgdDMsIHQxLCBzbG93TGFiZWwKKyAgICBsb2FkaXMgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNo
ZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5n
dGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5v
cEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQwCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUs
IHQwLCB0MiwgdDUpCi0gICAgYnRpeiB0MCwgSXNBcnJheSwgLm9wR2V0QnlJZFNsb3cKLSAgICBi
dGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QnlJZFNsb3cKKyAgICBhcnJheVByb2Zp
bGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5n
dGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBidGl6IHQwLCBJc0FycmF5LCBz
bG93TGFiZWwKKyAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAg
bG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAg
bG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgdDAKLSAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdworICAg
IGJpbHQgdDAsIDAsIHNsb3dMYWJlbAogICAgIG9ycSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRV
bnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRp
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJ
RFt0Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICBsb2FkaSAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURb
dDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkKQogICAgIHJl
dHVybihWYWx1ZVVuZGVmaW5lZCkKIAorZW5kCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgcGVyZm9ybUdldEJ5SURIZWxw
ZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywg
c2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKwogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgIGRpc3BhdGNoKCkKQEAgLTE0MDIs
NyArMTQwOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAg
ICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAg
ICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHIwKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVy
bihyMCkKIAogZW5kKQpAQCAtMTQ5Nyw3ICsxNTAzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdl
dChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwg
OF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCisgICAgICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQpCiAgICAgICAg
IGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU1OCw3ICsxNTY0LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKIAogLm9wR2V0QnlWYWxEb25lOgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAs
IDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCiAgICAgZGlzcGF0Y2goKQogCiAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTU3MSw3ICsxNTc3LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0
UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0x
OTQ4LDYgKzE5NTQsMzAgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3Qs
IGdldHUpCiAuZG9uZToKIGVuZAogCittYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQ
YXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
cHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1
bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICBtZXRhZGF0YSh0
NSwgdDApCisgICAgZ2V0Q2FsbGVlKHQwKQorCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0Jp
dFt0NV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCisgICAg
YnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdworCisgICAgZ2V0QXJndW1lbnRTdGFydCh0MykKKyAg
ICBsc2hpZnRpIDMsIHQzCisgICAgbmVncCB0MworICAgIGFkZHAgY2ZyLCB0MworICAgIHN0b3Jl
cSB0MiwgQ2FsbGVlW3QzXQorICAgIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKQor
ICAgIHN0b3JlUEMoKQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIHNwCisgICAgcHJlcGFyZUNhbGwoJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24o
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorCisub3BDYWxs
U2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0
aCwgcHJlcGFyZUNhbGwpCitlbmQKKwogbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNs
b3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICBsbGludE9w
V2l0aE1ldGFkYXRhKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAg
LTE5NTYsMjQgKzE5ODYsMTkgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQ
YXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgICAgIGdl
dHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICAgICAgZW5kLCBtZXRh
ZGF0YSkKIAotICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxl
ZVdpdGhMaW5rQml0W3Q1XSwgdDIKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MCwgdDMpCi0gICAgICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0
dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMK
LSAgICAgICAgbmVncCB0MwotICAgICAgICBhZGRwIGNmciwgdDMKLSAgICAgICAgc3RvcmVxIHQy
LCBDYWxsZWVbdDNdCi0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQy
KQotICAgICAgICBzdG9yZVBDKCkKLSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgICAgIG1vdmUgdDMsIHNwCi0gICAg
ICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
bV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAg
ICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRp
c3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGlu
ZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQotCi0gICAgLm9wQ2FsbFNsb3c6Ci0gICAg
ICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgICAgIG1hY3JvIGdldENhbGxlZShkc3Qp
CisgICAgICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQorICAgICAgICBlbmQKKworICAgICAgICBt
YWNybyBnZXRBcmd1bWVudFN0YXJ0KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBtX2FyZ3YsIGRzdCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJn
dW1lbnRDb3VudChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9h
cmdjLCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwg
c2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNp
emUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRB
cmd1bWVudENvdW50KQogICAgIGVuZCkKIGVuZAogCkBAIC0yMjc2LDcgKzIzMDEsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9h
ZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRG
cm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgICAgICByZXR1cm4odDIpCiAgICAgZW5k
CiAKQEAgLTIyODQsMTQgKzIzMDksMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJv
bV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAg
ICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MAogICAg
ICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQwKQotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAgICAgICAgcmV0dXJu
KHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRw
IE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9h
ZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAg
IHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQwKQorICAgICAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1cm4odDAp
CiAgICAgZW5kCiAKQEAgLTI1NTEsNyArMjU3Niw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
cHJvZmlsZV9jb250cm9sX2Zsb3csIE9wUHJvZmlsZUNvbnRyb2xGbG93LCBtYWNybyAoc2l6ZSwK
ICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3Rf
bGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
W2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MApAQCAtMjU2Nyw2ICsyNTkxLDE0NyBAQCBsbGludE9w
V2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0YwogZW5kKQogCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0
b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93
KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykK
KyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9p
dGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lk
ZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUz
MikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIs
IG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBk
byB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgor
ICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JP
cGVuR2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAg
bWFjcm8gZ290b0dldEJ5SWRDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQK
KyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX3N5bWJv
bEl0ZXJhdG9yLCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGlu
Z1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3Rh
Y2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5n
VGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworCisgICAgY2Fs
bEhlbHBlcihvcF9pdGVyYXRvcl9vcGVuLCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5f
Y2FsbCwgT3BJdGVyYXRvck9wZW4sIG1faXRlcmF0b3JQcm9maWxlLCBtX2l0ZXJhdG9yLCBwcmVw
YXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9HZXRCeUlkQ2hlY2twb2ludCwgbWV0YWRhdGEs
IGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5j
bHVkaW5nVGhpc0NvdW50KQorCisuZ2V0QnlJZFN0YXJ0OgorICAgIG1hY3JvIHN0b3JlTmV4dEFu
ZERpc3BhdGNoKHZhbHVlKQorICAgICAgICBtb3ZlIHZhbHVlLCB0MgorICAgICAgICBnZXQobV9u
ZXh0LCB0MSkKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0
Y2goKQorICAgIGVuZAorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9pdGVyYXRvciwgdDMpCisg
ICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93
CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRh
LCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBt
ZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0
TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Bl
bl9nZXRfbmV4dCkKKyAgICBkaXNwYXRjaCgpCisKK2VuZCkKKworbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX25leHQs
IHQwKQorICAgIGJ0cW56IHQwLCB0MCwgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBtZXRhZGF0
YShhMiwgdDUpCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChf
aXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdp
ZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRl
MTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0
aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0
TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBl
bmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJs
eSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRl
cmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgp
CisKKy5pdGVyYXRvck5leHRHZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2lu
dCgpCisgICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRD
YWxsZWUoZHN0KQorICAgICAgICBnZXQobV9uZXh0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNy
byBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwg
T3BJdGVyYXRvck5leHQsIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3Jv
IGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QK
KyAgICBlbmQKKworICAgICMgVXNlIG1fdmFsdWUgc2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUg
Z29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9u
ZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQs
IG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6
ZSwgZ290b0dldERvbmVDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVu
dEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5n
ZXREb25lU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFs
dWUpCisgICAgICAgICMgdXNlIHQwIGJlY2F1c2UgcGVyZm9ybUdldEJ5SURIZWxwZXIgdXN1YWxs
eSBwdXRzIHRoZSBkb25lVmFsdWUgdGhlcmUgYW5kIG9mZmxpbmVhc20gd2lsbCBlbGlkZSB0aGUg
c2VsZiBtb3ZlLgorICAgICAgICBtb3ZlIGRvbmVWYWx1ZSwgdDAKKyAgICAgICAgZ2V0KG1fZG9u
ZSwgdDEpCisgICAgICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgICAgIGptcCAuZ2V0
VmFsdWVTdGFydAorICAgIGVuZAorCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0
MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5nZXREb25lU2xvdworICAgIHBlcmZvcm1H
ZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVBy
b2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0
VmFsdWUpCisKKy5nZXREb25lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQorICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90
aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1f
ZG9uZSwgdDApCisKKyAgICAjIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUgZG9u
ZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0OgorICAgICMgQnJhbmNoIHRvIHNsb3cgaWYg
bm90IG1pc2MgcHJpbWl0aXZlLgorICAgIGJ0cW56IHQwLCB+MHhmLCAuZ2V0VmFsdWVTbG93Cisg
ICAgYnRpeiB0MCwgMHgxLCAubm90RG9uZQorICAgIGRpc3BhdGNoKCkKKworLm5vdERvbmU6Cisg
ICAgbWFjcm8gc3RvcmVWYWx1ZUFuZERpc3BhdGNoKHYpCisgICAgICAgIG1vdmUgdiwgdDIKKyAg
ICAgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQor
ICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MCwgMHhiYWRkYjAxZSkKKyAgICAg
ICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRt
cCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4KKyAgICBs
b2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hl
Y2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhh
dmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0
ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1
ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1
ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9n
ZXRfdmFsdWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCisKIGxsaW50T3BXaXRoUHJvZmlsZShv
cF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2Jhc2UsIHQxKQog
ICAgIGdldHUoc2l6ZSwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgppbmRleCA4ZDc2NzExNmMw
NTRlNWVhNjY0ZWY0MDYyYzU2ZjI2MDVlMGQ4YjQ1Li41ODlhZTBlMGYzZWQzNGI2NjFlODU2MmJj
YTI5ODAyZWMxMGU1YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS90cmFuc2Zvcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
dHJhbnNmb3JtLnJiCkBAIC02MjksNyArNjI5LDcgQEAgZW5kCiAKIGNsYXNzIE5vZGUKICAgICBk
ZWYgdmFsaWRhdGUKLSAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgI3tkdW1wfSBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IgorICAgICAgICByYWlzZSAiVW5yZXNvbHZlZCAnI3tkdW1wfScgYXQgI3tj
b2RlT3JpZ2luU3RyaW5nfSIKICAgICBlbmQKICAgICAKICAgICBkZWYgdmFsaWRhdGVDaGlsZHJl
bgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKaW5kZXggYjhkZTk2NTU4MmY3ZDkxMjcxMzM3ZDU0MzE5MDNlODMxOGMyNmY0Ny4uZGQ1ZTkw
YzQyYzgyZGJmMDY3MWQ1ODMyZTFjM2M2ZDEwOTZiZjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5j
bHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE1Myw4ICsxNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAjZGVmaW5lIFJFVFVSTl9QUk9GSUxFRCh2YWx1ZV9fKSBcCiAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HKHZhbHVlX18sIFBST0ZJTEVfVkFMVUUocmV0dXJuVmFsdWVfXykpCiAKLSNkZWZpbmUg
UFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8geyBcCi0gICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7
IFwKKyNkZWZpbmUgUFJPRklMRV9WQUxVRSh2YWx1ZV9fKSBcCisgICAgUFJPRklMRV9WQUxVRV9J
Tih2YWx1ZV9fLCBtX3Byb2ZpbGUpCisKKyNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwg
cHJvZmlsZU5hbWUpIGRvIHsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
LnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKICAg
ICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVy
Zmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
KQpAQCAtOTY1LDYgKzk2OSwxMzAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lk
KQogICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkp
KSk7CiB9CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CitTbG93UGF0aFJldHVyblR5cGUg
U0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgLy8gRG9uJ3Qg
c2V0IFBDOyB3ZSBjYW4ndCB0aHJvdyBhbmQgaXQncyByZWxhdGl2ZWx5IHNsb3cuCisgICAgQkVH
SU5fTk9fU0VUX1BDKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxP
cEl0ZXJhdG9yT3Blbiwgd2lkdGg+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnBy
ZXRfY2FzdDxPcEl0ZXJhdG9yT3Blbjo6TWV0YWRhdGEqPihtZXRhZGF0YVB0cik7CisgICAgSlNW
YWx1ZSBpdGVyYWJsZSA9IEdFVF9DKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKTsKKyAg
ICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhYmxlLCBtX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgSlNW
YWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpLmpz
VmFsdWUoKTsKKyAgICBhdXRvJiBpdGVyYXRvciA9IEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKTsK
KworICAgIGF1dG8gcHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7CisgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCku
aXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YzsKKworICAgICAgICAvLyBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQg
dGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgdmFsaWQuCisgICAgICAgIEpTRnVuY3Rpb24qIHN5bWJv
bEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9s
SXRlcmF0b3IpOworICAgICAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsgCisKKyAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBhbGxvY2F0ZSB0aGUgdmFsdWVzIGZ1bmN0aW9uIGp1c3QgdG8gY2hlY2sgaWYg
aXQncyB0aGUgc2FtZSBhcyBvdXIgZnVuY3Rpb24gYXQgc28gd2UgdXNlIHRoZSBjb25jdXJyZW50
IGFjY2Vzc29yLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIGZvciBhcnJheXMg
ZnJvbSB0aGUgc2FtZSBnbG9iYWwgb2JqZWN0IGFzIG91cnNlbHZlcyBidXQgd2Ugc2hvdWxkIGJl
IGFibGUgdG8gc3VwcG9ydCBhbnkgcGFpcmluZy4KKyAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29uY3VycmVudGx5KCkgIT0gc3ltYm9sSXRlcmF0b3JG
dW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisg
ICAgICAgIC8vIFdlIHNob3VsZCBiZSBnb29kIHRvIGdvLgorICAgICAgICBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEu
c2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgICAgICBHRVQoYnl0ZWNv
ZGUubV9uZXh0KSA9IEpTVmFsdWUoKTsKKyAgICAgICAgYXV0byogaXRlcmF0ZWRPYmplY3QgPSBq
c0Nhc3Q8SlNPYmplY3QqPihpdGVyYWJsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGl0ZXJh
dG9yID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVy
YXRvclN0cnVjdHVyZSgpLCBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsK
KyAgICAgICAgfQorICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwg
bV9pdGVyYXRvclByb2ZpbGUpOworICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5OworICAgIH07CisKKyAgICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7
CisgICAgICAgIGlmIChwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9u
TW9kZTo6RmFzdEFycmF5KQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgfQor
CisgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgor
ICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9p
dGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAg
IHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jf
b3Blbl90cnlfZmFzdDxOYXJyb3c+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwor
U2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUx
NihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRh
ZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMTY+KGNh
bGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1df
UEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4g
aXRlcmF0b3Jfb3Blbl90cnlfZmFzdDxXaWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRy
KTsKK30KKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRoUmV0dXJuVHlwZSBT
TE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICBCRUdJTigpOwor
CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck5leHQsIHdp
ZHRoPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRv
ck5leHQ6Ok1ldGFkYXRhKj4obWV0YWRhdGFQdHIpOworCisgICAgQVNTRVJUKCFHRVQoYnl0ZWNv
ZGUubV9uZXh0KS5qc1ZhbHVlKCkpOworICAgIEpTT2JqZWN0KiBpdGVyYXRvciA9IGpzQ2FzdDxK
U09iamVjdCo+KEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCkpOzsKKyAgICBKU0Nl
bGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwo
KTsKKyAgICBpZiAoYXV0byBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRl
cmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7CisgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5h
bWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgbWV0YWRhdGEu
bV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgp
KTsKKworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMg
PSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6
OkZhc3RBcnJheTsKKyAgICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3It
PmludGVybmFsRmllbGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOworICAgICAgICAg
ICAgaW50NjRfdCBpbmRleCA9IGluZGV4U2xvdC5nZXQoKS5hc0FueUludCgpOworICAgICAgICAg
ICAgQVNTRVJUKDAgPD0gaW5kZXggJiYgaW5kZXggPD0gbWF4U2FmZUludGVnZXIoKSk7CisKKyAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgICAgICBib29sIGRvbmUgPSBpbmRleCA9
PSAtMSB8fCBpbmRleCA+PSBhcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBHRVQoYnl0ZWNv
ZGUubV9kb25lKSA9IGpzQm9vbGVhbihkb25lKTsKKyAgICAgICAgICAgIGlmICghZG9uZSkgewor
ICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Ug
a25vdyB0aGlzIGlzIGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAgICAg
IEFTU0VSVChpbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGFycmF5LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmRleCkpOworICAgICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwor
ICAgICAgICAgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIG1fdmFsdWVQcm9maWxlKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSBi
YXJyaWVyIGhlcmUgYmVjYXVzZSB3ZSBrbm93IHRoaXMgaXMgYSBwcmltaXRpdmUuCisgICAgICAg
ICAgICAgICAgaW5kZXhTbG90LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoLTEpKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fdmFsdWUpID0gdmFs
dWU7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0
PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gUmV0dXJuIHRvIHRoZSBi
eXRlY29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgorICAgIG1ldGFkYXRhLm1faXRlcmF0aW9u
TWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9k
ZXMgfCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKK30KKwor
U2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJv
dyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRh
ZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxOYXJyb3c+KGNh
bGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1df
UEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4g
aXRlcmF0b3JfbmV4dF90cnlfZmFzdDxXaWRlMTY+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRy
KTsKK30KKworU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2
b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3JfbmV4dF90cnlfZmFzdDxX
aWRlMzI+KGNhbGxGcmFtZSwgcGMsIG1ldGFkYXRhUHRyKTsKK30KKwogU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4
ZGI1ZjU1OGZhNzg1MDRjYWIwOTY0M2M2MS4uN2FiMDhhMmZhZDY5YTRiMGQ0NTkyMzc3OTM3NWRj
ZDhiMmVlMGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKQEAgLTI0Niw2ICsyNDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2lzX29iamVjdF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfaXNfZnVuY3Rpb24pOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9p
ZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CisvLyBTTE9X
X1BBVEhfSElEREVOX0RFQ0woaXRlcmF0b3Jfb3Blbl90cnlfZmFzdCk7CisvLyBTTE9XX1BBVEhf
SElEREVOX0RFQ0woaXRlcmF0b3JfbmV4dF90cnlfZmFzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9zdHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUp
OwpAQCAtMjgzLDYgKzI4NSwxOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19hcnJheV93aXRoX3NwcmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19hcnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQp
OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBl
IFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxG
cmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lk
ZTMyKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOwor
Cit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
U0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFt
ZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMy
KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1
c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDJlMWI1ZjI5
NmUzMzIwM2U5ODRmZTk2N2E3ODExMThiMGQ2OTYxYzkuLmU0ZTU3N2ZmYTUyZDc2NTI5OWEzMzY2
Zjk0ZDFhNmJiNGFiNGI4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmNwcApAQCAtMzQwLDYgKzM0MCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1l
KEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFs
PEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRy
aW5zaWMpCit7CisgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVz
SW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNp
YzoKKyAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRl
cmF0aW9uS2luZDo6S2V5czsKKyAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBj
YXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9u
S2luZDo6RW50cmllczsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDMzZWNhYmM4MWZj
ODE4NDBiNGRmN2E2OTY2MmRiMTNmNTY2MmNiOWQuLjExOWMwNGZiNDJmM2YwY2UzMjk5OTA2ZDI3
YmY0YmNlYTkwNzllM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCkBAIC0xOTIsNiArMTkyLDggQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBE
YXRhVmlld1NldEZsb2F0NjQsCiB9OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0
aW9uS2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNO
YW1lKEludHJpbnNpYyk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCBhZmQ5ZWIyZTVkNjZiODUz
YTBjNzcwNDJhY2FlNDk5ZDA2NzNmMThmLi5iY2ZkMzFiM2Q2Y2YzYTA5MjRjZGUzN2VkYjFkNDU4
OGE0ZTM4ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuaApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVy
YXRlZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmll
bGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5
SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVj
dCwgSlNWYWx1ZSBraW5kKTsKKyAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVy
YXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1
cmUsIGl0ZXJhdGVkT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkp
KTsKKyAgICB9CiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxW
YWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBk
MTg1NGZhNjBjOWY0ODFlZC4uZDMwMmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1
LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBi
b29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxs
VHlwZSYsIENhbGxEYXRhJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29u
c3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVj
dERhdGEmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFk
ODBhZjcuLjYyZjlkMjRmMTVkMDcyNDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAt
ODI3LDYgKzgyNywxMyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkg
Y29uc3QKICAgICByZXR1cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1
bnVzZWRUeXBlOworICAgIENhbGxEYXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFi
bGUodm0sIHVudXNlZFR5cGUsIHVudXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc0NhbGxhYmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERh
dGEpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXN0LmgKaW5kZXggZThiMjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzEx
Yi4uYjI1MDM1NjljODQyMjU2MDExNDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8g
anNDYXN0KEpTVmFsdWUgZnJvbSkKIC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmlu
ZSBGT1JfRUFDSF9KU19EWU5BTUlDX0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAg
IG1hY3JvKEpTSW1tdXRhYmxlQnV0dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5
VHlwZSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0Fy
cmF5SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5
SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0
cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1h
Y3JvKEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFj
cm8oSlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxP
YmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlw
ZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24s
IEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5
cGUpIFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJp
dmVkQXJyYXlUeXBlKSBcCisgICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJy
YXlJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3Jv
KEpTQXJyYXlCdWZmZXIsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVm
ZmVyVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlU
eXBlLCBMYXN0VHlwZWRBcnJheVR5cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6
SlNQcm9taXNlVHlwZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwZTE4OTYwZTQ4MWEzMjRh
ZGMyNTY4ZWZkYmIyNGNlYWYxNGEwZjM3Li5mOTUzZjc3OGIzMTliYzIxNjJmMjgwZDY4MDY0ZTgy
ZTUwNGZkMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTYxNSw2ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiogdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9U
b1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5j
dGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7
IH0KKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb25Db25jdXJyZW50bHko
KSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXRDb25jdXJyZW50
bHkoKTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpT
RnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1
bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYzI4YmZjMzRiZmU4MGY3NjM0YTQwZTFmMzhkMDI5N2I2
YTcwZDcxZS4uYmRmYmY0YzdlMWM5OTgxOTg4OWE4N2EwODRhZjUxNzFlNzFkODU0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC0xMTksNiArMTE5
LDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxz
ZTsKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAwMCwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRhaWxEZWxldGVkRnJh
bWVzU2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCisgICAgdihCb29sLCB1c2VJ
dGVyYXRpb25JbnRyaW5zaWNzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICBcCiAgICAg
dihCb29sLCB1c2VPU0xvZywgZmFsc2UsIE5vcm1hbCwgIkxvZyBkYXRhTG9nKClzIHRvIG9zX2xv
ZyBpbnN0ZWFkIG9mIHN0ZGVyciIpIFwKICAgICAvKiBkdW1wRGlzYXNzZW1ibHkgaW1wbGllcyBk
dW1wREZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KEJvb2wsIGR1bXBEaXNhc3NlbWJseSwgZmFs
c2UsIE5vcm1hbCwgImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFsbCBKSVQgY29tcGlsZWQgY29kZSB1
cG9uIGNvbXBpbGF0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKaW5kZXggNzY0YWQwNjVhYzAxMWUzM2MzMjM4Y2Q5ZGE5NTM5YzE1ODM5MjNlNS4u
OWMyY2U3YWZhZTZlMzhlN2E2MDgwMjZmNTE3NzExMGUzYzg1NTYyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjY4LDYgKzEyNjgsOCBAQCB2
b2lkIFN0cnVjdHVyZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4
dCogY29udGV4dCkgY29uc3QKIHZvaWQgU3RydWN0dXJlOjpkdW1wQnJpZWYoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKSBjb25zdAogewogICAgIG91dC5wcmludCgiJSIs
IHN0cmluZywgIjoiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBpZiAoaW5kZXhpbmdU
eXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykKKyAgICAgICAgb3V0LnByaW50KCIsIiwgSW5kZXhp
bmdUeXBlRHVtcChpbmRleGluZ1R5cGUoKSkpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6ZHVtcENv
bnRleHRIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NP
cGVyYXRvck92ZXJsb2Fkcy5oCmluZGV4IDM1N2JhMmZhMmY3OTI5YTZhOTk4YTlhNGVmMTRkMmJl
NTc1NDYzNzEuLjU2YWJjNGI1M2VjOWZhYjYwNzViZjZkMmViYmJlZDFmMzNjZGY5ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKKysrIGIv
U291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaApAQCAtNTksMyArNTks
OSBAQAogCiAjZGVmaW5lIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NM
QVNTX1dJVEhfSU5URUdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9SRUxBVElPTkFMX09QRVJBVE9S
U19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCiAK
KyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihl
bnVtTmFtZSwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9F
TlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHwsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVS
TE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCAmLCBlbmFibGVFeHBy
ZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVt
TmFtZSwgXiwgZW5hYmxlRXhwcmVzc2lvbikgXAorCisjZGVmaW5lIE9WRVJMT0FEX0JJVFdJU0Vf
T1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhlbnVtTmFtZSkgT1ZFUkxP
QURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgc3RkOjpp
c19pbnRlZ3JhbF92PFQ+KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCA1NDJjYmViZDljYWY4MjQ5MWM0OWMxNTNmZTQyNmExMzg5ODQzMWVj
Li43ZWEyNThmNGVkY2Q5ZWE3OWFkOWQwMDczYzY2ZmM3YTM3ODYzNjNlIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBA
QAorMjAyMC0wNC0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWRlc2lnbiBob3cgd2UgZG8gZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanM6CisgICAgICAgIChmb28p
OgorICAgICAgICAqIHN0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzOgorICAgICAgICAoY2F0Y2gp
OgorICAgICAgICAoaXRlci5yZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJv
clRlc3QpOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4pOgorICAg
ICAgICAoaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4pOgorICAgICAgICAqIHN0cmVz
cy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWdsb2JhbHMuanM6IEFkZGVkLgorICAgICAgICAoZm9v
KToKKyAgICAgICAgKGFycmF5LlN5bWJvbC5pdGVyYXRvci5fX3Byb3RvX18ubmV4dCk6CisgICAg
ICAgICogc3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanM6IEFkZGVkLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1v
bi1tYXAuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6CisgICAgICAgIChpLmxldC52Lm9mLmZp
bmQpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoc2V0IGFkZCk6CisgICAgICAg
ICogc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qczogQWRkZWQuCisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5uZXh0LnJldHVybi5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9vc3It
ZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLm5leHQucmV0dXJuLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0
KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChp
LmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mb3Itb2YtbmV4
dC1yZXR1cm5zLW5vbi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
bmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAq
IHN0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6IEFkZGVk
LgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJs
ZS5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAg
ICAgICAqIHN0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQu
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
LlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAg
ICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVy
LWluLWZvci1vZi1oZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4
dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQgdmFsdWUpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVy
bik6CisgICAgICAgIChpLmNhdGNoKToKKworMjAyMC0wNC0xNSAgS2VpdGggTWlsbGVyICA8a2Vp
dGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWRlc2lnbiBob3cgd2UgZG8gZm9yLW9m
IGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5LWVu
dHJpZXMuanM6CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9jdXN0b20taXRlcmF0
b3JzLmpzOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoaXRlci5yZXR1cm4pOgorICAgICAg
ICAoaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3QpOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZh
Y2VFcnJvclRlc3RSZXR1cm4pOgorICAgICAgICAoaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RS
ZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFp
bmluZy1mb3Itb2Ytb24tbWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpbmQpOgorICAgICAgICAo
aS5sZXQudi5vZi5maW5kKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmct
Zm9yLW9mLW9uLXNldC5qczogQWRkZWQuCisgICAgICAgIChmaW5kKToKKyAgICAgICAgKHNldCBh
ZGQpOgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIuanM6IEFk
ZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IGRvbmUpOgorICAg
ICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1i
b2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAg
KiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qczogQWRkZWQuCisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5uZXh0LnJldHVybi5nZXQgdmFsdWUpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3Ip
OgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3MvdGhy
b3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGku
bGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJh
dG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNo
KToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVh
ZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAo
aS5sZXQuaXRlcmFibGUuZ2V0IGRvbmUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9s
Lml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChp
LmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFk
ZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChp
LmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
cmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mcm9t
LXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuZ2V0IHZhbHVlKToKKyAg
ICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisKIDIwMjAtMDQtMTYgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQg
SlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9yIHdpdGggSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJy
YXktZW50cmllcy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFy
cmF5LWVudHJpZXMuanMKaW5kZXggNTVlY2MwYmZjZjkxOWNhY2FlN2ZkMTVkZGI0MGIxNGZkY2E5
NGVkYS4uMjAxMmI5MTI4NTBmNTgxMTY3ZmJkMzEwNTA1OWI3NmQ3NjYzYjZkOCAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5q
cworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRy
aWVzLmpzCkBAIC0zLDEwICszLDEyIEBAIGZ1bmN0aW9uIGZvbygpIHsKICAgICB2YXIgYXJyYXkg
PSBbXTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1MDAwOyBpKyspCiAgICAgICAgIGFycmF5
LnB1c2goaSk7Ci0gICAgCisKICAgICB2YXIgcmVzdWx0ID0gMDsKLSAgICBmb3IgKHZhciBba2V5
LCB2YWx1ZV0gb2YgYXJyYXkuZW50cmllcygpKQorICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBv
ZiBhcnJheS5lbnRyaWVzKCkpIHsKKyAgICAgICAgcHJpbnQoa2V5ICsgIiAiICsgJHZtLmluZGV4
aW5nTW9kZShhcnJheSkpOwogICAgICAgICByZXN1bHQgKz0ga2V5ICsgdmFsdWUgKyBhcnJheVtr
ZXldOworICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcyBiL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1p
dGVyYXRvcnMuanMKaW5kZXggZmQ2NDEzZmUzYjVlOTAzYWZmZTM4MDNmZDAwNGMwY2IxZjFjNjRm
My4uZDNkMWJkN2U4NThlODc0ZmJkMTEzZDgyZjkyMTFlYTRiZDVlZjdiNSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9j
dXN0b20taXRlcmF0b3JzLmpzCkBAIC0yMiw3ICsyMiw3IEBAIGZvciAodmFyIHZhbHVlIG9mIGl0
ZXIpIHsKICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKIH0KIGlm
IChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7Cisg
ICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtNTMsNyAr
NTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9
PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJu
Q2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTEw
OCwxMCArMTA4LDEwIEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJp
bmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1cCBuZXh0LiIpCi0gICAgICAgIHRocm93ICJFcnJv
cjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAocmV0
dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRo
cm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAgLTEzNiw3ICsxMzYs
NyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAi
RXJyb3I6IGxvb2tpbmcgdXAgcmV0dXJuLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVy
cm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiAKIApAQCAtMTY1LDEwICsx
NjUsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYgKFN0cmluZyhlKSAh
PT0gIkVycm9yOiBuZXh0IGlzIGNhbGxlZC4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBl
cnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKHJldHVybkNhbGxl
ZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICB0aHJvdyBuZXcg
RXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC0xODMsNyArMTgzLDcgQEAgdmFy
IGl0ZXIgPSB7CiAgICAgfSwKICAgICByZXR1cm46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgcmV0
dXJuQ2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVk
LiI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKICAgICB9
CiB9OwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAg
ICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0gICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93
IGU7CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBu
b3QgY2FsbGVkLiI7CkBAIC0yMTAsNyArMjEwLDcgQEAgdmFyIGl0ZXIgPSB7CiAgICAgfSwKICAg
ICByZXR1cm46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKLSAg
ICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRocm93IG5l
dyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKICAgICB9CiB9OwogdHJ5IHsKQEAgLTIxOCw4
ICsyMTgsOCBAQCB0cnkgewogICAgICAgICBicmVhazsKICAgICB9CiB9IGNhdGNoIChlKSB7Ci0g
ICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiIpCi0gICAgICAg
IHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgaWYgKFN0cmluZyhl
KSAhPT0gIkVycm9yOiByZXR1cm4gd2FzIGNhbGxlZCIpCisgICAgICAgIHRocm93IGU7CiB9CiBp
ZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVk
LiI7CkBAIC0yNTUsMTAgKzI1NSwxMCBAQCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUVycm9y
VGVzdChub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewog
ICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50
ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFk
IGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBp
ZiAocmV0dXJuQ2FsbGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQu
IjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogfQogCiBm
dW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJldHVybihub3RJdGVyYXRvclJlc3Vs
dCkgewpAQCAtMjgyLDcgKzI4Miw3IEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JU
ZXN0UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChl
KSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0ZXJhdGlv
bi4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsK
KyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAgIGlmICghcmV0dXJuQ2FsbGVkKQogICAg
ICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3QgY2FsbGVkLiI7CkBAIC0zMTMsNyArMzEz
LDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VCcmVha1Rlc3RSZXR1cm4obm90SXRlcmF0
b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0
cmluZyhlKSAhPT0gIlR5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246
ICIgKyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5DYWxs
ZWQpCiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcyBi
L0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZDc3Y2Y4OGFiNjAyY2U0ZDM4N2I3MWRjY2ZiZjFkYWYyMGY4ZTJlCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpz
CkBAIC0wLDAgKzEsMjIgQEAKK2xldCBjb3VudCA9IDA7CisKK2Z1bmN0aW9uIGZvbyhhcnJheSkg
eworICAgIGZvciAobGV0IHYgb2YgYXJyYXkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOwor
fQorbm9JbmxpbmUoZm9vKTsKKworbGV0IG90aGVyR2xvYmFsID0gY3JlYXRlR2xvYmFsT2JqZWN0
KCk7CitsZXQgYXJyYXkgPSBvdGhlckdsb2JhbC5BcnJheSgpOworYXJyYXlbU3ltYm9sLml0ZXJh
dG9yXSgpLl9fcHJvdG9fXy5uZXh0ID0gZnVuY3Rpb24gKCkgeworICAgIGNvdW50Kys7CisgICAg
cmV0dXJuIHsgZG9uZTogdHJ1ZSB9OworfQorYXJyYXlbMF0gPSAxOworCitjb25zdCBpdGVyQ291
bnQgPSAxZTU7Citmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJDb3VudDsgKytpKQorICAgIGZvbyhh
cnJheSk7CisKK2lmIChpdGVyQ291bnQgIT09IGNvdW50KQorICAgIHRocm93IG5ldyBFcnJvcigp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjQ5OGE2MDQzM2RmMmRjMTc1M2E5ZDdiODhiOTZiZDMyNDAwNmY4MQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12YWx1ZXMuanMKQEAgLTAs
MCArMSwyMyBAQAorZnVuY3Rpb24gdGVzdChhcnJheSkgeworICAgIGxldCBzdW0gPSAwOworICAg
IGZvciAobGV0IHYgb2YgYXJyYXkpIHsKKyAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAibnVtYmVy
IikKKyAgICAgICAgICAgIHN1bSArPSB2OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1
cm4gc3VtOworICAgIH0KK30KK25vSW5saW5lKHRlc3QpOworCitsZXQgYXJyYXkgPSBbMSwyLDMs
NCwic3RyaW5nIl07Citmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgaWYgKHRl
c3QoYXJyYXkpICE9PSAxMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CisKKworYXJy
YXkgPSBbMSwyLDMsNCx7fV0KK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBp
ZiAodGVzdChhcnJheSkgIT09IDEwKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1t
YXAuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tbWFw
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUzOGI3ZWU4MTQyNGEyZDJmNTM4Y2U3YjIwNTlkOGQ2ZTQ1OGU0YmEK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1m
b3Itb2Ytb24tbWFwLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBw
KQoreworICAgIGZvciAobGV0IFthcnJheV0gb2Ygbm9kZXMpIHsKKyAgICAgICAgaWYgKCFhcnJh
eS5maW5kKCh2KSA9PiB2ID09PSBwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB5
aWVsZCBhcnJheTsKKyAgICB9Cit9Citub0lubGluZShmaW5kKTsKKworbGV0IG1hcCA9IG5ldyBN
YXAoKTsKK25vSW5saW5lKG1hcFtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCk7Citmb3IgKGxldCBp
ID0gMDsgaSA8IDFlMjsgKytpKQorICAgIG1hcC5zZXQoWzEsMiw0LDUsNV0sIHt9KTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGZvciAobGV0IHYgb2YgZmluZChtYXAs
IGkgJSAyKSkgeyB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29u
dGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRh
aW5pbmctZm9yLW9mLW9uLXNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmYzMjczOTBkNzM3NWEyMjAyYWU1
OWExMTI0NjU2OThjYjZlYWI2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLXNldC5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5j
dGlvbiAqZmluZChub2RlcywgcCkKK3sKKyAgICBmb3IgKGxldCBhcnJheSBvZiBub2Rlcykgewor
ICAgICAgICBpZiAoIWFycmF5LmZpbmQoKHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIHlpZWxkIGFycmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOwor
CitsZXQgc2V0ID0gbmV3IFNldCgpOworbm9JbmxpbmUoc2V0W1N5bWJvbC5pdGVyYXRvcl0oKS5u
ZXh0KTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpCisgICAgc2V0LmFkZChbMSwyLDQs
NSw1XSwge30pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChs
ZXQgdiBvZiBmaW5kKHNldCwgaSAlIDIpKSB7CisgICAgICAgIGlmIChpICUgMiAhPT0gMSkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigibm8gcmVzdWx0IHNob3VsZCBoYXZlIGJlZW4gcHJv
ZHVjZWQgaGVyZSIpOworICAgICAgICBpZiAoISh2IGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXN1bHQgd2FzIG5vdCBhbiBhcnJheSIpOworICAgIH0K
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRl
ci5qcyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYjRjNDljOTNiMjlmY2IwZjcxMGM2YzgyZDFmZDg4MDAxYTIyZTI1Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpz
CkBAIC0wLDAgKzEsMjMgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBs
ZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBu
ZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBnZXQgZG9uZSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmluYWxUaWVyKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JjZU9TUigpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAg
W1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7
IHJldHVybkNhbGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3Ig
KF8gb2YgaXRlcmFibGUpIHsgfQorICAgIH0gY2F0Y2ggeworICAgIH0KKyAgICBpZiAocmV0dXJu
Q2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVz
cy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MDk2ZWUwM2Ux
NTI1NzNhZWRjNjRkMDQzOWZiMmJmMjJjNjQxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzCkBAIC0wLDAgKzEsMjEgQEAK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0g
ZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBkb25lOiAwLAorICAgICAgICBu
ZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBkb25lOiB0aGlz
LmRvbmUrKywKKyAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7IGlmIChpc0ZpbmFsVGllcigp
KSBGb3JjZU9TUigpOyAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIFtT
eW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeyBy
ZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChf
IG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIHsKKyAgICB9CisgICAgaWYgKHJldHVybkNh
bGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanMgYi9KU1Rlc3Rz
L3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjJiZDMyYWRkN2NjM2JhMzQzMjU0ZGE3MTA4ZTUxOWZmNzViMzI1MQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVj
dC5qcwpAQCAtMCwwICsxLDE2IEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7Cisg
ICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAg
ICAgbmV4dCgpIHsgcmV0dXJuIDE7IH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyBy
ZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9
LAorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKQorICAgICAgICAgICAgdGhyb3cgZTsK
KyAgICB9CisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWlu
LWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVy
LWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhhMTQyYzhhNmM1NGY0NzZlYzAzOWEx
NGU5ZTJkM2U3Yjk2ZGYxYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93
LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI0IEBACitm
b3IgKGxldCBpID0gMDsgaSA8PSAxZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQg
cmV0dXJuQ2FsbGVkOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0
dXJuIHRoaXM7IH0sCisgICAgICAgIGdldCBkb25lKCkgeworICAgICAgICAgICAgdGhyb3cgZXJy
b3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0o
KSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1
cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBm
b3IgKGEgb2YgaXRlcmFibGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93
IGU7CisgICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4t
Zm9yLW9mLWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3It
b2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMTk0ZmQ3Y2E1YWM1OWFkNjk2MTk0MmY4NjI3YjYw
YTVhYTMwMTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLW5l
eHQtaW4tZm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI0IEBACitmb3IgKGxldCBpID0gMDsg
aSA8PSAxZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkOwor
ICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHRocm93
IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0
b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAg
cmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgbm9JbmxpbmUoaXRl
cmFibGUubmV4dCk7CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVyb3JyKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBp
ZiAoZSAhPT0gZXJyb3IpCisgICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChy
ZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5q
cyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFk
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTA4Nzg4MzU4ZTRlZDMwNjEyYWNjNmYyZWYzYTMwZDhkNTY2Njc5
ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0
dGVyLWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNyBAQAorZm9yIChsZXQgaSA9IDA7
IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxlZCA9
IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgbmV4dCgpIHsgcmV0dXJuIHRo
aXM7IH0sCisgICAgICAgIGRvbmU6IGZhbHNlLAorICAgICAgICBnZXQgdmFsdWUoKSB7CisgICAg
ICAgICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBb
U3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsK
KyAgICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAg
IHRyeSB7CisgICAgICAgIGZvciAoYSBvZiBpdGVyYWJsZSkgeworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAg
ICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396692</attachid>
            <date>2020-04-16 13:11:22 -0700</date>
            <delta_ts>2020-04-16 18:04:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175454-20200416131121.patch</filename>
            <type>text/plain</type>
            <size>252980</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDI5MTBmMjUzY2UyYzRkYjQwNzUwZWJiZjFkYTIyYjZmNGY2YmM3Li5jNWY5ZTU1MDNiOGVjZWRi
MzM5ZTlkMzI4NDk0ODE2MGY2NmEyMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMjAtMDQtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hl
biB0aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1i
b2wuaXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNv
ZGVzIG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNl
IGJ5dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rp
bmcgYnl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0Fy
cmF5CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNl
IGluc3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJh
dG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBg
aXRlcmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0
O2AsCisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQg
c3ltYm9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxl
LnN5bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2Rl
IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0
LkBjYWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAg
PSBkb25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQg
aXMgYQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhl
IExMSW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAg
ICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVy
Zm9tYW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEg
YW5kIGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlf
aWQgY29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhl
CisgICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRj
aCBhZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQg
dGhlIGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJy
ZW50IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUg
bWVhbmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0
aWxsIHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1v
c3Qgb2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZh
Y3RvcmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhh
dCBhcmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUg
dHJpY2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQg
REZHCisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBE
RkcgZ3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcg
YWxsIHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5n
L1BoYW50b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikg
Um9sbGluZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dp
dGNoaW5nIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwgZWFjaCB2
YXJpYWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpvcjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2Vy
dmVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
Ojp0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
T3BlcmFuZHNGb3JDaGVja3BvaW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjphcnJheVByb2Zp
bGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAg
KEpTQzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1w
bCk6CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZh
bHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0aW9uRm9yKToKKyAgICAgICAg
KEpTQzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNGb3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbCk6Cisg
ICAgICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTElu
dElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAg
IChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNl
SW5zdHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUlu
c3RydWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1
Y3Rpb246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lk
ZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5o
LgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6TExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJ
ZENhY2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc1N1YnR5cGVT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uQ29udGFpbnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJT
Y29wZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVy
YXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWND
bG9zZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVy
YXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVs
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0
aFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
dGVyYXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVl
cyk6CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpE
Rkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmJvdHRv
bVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNaW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9N
SklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURP
TUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5
cGVkQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBo
YXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNh
dGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlm
aWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNpemUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3BlY3Vs
YXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5o
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAg
ICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvTWV0YWRhdGEucmI6
CisgICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENh
bGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0
L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9v
cGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBT
bG93VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWND
YWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQp
OgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAo
SlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJh
dG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90
cnlfZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAo
SlNDOjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAg
ICAgIChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1l
L0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbkNvbmN1cnJlbnRseSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpkdW1wQnJpZWYgY29uc3QpOgorCiAyMDIwLTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3Iv
SlNTZXRJdGVyYXRvciB3aXRoIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDMyMGFi
MGUzMThhMDYxZTYwYjkzNGZmMjExYzE3ZmI4MTY1ZDNmNi4uYTlkZWYyNjg5NmQxNWY5OTNhNTkz
YzA4OWU3YjkyZmYzYTYwNzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNC0xNiAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWRlc2lnbiBo
b3cgd2UgZG8gZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0VudW1DbGFzc09wZXJhdG9yT3Zl
cmxvYWRzLmg6CisKIDIwMjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3QgdG8gV0tD
b250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGJhNjIwMTkwMjMyNWZmZDA0MjYwMjI5YWM0Yzc0MDgxZjhlOTRm
YWQuLjk1OTUzZGI0OTMwMjJhYzFlYzQwZTM5ZjEyNDc5NmY4MDU3MTU4NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNTMsNiArMTM1Myw3IEBAIFdFQktJVF9DT1BZ
X0ZJTEVTKEphdmFTY3JpcHRDb3JlX0NvcHlQcml2YXRlSGVhZGVycwogICAgIEZJTEVTICR7SmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSU30KICAgICBGTEFUVEVORUQKICkK
K2FkZF9kZXBlbmRlbmNpZXMoSmF2YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIEJ5dGVj
b2RlcyBKU0NCdWlsdGlucykKICMgSmF2YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIG5l
ZWRzIHRvIGhhdmUgYSBkaXJlY3Qgb3IgaW5kaXJlY3QKICMgZGVwZW5kZW5jeSBvZiBKYXZhU2Ny
aXB0Q29yZSBmb3IgQ01ha2UgVmlzdWFsIFN0dWRpbyBnZW5lcmF0b3IgdG8KICMgZWxpbWluYXRl
IGR1cGxpY2F0ZWQgY3VzdG9tIGNvbW1hbmRzLiBPdGhlcndpc2UsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0YjhlMTgxY2MyOGUu
LjVmNjNhZjMwYTc1MzQ3ZWU2Y2ViZTg5Yjg0YzA3OTg3YzA4ODJlNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTAzLDYgKzExMDMsOCBAQAogCQk1M0M0RjY2QjIxQjFBNDA5
MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUds
b2JhbE9iamVjdC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9w
Y29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNDNkZFRUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCAqLzsgfTsK
IAkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMwODFFQTUzM0Q4MDA3NjA0
OUQgLyogV2FzbUJCUVBsYW4uaCAqLzsgfTsKKwkJNTNEMzU0OTkyNDBEODhCRDAwODk1MEREIC8q
IEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNv
ZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5
ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERC
MURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4
RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyog
SlNWYWx1ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3
NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBA
IC0zODE0LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9w
Y29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNt
T3Bjb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcx
RUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZU9wZXJhbmRz
Rm9yQ2hlY2twb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29k
ZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVVc2VEZWYuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9u
TW9kZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Q0NDREQjFE
QUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzV2FzbUFkZHJlc3NWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQWRk
cmVzc1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NEREMURBRjA5
QTAwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2Fz
bUFkZHJlc3NWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRTFGOEY3
MjE1NDcxNDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1ZhbHVlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODIyMCw4ICs4MjI1LDEwIEBACiAJCQkJQzJGQ0FFMEUxN0E5QzI0RTAwMzRDNzM1IC8q
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgKi8sCiAJCQkJQzJGQ0FFMEYxN0E5QzI0RTAw
MzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oICovLAogCQkJCTBGNjY2RUJFMTgz
NTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCisJ
CQkJNTNEMzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3Bv
aW50LmggKi8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0
ZXIuY3BwICovLAogCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3Jp
dGVyLmggKi8sCisJCQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVm
LmNwcCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYu
aCAqLywKIAkJCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywK
IAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1
LDYgKzgzMjIsNyBAQAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlv
blN0cmVhbS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0
aW9uU3RyZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFs
RnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFF
OTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3
MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4
NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJ
MEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5
OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3Jp
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0
ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyog
Qnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcgQEAKIAkJ
CQkwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJW
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJh
dGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFFOTg0QiAv
KiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFF
NzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
MTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUwNzA4MzNj
YmY1YmE1ZWJlZjBlYzguLjE1Mzk3ZThiN2Y0OGE4NGZiMjdmMTFkMmYxMzcxZTBlMmEzMDFjYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCkBAIC02ODYsNiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUz
MihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVz
dGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIExv
Z2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMyKGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAgICAg
ICAgICBsb2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3Jl
OChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlUZW1wUmVn
aXN0ZXIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAg
ICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAg
IH0KKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG9yNjQoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTE2MDMsNyArMTYx
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFz
ZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChSZWdpc3Rl
cklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywg
Y29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
ZGRyZXNzKSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCAwKTsKQEAg
LTE2MTgsNyArMTYzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMs
IGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0
b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFRy
dXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBUcnVz
dGVkSW1tMzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAgICAgICAg
IGlmICghaW1tOC5tX3ZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggOGM2OTc5YmI5YjJmZGViMDRj
YTAyNmU3NjZkMjA4YjczYTA2M2YyZS4uMmExZGRlZGVlMzZkYmUzY2RlNTcyZjQ4NjA1YTQ2NGM4
MGI2ZTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpvcjE2OworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjg7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bG9hZDMyOwpAQCAtOTYsNiArOTcsMTIgQEAgcHVibGljOgogICAgICAgICBvcjE2KGltbSwg
QWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
ICAgIG9yOChpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKKyAgICB9CisKICAgICB2
b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVn
aXN0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKaW5kZXggZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4YzBlOGRlMjM3YjIwMS4uOTQyNjU3
YzYyZjA3NDljYTA1YzRlZWU0ZDY3Yjk1ZmU2NDU1ZDllNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApAQCAtMjA3LDEwICsyMDcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRPdXRPZkJvdW5kcygpIHsgbV9vdXRPZkJvdW5kcyA9IHRydWU7IH0K
ICAgICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRz
OyB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJl
KQotICAgIHsKLSAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgp
OwotICAgIH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1
cmVJRCkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsgfQorICAgIHZvaWQg
b2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBtX2xhc3RTZWVuU3RydWN0
dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7IH0KIAogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIHZvaWQg
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
bG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMWY1NjY5NGNlNzAwZmRlYmUx
ZmRjYmQwNDRmMmE4N2QwODhmN2VhMi4uZTI4OGE5OTcyMDA4YmM5NTI5N2Y1OGFmMDk1OWQzZmNk
OTQwZGRlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVzIFsKICAgICA6R2V0QnlWYWxIaXN0b3J5LAog
ICAgIDpHZXRQdXRJbmZvLAogICAgIDpJbmRleGluZ1R5cGUsCisgICAgOkl0ZXJhdGlvbk1vZGVN
ZXRhZGF0YSwKICAgICA6SlNDZWxsLAogICAgIDpKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCwK
ICAgICA6SlNHbG9iYWxPYmplY3QsCkBAIC0xMTYyLDYgKzExNjMsNTkgQEAgb3AgOmdldF9yZXN0
X2xlbmd0aCwKICAgICAgICAgbnVtUGFyYW1ldGVyc1RvU2tpcDogdW5zaWduZWQsCiAgICAgfQog
CisjIFNlbWFudGljYWxseSwgdGhpcyBpcyBpdGVyYXRvciA9IHN5bWJvbEl0ZXJhdG9yKGl0ZXJh
YmxlKTsgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7CisjIEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93
ZXZlciwgdGhpcyBoYXMgc3BlY2lhbCBiZWhhdmlvciB3aGVyZSBuZXh0IGJlY29tZXMgdGhlIGVt
cHR5IHZhbHVlLCB3aGljaAorIyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgaW4gYSBrbm93biBpdGVy
YXRpb24gbW9kZSB0byBvcF9pdGVyYXRvcl9uZXh0Lgorb3AgOml0ZXJhdG9yX29wZW4sCisgICAg
YXJnczogeworICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0YWNrT2Zm
c2V0OiB1bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhdGlv
bk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxlUHJvZmls
ZTogVmFsdWVQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZv
LAorICAgICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbW9kZU1l
dGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgc3ltYm9sQ2FsbDog
bmlsLAorICAgICAgICBnZXROZXh0OiBuaWwsCisgICAgfQorCisjIFNlbWFudGljYWxseSwgdGhp
cyBpcyBuZXh0UmVzdWx0ID0gbmV4dC5AY2FsbChpdGVyYXRvcik7IGRvbmUgPSBuZXh0UmVzdWx0
LmRvbmU7IHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IG5leHRSZXN1bHQudmFsdWU7CitvcCA6
aXRlcmF0b3JfbmV4dCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRvbmU6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBp
dGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQs
CisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmls
ZSwKKyAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgbmV4
dFJlc3VsdFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTog
R2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAg
IHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAg
ICBuZXh0UmVzdWx0OiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAg
ICAgY29tcHV0ZU5leHQ6IG5pbCwKKyAgICAgICAgZ2V0RG9uZTogbmlsLAorICAgICAgICBnZXRW
YWx1ZTogbmlsLAorICAgIH0KKwogb3AgOnlpZWxkLAogICAgIGFyZ3M6IHsKICAgICAgICAgZ2Vu
ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xMjkwLDYgKzEzNDQsOCBAQCBvcCA6b3BfZ2V0
X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9u
CiBvcCA6b3BfcHV0X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92YWxfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24KK29wIDpv
cF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9n
dWUKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCmluZGV4IGM2ZWZlMGQ4ZmY2Yzc5ODk2YWZkMDBlMjBjYzQyNzc5ZDNhNGIwYzcuLmQ1ODdl
ZTAzZjI2ZDhkZmI5NGQwOGQ0NDIwNDA4Y2FjNTBhMzhlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCkBAIC0yMzEsNiArMjMxLDEzIEBAIEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1w
TGl2ZW5lc3NGb3JDaGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrCiAgICAgICAg
ICAgICByZXN1bHQuc2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbjog
eworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHQ6IHsKKyAgICAgICAgcmVzdWx0LnNldChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFhY2FjZjNi
ZmVkMTVjNmMxN2NhYTZjYjFlOTU4MTI4ZDVkMmYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5o
CkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKKyNpbmNs
dWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEs
IHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2lu
dEluZGV4KTsKKyAgICByZXR1cm4gJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9m
aWxlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNB
cnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwg
Y2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0
YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFk
YXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKGhhc0FycmF5UHJv
ZmlsZUZvcihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CisgICAgcmV0dXJuICphcnJheVBy
b2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JJ
bXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHBy
IChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAg
ICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9w
ZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAg
ICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0
UHJvZmlsZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorCisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6
b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9p
bnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0
dXJuICZtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0
b3JOZXh0OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQ
cm9maWxlOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIAorICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmls
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK2Jvb2wgaGFzVmFs
dWVQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3Bv
aW50SW5kZXgpCit7CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNo
ZWNrcG9pbnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+
CitWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0
YSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChoYXNWYWx1ZVByb2Zp
bGVGb3IobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJldHVybiAqdmFsdWVQcm9m
aWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQnl0ZWNvZGU+CitPcGVyYW5kIGRlc3RpbmF0aW9uRm9yKGNvbnN0IEJ5dGVjb2RlJiBi
eXRlY29kZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4LCBKSVRUeXBlIHR5cGUgPSBKSVRUeXBl
OjpOb25lKQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNv
bnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAg
ICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Bl
bjo6c3ltYm9sQ2FsbDogcmV0dXJuIGJ5dGVjb2RlLm1faXRlcmF0b3I7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgICAg
IGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2Rl
SUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRl
eCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogeworICAgICAg
ICAgICAgaWYgKHR5cGUgPT0gSklUVHlwZTo6REZHSklUIHx8IHR5cGUgPT0gSklUVHlwZTo6REZH
SklUKQorICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5leHQ6
Om5leHRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fdmFsdWU7IC8vIFdl
IHJldXNlIHZhbHVlIGFzIGEgdGVtcCBiZWNhdXNlIGl0cyBlaXRoZXIgbm90IHVzZWQgaW4gc3Vi
c2VxdWVudCBieXRlY29kZXMgb3Igd3JpdHRlbiBhcyB0aGUgdGVtcCBvYmplY3QgLgorICAgICAg
ICB9CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBieXRlY29k
ZS5tX2RvbmU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4g
Ynl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZQorICAg
ICAgICByZXR1cm4gYnl0ZWNvZGUubV9kc3Q7Cit9CisKKy8vIENhbGwtbGlrZSBvcGNvZGUgbG9j
YXRpb25zCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZUZvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRl
eCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4
cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFT
U0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAg
ICAgICByZXR1cm4gYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcjsKKyAgICB9IGVsc2UgaWYgY29u
c3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAg
ICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7
CisgICAgICAgIHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgfSBlbHNlCisgICAgICAgIHJl
dHVybiBieXRlY29kZS5tX2NhbGxlZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+
Cit1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0Zvcihjb25zdCBCeXRlY29kZSYg
Ynl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
Y2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9
PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0g
T3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVs
c2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkg
eworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21w
dXRlTmV4dCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4g
Ynl0ZWNvZGUubV9hcmdjOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3B0cmRp
ZmZfdCBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChjb25zdCBCeXRlY29kZSYgYnl0ZWNv
ZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2tw
b2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9p
dGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVy
YXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhYmxlLm9mZnNldCgpOworICAgIH0gZWxz
ZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7
CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1
dGVOZXh0KTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
IC0gYnl0ZWNvZGUubV9pdGVyYXRvci5vZmZzZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0
dXJuIGJ5dGVjb2RlLm1fYXJndjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRh
ZGF0YT4KK0xMSW50Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm9Gb3IoQnl0ZWNvZGVNZXRhZGF0
YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oY2hlY2twb2ludEluZGV4KTsKKyAgICByZXR1cm4gbWV0YWRhdGEubV9jYWxsTGlua0luZm87
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBm
Njk3ZjcwZTBkNTYyNmMxMy4uYTVhNTA3ZWQyZTkyZGNlZTNmYzE1MWJkZWIyYTYyNzI3M2MyMjc1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCkBAIC0yNTksNiArMjU5LDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKIAogICAg
IFVTRVMoT3BZaWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKIAorICAgIFVTRVMoT3BJdGVyYXRv
ck9wZW4sIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZSkKKyAgICBVU0VTKE9wSXRlcmF0b3JOZXh0
LCBpdGVyYXRvciwgbmV4dCwgaXRlcmFibGUpCisKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRo
X3NwcmVhZDoKICAgICAgICAgaGFuZGxlTmV3QXJyYXlMaWtlKGluc3RydWN0aW9uLT5hczxPcE5l
d0FycmF5V2l0aFNwcmVhZD4oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw2ICs0ODksOSBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogCiAgICAgREVGUyhPcENhdGNoLCBleGNlcHRpb24s
IHRocm93blZhbHVlKQogCisgICAgREVGUyhPcEl0ZXJhdG9yT3BlbiwgaXRlcmF0b3IsIG5leHQp
CisgICAgREVGUyhPcEl0ZXJhdG9yTmV4dCwgZG9uZSwgdmFsdWUpCisKICAgICBjYXNlIG9wX2Vu
dGVyOiB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVZhcnM7IGktLTspCiAgICAgICAg
ICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDI5ZjYwZTk0Mjgy
MjU5MTk0Nzc2ODU1N2VhODdhNjU3ZjIzYTYwYi4uOTE1Y2M2MzFkYmQyODQ1ZWU5MTM4ZTEzOWVi
NjllOTYzNDE3NTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKQEAgLTQwLDE4ICs0MCwzNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQ2Fs
bExpbmtJbmZvOjpDYWxsVHlwZSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKE9wY29kZUlEIG9w
Y29kZUlEKQogewotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9w
X2NhbGxfZXZhbCkKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKKyAg
ICAgICAgcmV0dXJuIFRhaWxDYWxsVmFyYXJnczsgICAgICAgIAorCisgICAgY2FzZSBvcF9jYWxs
OgorICAgIGNhc2Ugb3BfY2FsbF9ldmFsOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAg
ICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgICAgIHJldHVybiBDYWxsOwotICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoK
ICAgICAgICAgcmV0dXJuIENhbGxWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25z
dHJ1Y3QpCisKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICAgICAgcmV0dXJuIENvbnN0cnVj
dDsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MpCisKKyAgICBjYXNl
IG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ29uc3RydWN0VmFyYXJnczsK
LSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKQorCisgICAgY2FzZSBvcF90YWlsX2Nh
bGw6CiAgICAgICAgIHJldHVybiBUYWlsQ2FsbDsKLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKTsKLSAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOworCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIENhbGw7CiB9CiAKIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4
IGYxM2QxNzM0YTAyYzU4YTMyMTc1OTI1ZDI4ODU1YTJhMjYwMDE4MTguLmI5MGY4MjQ2ZmM2MTEx
Mzc4YWViZWY5MDI1NmYxMTVlZjE3ZTNiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtODEsNiArODEsMTMgQEAgQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgQ29kZUIKICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FsbExp
bmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcFRhaWxDYWxsPigpLm1ldGFkYXRhKHByb2ZpbGVk
QmxvY2spLm1fY2FsbExpbmtJbmZvOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW46CisgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgY2FsbExpbmtJ
bmZvID0gJmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShwcm9maWxl
ZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0OTIwYjZhODc4MTU3
ZTYxNjBiNjUzZTdhNGU3MzA0YjIuLjcyYTA5NGVlNjhlNDc2OGI4MTEyYTEzYTNhMmQyYzdiMzIz
MjYxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtNTgzLDYgKzU4NCwyMCBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxl
Q29udHJvbEZsb3cpCiAKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAg
ICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBt
X251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAg
ICAgICAgSU5JVElBTElaRV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAg
bV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAg
ICAgICAgIElOSVRJQUxJWkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsMTQg
KzEyMzksMjcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQog
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NjQxOAogICAgICAgICAvLyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9y
ZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRp
bWUgc2NvcGUgcmVzb2x1dGlvbi4KIAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0
QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgIGF1dG8g
Y2xlYXJJZk5lZWRlZCA9IFsmXSAoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhLCBB
U0NJSUxpdGVyYWwgb3BOYW1lKSB7CisgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUg
IT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0
cnVjdHVyZUlEID0gbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAg
ICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNs
ZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNo
ZShtZXRhZGF0YSk7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICJDbGVhcmluZyAiLCBvcE5hbWUsICIgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOworICAg
ICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpj
bGVhckxMSW50R2V0QnlJZENhY2hlKG1vZGVNZXRhZGF0YSk7CisgICAgICAgIH07CisKKyAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgeworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwg
Iml0ZXJhdG9yIG9wZW4iX3MpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAg
ICBjbGVhcklmTmVlZGVkKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG5l
eHQiX3MpOworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1l
dGFkYXRhLCAiaXRlcmF0b3IgbmV4dCJfcyk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAg
ICAgICBjbGVhcklmTmVlZGVkKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCAiZ2V0IGJ5IGlkIl9z
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWRE
aXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM1NCwyNyBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xl
YXIgPSBbJl0gKCkgewogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09
IG9wX2dldF9ieV9pZCkgeworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwot
ICAgICAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigp
Lm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rp
b24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0
ZXJhdG9yX29wZW46IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJi
b3NlT1NSKCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4i
KTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4
dDogeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwg
IkNsZWFyaW5nIExMSW50IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNh
Y2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25l
IHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4uCisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAg
ICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7Cisg
ICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMDg3LDExIEBAIFZhbHVlUHJv
ZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVj
b2RlSW5kZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29w
ZW46CisgICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
OworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2Zp
bGVGb3IoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBi
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tJbmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRj
ZTRhYS4uNTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0z
OSwxMiArMzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3Qg
RnVuY3RvciYgZnVuYykKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9f
b3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1f
cHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxV
RV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRh
ZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAg
ICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKwor
ICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1l
dGFkYXRhKSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUs
IGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2Up
OworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICB9KTsKKyAgICB9ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJ
U0lUMQogI3VuZGVmIFZJU0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVy
YXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRh
dGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBh
Y2E2NTJiZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4YzIuLjIyMmViMTk1ZDEzMDYxOTc3MDZhZmQy
NmI0ODFmMzYxMjczNzI5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5U3RhdHVzLmNwcApAQCAtODYsNiArODYsMzYgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0
dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUlu
ZGUKICAgICBjYXNlIG9wX2dldF9ieV92YWw6CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhO
b0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAg
ICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVu
OjpnZXROZXh0KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19s
b2FkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MDM5CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5
SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3Jt
YXRpb24sIGZhbHNlKTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5w
cm9wZXJ0eU5hbWVzLT5uZXh0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlm
IChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkg
eworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdl
dEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhO
b0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
IGlkZW50aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIEFTU0VSVChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWUpOworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fdmFsdWVNb2Rl
TWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgc3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVj
dHVyZUlEOworICAgICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OiB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaAppbmRleCAwODVhZThkMTk5NzZiODg2ZjAwMTlmODVmYTY3YjAyYmUxNGNk
YTVlLi4zZDcwY2Q1NDNlY2ZhZTkwMjI1MDI5NjAxYTBkNDA1ZWM2NzFiMmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMzIsNyArMzIsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBP
cGNvZGVJRCA9IDo6SlNDOjpPcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlE
IG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+
KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNv
ZGVzV2l0aE1ldGFkYXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9
IG9wX3dpZGUxNjsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IG9wX3dp
ZGUzMjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhz
ID0gOjpKU0M6Om9wY29kZUxlbmd0aHM7CkBAIC00MSw3ICs0Myw5IEBAIHN0cnVjdCBKU09wY29k
ZVRyYWl0cyB7CiAKIHN0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJ
RCA9IFdhc21PcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9m
Qnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9P
Rl9XQVNNX1dJVEhfQ0hFQ0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQg
bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVN
QkVSX09GX1dBU01fV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5
dGVjb2Rlc1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSB3YXNtX3dpZGUxNjsKICAg
ICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IHdhc21fd2lkZTMyOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSB3YXNtT3Bjb2Rl
TGVuZ3RoczsKQEAgLTk4LDEyICsxMDIsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFy
cm93KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKICAg
ICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAg
ICBPcGNvZGVTaXplIHdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1dpZGUzMjxU
cmFpdHM+KCkpCisgICAgICAgICAgICByZXR1cm4gT3Bjb2RlU2l6ZTo6V2lkZTMyOworICAgICAg
ICByZXR1cm4gaXNXaWRlMTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2Rl
U2l6ZTo6TmFycm93OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNX
aXRoTWV0YWRhdGE7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNP
cGNvZGVUcmFpdHM+CisgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhDaGVja3BvaW50czsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7
CkBAIC0xMzcsNiArMTU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNv
ZGVUcmFpdHM+CisgICAgVCBhc0tub3duV2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKChpczxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgcmV0dXJuIFQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRoPjo6dW5zaWduZWRUeXBlKj4odGhpcyAr
ICh3aWR0aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAxIDogMikpKTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBU
KiBjYXN0KCkKICAgICB7CkBAIC0xNjEsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHsKIAogICAg
ICAgICBBU1NFUlQoaXNXaWRlMTY8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4oYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4odGhpcyArIDEpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgpAQCAtMTY5LDE0ICsxOTQs
MTYgQEAgcHVibGljOgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNXaWRlMzI8VHJhaXRzPigp
KTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXpl
OjpXaWRlMzI+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4o
dGhpcyArIDEpOwogICAgIH0KIH07CiAKIHN0cnVjdCBJbnN0cnVjdGlvbiA6IHB1YmxpYyBCYXNl
SW5zdHJ1Y3Rpb248T3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnN0cnVj
dGlvbikgPT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsK
IAogc3RydWN0IFdhc21JbnN0YW5jZSA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29k
ZUlEPiB7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbUluc3RhbmNlKSA9PSAxLCAiU28g
cG9pbnRlciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRp
b25Nb2RlTWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRp
b25Nb2RlTWV0YWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmQ2OTE5MzFjNmM3OTQ4ZTU1N2U0ZjU2OTIz
YWUzNDkwZmViOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgSXRlcmF0aW9uTW9kZSA6IHVpbnQ4X3QgeworICAg
IEdlbmVyaWMgPSAxIDw8IDAsCisgICAgRmFzdEFycmF5ID0gMSA8PCAxLAorfTsKKworY29uc3Rl
eHByIHVpbnQ4X3QgbnVtYmVyT2ZJdGVyYXRpb25Nb2RlcyA9IDI7CisKK09WRVJMT0FEX0JJVFdJ
U0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhJdGVyYXRpb25Nb2Rl
KTsKKworc3RydWN0IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSB7CisgICAgdWludDhfdCBzZWVuTW9k
ZXMgeyAwIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc2Vlbk1vZGVzKSkg
PT0gc2l6ZW9mKEl0ZXJhdGlvbk1vZGUpKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cAppbmRleCAyZDE0M2I5Y2Y2NzQzMDVkNDBjOTFlYjBhZTM1MTMzMTI1Njk0NDFmLi5iYmUxZjY3
ZmZiZWZlOGU4YmIxMzY3ZWI2YzdlZDY3Y2JhYThhYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNjAsMTQgKzYw
LDMxIEBAIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAgICAgfQogCiAgICAgYXV0byYgaW5zdHJ1
Y3Rpb24gPSBtX293bmVyLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlT2Zmc2V0LmdldCgp
KTsKLSAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+
KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkpOworICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCkpIHsKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2xlYXJMTEludEdl
dEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIu
Z2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0
ZXJhdG9yX29wZW46CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFk
YXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCku
bWV0YWRhdGEobV9vd25lci5nZXQoKSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUo
bWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRD
YWNoZShtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCi12b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6
Ok1ldGFkYXRhJiBtZXRhZGF0YSkKK3ZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRh
dGEmIG1ldGFkYXRhKQogewotICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFs
dWUuCi0gICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91
dENhY2hlKCk7CisgICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7
CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKaW5kZXggMjIwZmZmM2UzYmY1NDM0MWU5NjFj
ODJkZjhjNGU4YzkwMDA3MzRiZS4uMWQ1OTU3ZWZmODEwOTJhMWRhYmRlZTUwMjVjYWM1ZTZmMzg2
NzgyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3RhbGwo
Vk0mKTsKIAotICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlk
OjpNZXRhZGF0YSYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0
QnlJZE1vZGVNZXRhZGF0YSYpOwogCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
IGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAppbmRleCAxODUxYjYzYzdjYTZhZWYyZmIzNmJmMmY4N2U5MmExOWUwZDQw
YzE4Li5hYTg4NTlhZGQ2Mjg2MGZmZGFkYjRkMjIyODdjMzRiMDdjZTViMzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0
TVNCU2V0Q29uc3RleHByKG0KICAgICBtYWNybyhPcFRhaWxDYWxsKSBcCiAgICAgbWFjcm8oT3BD
YWxsRXZhbCkgXAogICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCisgICAgbWFjcm8oT3BJdGVyYXRv
ck9wZW4pIFwKKyAgICBtYWNybyhPcEl0ZXJhdG9yTmV4dCkgXAorCiAKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidHlwZS1saW1pdHMiKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkNzZkNGZhN2I0NmU5OGI5Zjk3
MDBkYzM4NjMwZjQuLjk0NjU4YjA5NmJmMTkzYzg3Y2ZkNzFhOWY1YmRlMTVmNjEzMzJhODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBA
IC0xMjAsNiArMTIwLDE2IEBAIGlubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBib29sIGlzU3VidHlwZVNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sK
KyAgICByZXR1cm4gISh2YWx1ZSAmIH5jYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKK2lubGluZSBi
b29sIHNwZWN1bGF0aW9uQ29udGFpbnMoU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0ZWRU
eXBlIGNhdGVnb3J5KQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIGNhdGVnb3J5KSAmJiB2YWx1
ZTsKK30KKwogaW5saW5lIGJvb2wgaXNDZWxsU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiB7CiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYmICEodmFsdWUgJiB+U3Bl
Y0NlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVy
U2FtcGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5o
CmluZGV4IDk2MTBkY2U1Y2RiYzNlYzA5Y2UzM2IxZDZiY2M0YjNmZjhhNmMzYzguLmU5YmY5NTMx
ZjdiYTU5NTczMTEwZTMxYTdhNDRjZDIyOGI3NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAgLTQ4LDYgKzQ4LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKICAgICB9CiAKKyAgICB2b2lkIHJl
bGVhc2UoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZG9TYW1wbGUpOworICAgICAgICBnX3N1
cGVyU2FtcGxlckNvdW50LS07CisgICAgICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsKKyAgICB9CisK
IHByaXZhdGU6CiAgICAgYm9vbCBtX2RvU2FtcGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
NjNkMzYyY2FjMTlkNDkzOTg5NDc3N2JlZGE3YzBhYzJkNjM2MDYzZi4uOGZlZGU2MmI1MzBlYmQx
MDFmZWRhNjFhYmFiOTQ5YTNmM2IzNTliNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwMTYsMTQg
KzQwMTYsMTUgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9u
SWZOZWVkZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ss
IEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxs
QmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRh
YmxlKQogewogICAgIGJvb2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2RlID8gZm9yTG9vcE5vZGUt
PmlzRm9yQXdhaXQoKSA6IGZhbHNlOwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNGb3JB
d2FpdCAmJiBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CisgICAgYXV0
byBzaG91bGRFbWl0QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdh
aXQ6Ok5vOworICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJzZU1v
ZGUocGFyc2VNb2RlKCkpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3
VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5
bmNJdGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihzdWJqZWN0
LmdldCgpLCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3
YWl0ID8gZW1pdEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0
R2VuZXJpY0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdl
dCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0g
bmV3TGFiZWwoKTsKQEAgLTQxMzAsNyArNDEzMSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lv
CiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KHZh
bHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JB
d2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0
SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0
b3IuZ2V0KCksIG5vZGUsIHNob3VsZEVtaXRBd2FpdCk7CiAKICAgICAgICAgICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2
YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00MTQz
LDcgKzQxNDQsMTQ1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIHBvcEZpbmFs
bHlDb250cm9sRmxvd1Njb3BlKCk7CiAgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgewog
ICAgICAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJv
bCBmbG93LgotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91
bGRFbWl0QXdhaXQpOworICAgICAgICB9CisgICAgfQorICAgIGVtaXRMYWJlbChsb29wRG9uZS5n
ZXQoKSk7Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUs
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCop
PiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BT
eW1ib2xUYWJsZSkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNpY3Mo
KSB8fCBpczMyQml0KCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0
KCkpKSB7CisgICAgICAgIGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9kZSwgc3ViamVjdE5vZGUs
IGNhbGxCYWNrLCBmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYWJsZSA9IG5ld1RlbXBv
cmFyeSgpOworICAgIGVtaXROb2RlKGl0ZXJhYmxlLmdldCgpLCBzdWJqZWN0Tm9kZSk7CisKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JTeW1ib2wgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgaXRlcmFibGUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRPckluZGV4ID0gbmV3VGVtcG9yYXJ5KCk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2Fs
bEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBtb3ZlKGFyZ3MudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhYmxlLmdldCgpKTsKKyAgICBlbWl0SXRlcmF0b3JPcGVuKGl0ZXJhdG9y
LmdldCgpLCBuZXh0T3JJbmRleC5nZXQoKSwgaXRlcmF0b3JTeW1ib2wuZ2V0KCksIGFyZ3MsIG5v
ZGUpOworCisgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExh
YmVsPiB0cnlTdGFydExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlW
aWFUaHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlMYWJlbCA9
IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKyAg
ICBSZWY8TGFiZWw+IGVuZENhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOworCisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdExvYWQodmFsdWUuZ2V0
KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9y
J3MgbGlmZXRpbWUgbXVzdCBiZSBsb25nZXIgdGhhbiBJdGVyYXRvckNsb3NlQ29udGV4dC4KKyAg
ICBGaW5hbGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dCgqdGhpcywgZmluYWxseUxhYmVsLmdldCgp
KTsKKyAgICBwdXNoRmluYWxseUNvbnRyb2xGbG93U2NvcGUoZmluYWxseUNvbnRleHQpOworCisg
ICAgeworICAgICAgICBSZWY8TGFiZWxTY29wZT4gc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVs
U2NvcGU6Okxvb3ApOworCisgICAgICAgIFJlZjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgIGVtaXRMYWJl
bCgqc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOworICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKwor
ICAgICAgICBpZiAoZm9yTG9vcE5vZGUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZv
ckxvb3BOb2RlLT5pc0Zvck9mTm9kZSgpKTsKKyAgICAgICAgICAgIHByZXBhcmVMZXhpY2FsU2Nv
cGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxl
KTsKKyAgICAgICAgICAgIGVtaXREZWJ1Z0hvb2soZm9yTG9vcE5vZGUtPmxleHByKCkpOworICAg
ICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRvbmUg
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3MoKnRo
aXMsIG51bGxwdHIsIDApOworICAgICAgICAgICAgbW92ZShuZXh0QXJncy50aGlzUmVnaXN0ZXIo
KSwgaXRlcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KGRvbmUu
Z2V0KCksIHZhbHVlLmdldCgpLCBpdGVyYWJsZS5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIG5l
eHRBcmdzLCBub2RlKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGxv
b3BEb25lLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXRMYWJlbCh0cnlTdGFydExh
YmVsLmdldCgpKTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IHB1c2hUcnkodHJ5U3RhcnRM
YWJlbC5nZXQoKSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50
aGVzaXplZEZpbmFsbHkpOworICAgICAgICBjYWxsQmFjaygqdGhpcywgdmFsdWUuZ2V0KCkpOwor
ICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgIC8vIEl0ZXJhdG9y
Q2xvc2Ugc2VxdWVuY2UgZm9yIGFicnVwdCBjb21wbGV0aW9ucy4KKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gRmluYWxseSBibG9jayBmb3IgdGhlIGVudW1lcmF0aW9uLgorICAgICAgICAgICAg
ZW1pdExhYmVsKGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHBvcFRy
eSh0cnlEYXRhLCBmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJl
ZjxMYWJlbD4gZmluYWxseUJvZHlMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7
CisKKyAgICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihmaW5hbGx5Q29udGV4
dC5jb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlw
ZVJlZ2lzdGVyKCksIHRyeURhdGEpOworICAgICAgICAgICAgbW92ZShmaW5hbGx5RXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkp
OworICAgICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAg
ICAgICAgIGVtaXRMYWJlbChmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgbW92ZUVt
cHR5VmFsdWUoZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAg
Ly8gRmluYWxseSBmYWxsIHRocm91Z2ggY2FzZS4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5h
bGx5Qm9keUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3RvcmVTY29wZVJlZ2lzdGVyKCk7
CisKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gZmluYWxseURvbmUgPSBuZXdMYWJlbCgpOworCisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5
d29yZCk7CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVt
cG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAg
ICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5DYWxsVHJ5U3RhcnQgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgZW1pdExhYmVsKHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSk7CisgICAgICAgICAg
ICBUcnlEYXRhKiByZXR1cm5DYWxsVHJ5RGF0YSA9IHB1c2hUcnkocmV0dXJuQ2FsbFRyeVN0YXJ0
LmdldCgpLCBjYXRjaExhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRDYXRjaCk7
CisKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyKTsKKyAgICAgICAgICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJu
TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+
ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxl
Q2FsbDo6Tm8pOworCisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3
VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwgZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAg
ICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBh
biBvYmplY3QuIl9zKTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlEb25lLmdldCgp
KTsKKyAgICAgICAgICAgIGVtaXRGaW5hbGx5Q29tcGxldGlvbihmaW5hbGx5Q29udGV4dCwgZW5k
Q2F0Y2hMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIHBvcFRyeShyZXR1cm5DYWxsVHJ5RGF0
YSwgZmluYWxseURvbmUuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBDYXRjaCBibG9jayBmb3Ig
ZXhjZXB0aW9ucyB0aGF0IG1heSBiZSB0aHJvd24gd2hpbGUgY2FsbGluZyB0aGUgcmV0dXJuCisg
ICAgICAgICAgICAvLyBoYW5kbGVyIGluIHRoZSBlbnVtZXJhdGlvbiBmaW5hbGx5IGJsb2NrLiBU
aGUgb25seSByZWFzb24gd2UgbmVlZCB0aGlzCisgICAgICAgICAgICAvLyBjYXRjaCBibG9jayBp
cyBiZWNhdXNlIGlmIGVudGVyZWQgdGhlIGFib3ZlIGZpbmFsbHkgYmxvY2sgZHVlIHRvIGEgdGhy
b3duCisgICAgICAgICAgICAvLyBleGNlcHRpb24sIHRoZW4gd2Ugd2FudCB0byByZS10aHJvdyB0
aGUgb3JpZ2luYWwgZXhjZXB0aW9uIG9uIGV4aXRpbmcKKyAgICAgICAgICAgIC8vIHRoZSBmaW5h
bGx5IGJsb2NrLiBPdGhlcndpc2UsIHdlJ2xsIGxldCBhbnkgbmV3IGV4Y2VwdGlvbiBwYXNzIHRo
cm91Z2guCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFi
ZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlv
blJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdE91dE9mTGlu
ZUZpbmFsbHlIYW5kbGVyKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5j
b21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIHJldHVybkNhbGxUcnlEYXRhKTsKKyAgICAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgc3ludGhlc2l6ZWQgY2F0Y2ggYmxvY2sgYW5kIHdlJ3Jl
IGd1YXJhbnRlZWQgdG8gbmV2ZXIgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUg
YW55IHN5bWJvbHMgZnJvbSB0aGUgc2NvcGUsIHdlIGNhbiBza2lwIHJlc3RvcmluZyB0aGUgc2Nv
cGUKKyAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBoZXJlLgorCisgICAgICAgICAgICAgICAg
UmVmPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShlbWl0SXNFbXB0eShuZXdUZW1wb3JhcnkoKSwgZmluYWxseUV4Y2VwdGlvblJl
Z2lzdGVyLmdldCgpKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbW92ZShl
eGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsK
KworICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBlbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgZW1pdExhYmVsKGVuZENhdGNoTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBicmVha0xhYmVsSXNCb3VuZCA9IHNjb3BlLT5icmVha1Rh
cmdldE1heUJlQm91bmQoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKQorICAgICAg
ICAgICAgZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKKyAgICAgICAgcG9wRmluYWxs
eUNvbnRyb2xGbG93U2NvcGUoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7Cisg
ICAgICAgICAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9s
IGZsb3cuCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIG5vZGUsIEVtaXRBd2FpdDo6Tm8pOwogICAgICAgICB9CiAgICAgfQogICAgIGVtaXRMYWJl
bChsb29wRG9uZS5nZXQoKSk7CkBAIC00MjY1LDU2ICs0NDA0LDYgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKQogICAgIE9wSXNFbXB0eTo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CiAgICAgcmV0dXJuIGRz
dDsKIH0KLSAgICAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQg
ZG9FbWl0QXdhaXQpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhdG9yKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90
U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgICAg
ICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgICAgICBlbWl0QXdh
aXQoZHN0KTsKLSAgICB9Ci0gICAgewotICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVjdCA9
IG5ld0xhYmVsKCk7Ci0gICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1w
b3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgZW1pdFRocm93VHlw
ZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsK
LSAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgfQotICAgIHJldHVy
biBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSkKLXsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFy
Z3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOwotICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRo
b2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwot
ICAgIH0KLQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIFJlZjxMYWJl
bD4gZG9uZSA9IG5ld0xhYmVsKCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhv
ZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygp
LnJldHVybktleXdvcmQpOwotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0KLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBDYWxsQXJndW1lbnRz
IHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgbW92ZShyZXR1cm5Bcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwg
cmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOwotCi0gICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVz
KQotICAgICAgICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkpOwotCi0gICAgZW1pdEp1bXBJZlRydWUo
ZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwot
ICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7Ci0gICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwotfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxS
ZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlcikKIHsKQEAgLTQ1NTUsNyArNDY0NCwz
NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUp
CiAgICAgbW92ZSh2YWx1ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIAotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SXRlcmF0b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBu
ZXh0T3JJbmRleCwgUmVnaXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0
ZXJhYmxlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBS
ZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJ
RD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxv
dz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3Jh
cnkoKSk7CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAg
ICBlbWl0RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBu
b2RlLT5kaXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yT3Blbjo6ZW1pdCh0aGlzLCBpdGVyYXRv
ciwgbmV4dE9ySW5kZXgsIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZS50aGlzUmVnaXN0ZXIoKSwg
aXRlcmFibGUuc3RhY2tPZmZzZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lz
dGVySUQqIGl0ZXJhYmxlLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYg
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8v
IFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3Rl
cklEPiwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBjYWxsRnJhbWU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVyczsgKytpKQorICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBv
cmFyeSgpKTsKKworICAgIGlmIChzaG91bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBlbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKwor
ICAgIGVtaXRFeHByZXNzaW9uSW5mbyhub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCkpOworICAgIE9wSXRlcmF0b3JOZXh0OjplbWl0KHRoaXMsIGRvbmUs
IHZhbHVlLCBpdGVyYWJsZSwgbmV4dE9ySW5kZXgsIGl0ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvci5zdGFja09mZnNldCgpKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRv
ciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygp
Lml0ZXJhdG9yU3ltYm9sKTsKICAgICBlbWl0Q2FsbEl0ZXJhdG9yKGl0ZXJhdG9yLmdldCgpLCBh
cmd1bWVudCwgbm9kZSk7CkBAIC00NTYzLDYgKzQ2ODAsNTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dh
YmxlRXgKICAgICByZXR1cm4gaXRlcmF0b3IuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIHsK
KyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAg
ICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAg
ICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJn
dW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVt
aXRBd2FpdDo6WWVzKQorICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7CisgICAgfQorICAgIHsK
KyAgICAgICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBl
bWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09i
amVjdC5nZXQoKSk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBl
SXNPYmplY3QuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRv
ciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
KQoreworICAgIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBu
dWxscHRyLCAxKTsKKyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvcik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDAp
LCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgfQorCisgICAgcmV0
dXJuIGRzdDsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIFJlZjxMYWJlbD4gZG9uZSA9
IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktl
eXdvcmQpOworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jhcnko
KSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIHJldHVybkFy
Z3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0
aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2
b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2Fs
bDo6Tm8pOworCisgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAg
ICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkpOworCisgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2Jq
ZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOworICAgIGVtaXRU
aHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiJfcyk7CisgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworfQorCisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVu
dCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9w
ZXJ0eU5hbWVzKCkuYXN5bmNJdGVyYXRvclN5bWJvbCk7CkBAIC00NTc1LDcgKzQ3NDMsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YQogICAgIGVtaXRKdW1wKGFzeW5jSXRlcmF0b3JGb3VuZC5n
ZXQoKSk7CiAgICAgZW1pdExhYmVsKGFzeW5jSXRlcmF0b3JOb3RGb3VuZC5nZXQoKSk7CiAKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0SXRlcmF0b3IoYXJn
dW1lbnQsIG5vZGUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25JdGVyYXRvciA9IGVt
aXRHZXRHZW5lcmljSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgIG1vdmUoaXRlcmF0b3Iu
Z2V0KCksIGNvbW1vbkl0ZXJhdG9yLmdldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkubmV4dCk7CkBAIC00NjA0LDcgKzQ3NzIsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFy
eSgpOwogICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdl
dEFzeW5jSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50
LCBub2RlKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFz
eW5jSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1
bWVudCwgbm9kZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1p
dEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
bmV4dCk7CiAKICAgICAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00
NjQyLDcgKzQ4MTAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVn
YXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAg
ICAgICBlbWl0SnVtcElmRmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJv
d01ldGhvZC5nZXQoKSksIHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOwogCiAgICAgICAgICAgICAg
ICAgICAgIEVtaXRBd2FpdCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6Olll
cyA6IEVtaXRBd2FpdDo6Tm87Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3Nl
KGl0ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIGVtaXRBd2FpdEluSXRlcmF0b3JDbG9zZSk7CiAKICAgICAgICAgICAgICAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhy
b3cnIG1ldGhvZC4iX3MpOwogCkBAIC00NzAzLDcgKzQ4NzEsNyBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRo
cm93YWJsZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1l
bnQuZ2V0KCkpOwotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5n
ZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2Rl
KTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKHZhbHVlLmdl
dCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUp
OwogCiAgICAgICAgICAgICBlbWl0TGFiZWwoYnJhbmNoT25SZXN1bHQuZ2V0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggZWE2Y2QyYjZkNWJhNzk5NDk1NjQ4NjJmMzAzMDFhMzFlYTgxMThkZS4uNzFl
OWE1ZjNkZjMwZTE1MmVmYzJmNDk2NjMyNmE3OWZlZWQ4MzViNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
ODI4LDYgKzgyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQg
b3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5l
cmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVs
bHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAgICAgICAg
IHZvaWQgZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlv
bk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2Rl
KiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBk
c3QsIFRhZ2dlZFRlbXBsYXRlTm9kZSopOwpAQCAtOTAwLDkgKzkwMSwxNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzRGVyaXZlZEFycmF5KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIERlcml2ZWRBcnJheVR5cGUpOyB9CiAgICAgICAgIHZvaWQgZW1pdFJlcXVpcmVPYmplY3RD
b2VyY2libGUoUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3IpOwogCi0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwotICAg
ICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7
CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVn
aXN0ZXJJRCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJn
dW1lbnRzJiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAg
ICAgdm9pZCBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZh
bHVlLCBSZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxB
cmd1bWVudHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0
OjpObyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZh
bHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSk7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVy
SUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3
YWl0ID0gRW1pdEF3YWl0OjpObyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJh
bWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsK
IApAQCAtOTUyLDkgKzk1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQ
dXNoQ2F0Y2hTY29wZShWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBv
cENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0KICAgICAgICAgdm9pZCBlbWl0QXdhaXQoUmVnaXN0
ZXJJRCopOwogICAgICAgICB2b2lkIGVtaXRHZXRTY29wZSgpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklEKiBvYmplY3RTY29wZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
MDdmMDA4YjNmZWZlN2U3YzY2YTQwYzMxMGY1NjQ4ZjhhNTFkNTk2Mi4uMDI0NjY4NTdlZWMxZGYz
Njk3Yzc0NGI4MTQ2M2I5YjEzZGI1ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDgyMCw3ICs0ODIwLDcgQEAg
dm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9k
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaXRlcmF0
b3IuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBpZiAobV90
YXJnZXRQYXR0ZXJucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRv
ckNsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVy
YXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0
aW9uU2tpcHBlZC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQo
KSwgdGhpcyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQo
dmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDg3Miw3ICs0ODcyLDcgQEAgdm9p
ZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChsb29w
U3RhcnQuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJh
dG9yTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRo
aXMpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVl
LmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ4OTAsNyArNDg5MCw3IEBAIHZvaWQgQXJyYXlQ
YXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIHJocykKIAogICAgIFJlZjxMYWJlbD4gaXRlcmF0b3JDbG9zZWQgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRl
cmF0b3JDbG9zZWQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVy
YXRvci5nZXQoKSwgdGhpcyk7CisgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9z
ZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRv
ckNsb3NlZC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA3ZTI2MzgwYzYwNTY1
YmI4MDI5YmMwODExMzU5MWIwZTFjM2ViMjZjLi41MDdjMmJkZTVkZWU3NzM4ZTBjZTgyMTk5NzY5
NmM2MjQ3MjA3MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Mzk4LDEwICs0Mzk4LDggQEAg
dm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVz
KAogICAgICAgICAgICAgICAgIGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0t
OykKLSAgICAgICAgZnVuY3RvcihtX3N0YXRlLmFyZ3VtZW50KGkpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gbV9zdGF0ZS5udW1iZXJPZkxvY2FscygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1f
c3RhdGUubG9jYWwoaSkpOworICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnNpemUoKTsgaS0t
OykKKyAgICAgICAgZnVuY3RvcihtX3N0YXRlLmF0SW5kZXgoaSkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKaW5kZXggODk3YzcwZGZmYmEwNjZiNjQ5Y2Fm
ZGNjMWVmMDkzMzc2ODEwNGQxMy4uNDM4ZTE2ZGU4NTk1OTI1NGQ5NTU3MjFiNmYwOGRiOTU4MTRm
ZDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmgKQEAgLTEzNywxMSArMTM3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbWFrZUhl
YXBUb3BGb3JOb2RlKGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5zaXplKCk7IH0KICAgICB1
bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVl
c0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2Nh
bHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMo
KTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2st
PnZhbHVlc0F0VGFpbC5udW1iZXJPZlRtcHMoKTsgfQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5k
ZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgp
OyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpIHsgcmV0dXJu
IG1fYmxvY2stPnZhbHVlc0F0VGFpbC5vcGVyYW5kKG9wZXJhbmQpOyB9CiAgICAgQWJzdHJhY3RW
YWx1ZSYgbG9jYWwoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwu
bG9jYWwoaW5kZXgpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaW5kZXgpOyB9CisgICAg
QWJzdHJhY3RWYWx1ZSYgdG1wKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVz
QXRUYWlsLnRtcChpbmRleCk7IH0KICAgICAKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IGQyZjRmMDA4NDBjOTExZmFlMDkyNjQxYzM1ZDM3NGYyMDE4OWQ4YTAuLmI1ZDZh
MTQzMWE5OWEzOGRmYjRlZjljZGFmYmFjMzcwNTc3NmMxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZU9wZXJhbmRzRm9yQ2hl
Y2twb2ludC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAt
MTU5LDcgKzE2MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIZWxwZXIgZm9yIG1pbiBhbmQgbWF4
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVN
aW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgCiAgICAgdm9p
ZCByZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCk7CiAg
ICAgLy8gQmxvY2tzIGNhbiBlaXRoZXIgYmUgdGFyZ2V0YWJsZSAoaS5lLiBpbiB0aGUgbV9ibG9j
a0xpbmtpbmdUYXJnZXRzIG9mIG9uZSBJbmxpbmVTdGFja0VudHJ5KSB3aXRoIGEgd2VsbC1kZWZp
bmVkIGJ5dGVjb2RlQmVnaW4sCkBAIC0xNzYsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBI
YW5kbGUgY2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJvdW5kaW5nIGlubGluaW5nIGFu
ZCBpbnRyaW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBUZXJtaW5hbCwgTm9uVGVybWlu
YWwgfTsKICAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBp
bnN0cnVjdGlvblNpemUsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgICAgIE5v
ZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTkwLDI3ICsxOTEsMjcg
QEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGVtaXRGdW5jdGlvbkNoZWNr
SWZOZWVkZWQpOwogICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1
cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50
aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5n
LiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQg
YSBjYWxsLgotICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCBy
ZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lz
dGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBl
IGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
ZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50
c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwogICAgIHVu
c2lnbmVkIGdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQpOwogICAgIGVudW0gY2xhc3MgQ2FsbE9wdGltaXphdGlvblJlc3VsdCB7
IE9wdGltaXplZFRvSnVtcCwgSW5saW5lZCwgRGlkTm90aGluZyB9OwotICAgIENhbGxPcHRpbWl6
YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1
YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Qnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayog
Y29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKLSAgICBDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9m
ZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIENhbGxP
cHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUs
IE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFs
UmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5
dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNv
bnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSk7CisgICAgQ2FsbE9wdGlt
aXphdGlvblJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFu
ZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0
dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFt
ZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
LCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9w
ZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayog
Y29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAg
ICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2Nl
ZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVE
T01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVl
LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVy
KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0dl
dHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cihPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNp
Z25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUq
IGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgPSBHZXRCeU9mZnNldCk7
Ci0gICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29u
c3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgYm9vbCBoYW5kbGVET01KSVRH
ZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05v
ZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
OwogICAgIGJvb2wgaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMpOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CkBAIC0zMjAsMTUgKzMyMSwxNSBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gZ2V0TG9jYWxPclRtcChvcGVyYW5kKTsKICAgICB9CiAKLSAgICBOb2Rl
KiBnZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgTm9kZSogZ2V0KE9wZXJhbmQgb3Bl
cmFuZCkKICAgICB7CiAgICAgICAgIGlmIChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewotICAgICAg
ICAgICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9IG9wZXJhbmQudG9Db25zdGFudEluZGV4KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC52aXJ0dWFsUmVn
aXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9sZFNpemUg
PSBtX2NvbnN0YW50cy5zaXplKCk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBv
bGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkgewogICAgICAgICAgICAgICAg
IGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3Rh
bnQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbihvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29k
ZUJsb2NrLmdldENvbnN0YW50KG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24g
PSBjb2RlQmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3BlcmFuZC52aXJ0
dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0gb2xk
U2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2NvbnN0YW50cy5ncm93KGNvbnN0YW50SW5k
ZXggKyAxKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkU2l6ZTsg
aSA8IG1fY29uc3RhbnRzLnNpemUoKTsgKytpKQpAQCAtMzQ5LDEwICszNTAsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWlu
bGluZUNhbGxGcmFtZSgpLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICAgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0gaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlZUNvbnN0YW50KCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
KQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha0pTQ29uc3Rh
bnQoY2FsbGVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kLm9m
ZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgeworICAgICAgICB9IGVsc2UgaWYgKG9w
ZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpIHsKICAgICAg
ICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gc29tZSBjb25zdGFudC1mb2xkaW5nIGhlcmUgYmVjYXVz
ZSB0aGlzIGVuYWJsZXMgQ3JlYXRlVGhpcyBmb2xkaW5nLiBOb3RlCiAgICAgICAgICAgICAvLyB0
aGF0IHdlIGRvbid0IGhhdmUgc3VjaCB3YXRjaHBvaW50LWJhc2VkIGZvbGRpbmcgZm9yIGlubGlu
ZWQgdXNlcyBvZiBDYWxsZWUsIHNpbmNlIGluIHRoYXQKICAgICAgICAgICAgIC8vIGNhc2UgaWYg
dGhlIGZ1bmN0aW9uIGlzIGEgc2luZ2xldG9uIHRoZW4gd2UgYWxyZWFkeSBrbm93IGl0LgpAQCAt
NDEyLDcgKzQxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5zaHJpbmso
MCk7CiAgICAgfQogCi0gICAgTm9kZSogc2V0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2Rl
KiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQorICAgIE5vZGUqIHNldChPcGVy
YW5kIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAg
ICAgewogICAgICAgICByZXR1cm4gc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChvcGVyYW5kKSwgdmFsdWUsIHNldE1vZGUpOwogICAgIH0KQEAgLTY5MywxNSArNjk0LDIw
IEBAIHByaXZhdGU6CiAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKICAgICB9CiAKKyAgICBO
b2RlKiBqc0NvbnN0YW50KEZyb3plblZhbHVlKiBjb25zdGFudFZhbHVlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGNvbnN0YW50VmFsdWUpKTsK
KyAgICB9CisKICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIGNvbnN0YW50IHNob3VsZCBiZSBzdHJv
bmdseSBtYXJrZWQuCiAgICAgTm9kZSoganNDb25zdGFudChKU1ZhbHVlIGNvbnN0YW50VmFsdWUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9n
cmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIGpzQ29u
c3RhbnQobV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpOwogICAgIH0KIAogICAg
IE5vZGUqIHdlYWtKU0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShj
b25zdGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6
ZShjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBn
ZXQvc2V0IHRoZSB0aGlzIHZhbHVlLgpAQCAtODUyLDcgKzg1OCw3IEBAIHByaXZhdGU6CiAgICAg
fQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3Vu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUg
b3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAg
ICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKQEAgLTk2MSw3ICs5NjcsMzcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHJldHVybiBnZXRQcmVkaWN0aW9uKG1fY3VycmVudEluZGV4KTsKICAg
ICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBxdWl0ZSBhIHRydWUgYm90dG9t
IHZhbHVlIGZvciBleGFtcGxlIGFueSBvYmplY3Qgc3BlY3VsYXRpb24gd2lsbCBub3cgYmUgT2Jq
ZWN0fE90aGVyIGFzIHRoaXMgcmV0dXJucyBudWxsLgorICAgIC8vIFdlIHNob3VsZCBmaXggdGhp
cyB3aGVuIHdlIGNhbiBhbGxvY2F0ZSBvbiB0aGUgQ29tcGlsZXIgdGhyZWFkLgorICAgIEZyb3pl
blZhbHVlKiBib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgc3Bl
YykKKyAgICB7CisgICAgICAgIC8vIEl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIHdoYXQgd2Ug
cmV0dXJuIGhlcmUuCisgICAgICAgIGlmIChzcGVjID09IFNwZWNOb25lKQorICAgICAgICAgICAg
cmV0dXJuIG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0
aW9uQ29udGFpbnMoc3BlYywgU3BlY090aGVyKSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBo
LmZyZWV6ZShqc051bGwoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3Bl
YywgU3BlY0Jvb2xlYW4pKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzQm9v
bGVhbih0cnVlKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3Bl
Y0Z1bGxOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXplKGpzTnVtYmVy
KDApKTsKKworICAgICAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhzcGVjLCBTcGVjQmlnSW50
KSkKKyAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmZyZWV6ZShtX3ZtLT5iaWdJbnRDb25zdGFu
dE9uZS5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMoc3BlYywgU3Bl
Y1N0cmluZyB8IFNwZWNTeW1ib2wpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguZnJlZXpl
KG1fdm0tPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKKworICAgICAgICBpZiAoc3BlY3Vs
YXRpb25Db250YWlucyhzcGVjLCBTcGVjQ2VsbE90aGVyIHwgU3BlY09iamVjdCkpCisgICAgICAg
ICAgICByZXR1cm4gbV9ncmFwaC5mcmVlemUoanNOdWxsKCkpOworCisgICAgICAgIEFTU0VSVChz
cGVjdWxhdGlvbkNvbnRhaW5zKHNwZWMsIFNwZWNFbXB0eSkpOworICAgICAgICByZXR1cm4gbV9n
cmFwaC5mcmVlemUoSlNWYWx1ZSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlN
b2RlKEFycmF5OjpBY3Rpb24gYWN0aW9uKQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2s7CkBAIC0xMTc2LDcgKzEy
MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBPcHRpb25hbDogYSBjb250aW51YXRpb24gYmxv
Y2sgZm9yIHJldHVybnMgdG8ganVtcCB0by4gSXQgaXMgc2V0IGJ5IGVhcmx5IHJldHVybnMgaWYg
aXQgZG9lcyBub3QgZXhpc3QuCiAgICAgICAgIEJhc2ljQmxvY2sqIG1fY29udGludWF0aW9uQmxv
Y2s7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fcmV0dXJuVmFsdWU7CisgICAgICAgIE9w
ZXJhbmQgbV9yZXR1cm5WYWx1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNwZWN1bGF0aW9ucyBh
Ym91dCB2YXJpYWJsZSB0eXBlcyBjb2xsZWN0ZWQgZnJvbSB0aGUgcHJvZmlsZWQgY29kZSBibG9j
aywKICAgICAgICAgLy8gd2hpY2ggYXJlIGJhc2VkIG9uIE9TUiBleGl0IHByb2ZpbGVzIHRoYXQg
cGFzdCBERkcgY29tcGlsYXRpb25zIG9mIHRoaXMKQEAgLTExOTYsNyArMTIzMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBDb2RlQmxvY2sqLAogICAgICAgICAgICAgQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLAogICAgICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCAvLyBOdWxsIGlmIHRo
aXMgaXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJu
VmFsdWVWUiwKKyAgICAgICAgICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCiAgICAgICAgICAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQsCkBAIC0xMjcxLDYgKzEzMDcsNyBAQCBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxs
b2NhdGVVbnRhcmdldGFibGVCbG9jaygpCiAgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRv
cHRSZWYoKm5ldyBCYXNpY0Jsb2NrKEJ5dGVjb2RlSW5kZXgoKSwgbV9udW1Bcmd1bWVudHMsIG1f
bnVtTG9jYWxzLCBtX251bVRtcHMsIDEpKTsKICAgICBCYXNpY0Jsb2NrKiBibG9ja1B0ciA9IGJs
b2NrLnB0cigpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOworICAg
IFZFUkJPU0VfTE9HKCJBZGRpbmcgbmV3IHVudGFyZ2V0YWJsZSBibG9jazogIiwgYmxvY2tQdHIt
PmluZGV4LCAiXG4iKTsKICAgICByZXR1cm4gYmxvY2tQdHI7CiB9CiAKQEAgLTEzMDMsOCArMTM0
MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5h
bGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5v
ZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPENhbGxPcD4oKTsKLSAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGJ5dGVjb2RlLm1fY2Fs
bGVlKTsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29k
ZS5tX2FyZ3YpOworICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoY2FsbGVlRm9yKGJ5dGVjb2Rl
LCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpKTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSAtc3RhdGljX2Nhc3Q8aW50PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29k
ZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7CiAKICAgICBDYWxsTGlua1N0YXR1cyBj
YWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCkBAIC0x
MzEyLDggKzEzNDksOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBObwogCiAgICAgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1vZGUpOwog
Ci0gICAgcmV0dXJuIGhhbmRsZUNhbGwoYnl0ZWNvZGUubV9kc3QsIG9wLCBraW5kLCBwYy0+c2l6
ZSgpLCBjYWxsVGFyZ2V0LAotICAgICAgICBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0
LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKKyAgICByZXR1cm4gaGFuZGxlQ2Fs
bChkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpLCBK
SVRUeXBlOjpERkdKSVQpLCBvcCwga2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKKyAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4
LmNoZWNrcG9pbnQoKSksIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGlj
dGlvbigpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5lU3RhdGljYWxseShDYWxs
TGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQpCkBAIC0xMzIzLDcg
KzEzNjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5r
U3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbAogfQogCiBCeXRlQ29kZVBhcnNlcjo6
VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCi0gICAgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNp
Z25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAg
IE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJl
Z2lzdGVyT2Zmc2V0LAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKQogewpAQCAtMTYzOSw3ICsxNjc2LDcgQEAgdW5zaWduZWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVu
dENvdW50SW5jbHUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLXZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5k
LCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGNvbnN0IEluc3RydWN0aW9uKiBzYXZlZEN1cnJl
bnRJbnN0cnVjdGlvbiA9IG1fY3VycmVudEluc3RydWN0aW9uOwogICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXph
dGlvbktpbmRGb3Ioa2luZCk7CkBAIC0xNjczLDcgKzE3MTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBDYQogICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJn
dW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHQpLnZpcnR1
YWxSZWdpc3RlcigpOworICAgICAgICByZXN1bHQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9w
ZXJhbmQocmVzdWx0KTsKIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUg
PSBudWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CkBAIC0xODI1LDcg
KzE4NjIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIG1fY3VycmVudEluc3RydWN0
aW9uID0gc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb247CiB9CiAKLUJ5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0SW5kZXgsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNp
Z25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9v
bCBuZWVkc1RvQ2hlY2tDYWxsZWUpCitCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJl
c3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNl
dCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtp
bmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2Us
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkK
IHsKICAgICBWRVJCT1NFX0xPRygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJc
biIpOwogCkBAIC0xOTAyLDcgKzE5MzksNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXph
dGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogYwogICAg
IHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVkOwogfQogCi1ib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdz
SW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LAogICAgIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IGZpcnN0RnJlZVJlZywgVmlydHVh
bFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJn
dW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwKICAgICBOb2RlVHlwZSBjYWxsT3AsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQpAQCAtMjA0Niw3ICsyMDgzLDcgQEAgdW5zaWduZWQg
Qnl0ZUNvZGVQYXJzZXI6OmdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYg
Y2FsbExpbmtTdGF0dXMKIH0KIAogQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1
bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAotICAgIE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExp
bmtTdGF0dXMsCisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25z
dCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywKICAgICBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9w
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
QEAgLTIyMjIsNyArMjI1OSw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVz
dWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgQVNTRVJU
KG9wID09IEFyaXRoTWluIHx8IG9wID09IEFyaXRoTWF4KTsKIApAQCAtMjI1Miw3ICsyMjg5LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJh
bmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAg
ICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBAIC0yMzkxLDI3ICsy
NDI4LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIGNhc2UgQXJyYXlWYWx1
ZXNJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIGluc2VydENoZWNrcygpOwogCi0gICAgICAgICAg
ICBJdGVyYXRpb25LaW5kIGtpbmQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgewot
ICAgICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2Ug
VHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKLSAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0
aW9uS2luZDo6VmFsdWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBBcnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50
cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpLZXlzOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBcnJheUVudHJpZXNJbnRyaW5z
aWM6Ci0gICAgICAgICAgICBjYXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgotICAgICAg
ICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4ga2luZCA9IGludGVyYXRpb25L
aW5kRm9ySW50cmluc2ljKGludHJpbnNpYyk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
IWtpbmQpOwogCiAgICAgICAgICAgICAvLyBBZGQgdGhlIGNvbnN0YW50IGJlZm9yZSBleGl0IGJl
Y29tZXMgaW52YWxpZCBiZWNhdXNlIHdlIG1heSB3YW50IHRvIGluc2VydCAocmVkdW5kYW50KSBj
aGVja3Mgb24gaXQgaW4gRml4dXAuCi0gICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29u
c3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtpbmQpKSk7CisgICAgICAgICAg
ICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KCpraW5kKSkpOwogCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFuIGV4aXN0aW5n
IGVycm9yIHN0cmluZy4KICAgICAgICAgICAgIHVuc2lnbmVkIGVycm9yU3RyaW5nSW5kZXggPSBV
SU5UMzJfTUFYOwpAQCAtMzcxMSw3ICszNzMyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQs
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4oMSArIHNpZ25hdHVyZS0+YXJn
dW1lbnRDb3VudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MzAsNyArMzc1MSw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9w
ZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeUlkVmFy
aWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKICAgICBjYXNl
IFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CkBAIC0zODQ0LDcgKzM4NjUsNyBAQCBz
dGF0aWMgdm9pZCBibGVzc0NhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlh
bnQsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKQogewogICAgIGlmICghdmFyaWFudC5kb21BdHRyaWJ1dGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzkyMyw3ICszOTQ0LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBT
cGVjdWxhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LAorICAgIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRB
cnJheVR5cGUgdHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAg
IGlmICghaXNUeXBlZFZpZXcodHlwZSkpCkBAIC0zOTgwLDcgKzQwMDEsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24oCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
CisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0
aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAg
VkVSQk9TRV9MT0coIiAgICBIYW5kbGluZyBjb25zdGFudCBpbnRlcm5hbCBmdW5jdGlvbiAiLCBK
U1ZhbHVlKGZ1bmN0aW9uKSwgIlxuIik7CkBAIC02NjY4LDIwICs2Njg5LDQyOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50cyk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfY29uc3Ry
dWN0X3ZhcmFyZ3M6IHsKICAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsPE9wQ29uc3RydWN0
VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3RWYXJhcmdzLCBDYWxsTW9kZTo6
Q29uc3RydWN0KTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5z
dHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNo
IG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlv
biIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0X3ZhcmFyZ3MpOwogICAg
ICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZh
bD4oKTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7
CiAgICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxsRXZhbCwgT3BJbmZvKGJ5
dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2Fy
Z2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVp
bnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVz
OworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RGOjpi
aXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWluaW5n
TW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdlbmVy
YXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3Vy
cmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBnZW5lcmljQmxvY2sg
PSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICBCeXRlY29kZUluZGV4IHN0YXJ0
SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgTm9kZSogc3ltYm9sSXRlcmF0
b3IgPSBnZXREaXJlY3QoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICBh
dXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5h
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CisKKyAgICAgICAgICAgIGlmIChz
ZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZp
cnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3Ru
ZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29u
Y3VycmVudGx5KCksICJUaGUgb25seSB3YXkgd2UgY291bGQgaGF2ZSBzZWVuIEZhc3RBcnJheSBp
cyBpZiB3ZSBzYXcgdGhpcyBmdW5jdGlvbiBpbiB0aGUgTExJbnQvQmFzZWxpbmUgc28gdGhlIGl0
ZXJhdG9yIGZ1bmN0aW9uIHNob3VsZCBiZSBhbGxvY2F0ZWQuIik7CisgICAgICAgICAgICAgICAg
RnJvemVuVmFsdWUqIGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBtX2dyYXBoLmZyZWV6
ZShnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNvbmN1cnJlbnRseSgpKTsK
KyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA9PSAxKQorICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plblN5bWJvbEl0
ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJsb2NrID0gYWxsb2Nh
dGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmljQmxvY2sg
PSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSoga25vd25JdGVyRnVuY3Rpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcVB0ciwgT3BJbmZvKGZy
b3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGlzQXJyYXkgPSBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcElu
Zm8oQXJyYXlUeXBlKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKworICAgICAgICAgICAg
ICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRk
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0
KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFr
ZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBhbmRSZXN1bHQgPSBhZGRUb0dyYXBoKEFyaXRoQml0QW5kLCBpc0FycmF5LCBrbm93bkl0
ZXJGdW5jdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgYml0IGFu
ZCBjYW5ub3QgaGF2ZSBlZmZlY3RzIHNvIGl0J3Mgb2sgdG8gZXhpdCBoZXJlLgorICAgICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJ
bmZvKGJyYW5jaERhdGEpLCBhbmRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZv
clRlcm1pbmFsKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0
QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgYnJhbmNoIGFib3ZlIG1heSBoYXZl
IG1hZGUgZXhpdCBpbnZhbGlkIGJ1dCBpdCdzIGFjdHVhbGx5IG9rLgorICAgICAgICAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7Cisg
ICAgICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25LaW5kOjpWYWx1ZXMpKSk7CisgICAgICAgICAgICAg
ICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0ludGVybmFsRmllbGRPYmplY3QsIE9w
SW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRv
clN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxG
aWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxk
OjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBpdGVyYXRv
ciwga2luZE5vZGUpOworICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2l0ZXJhdG9yLCBp
dGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCBqc0NvbnN0
YW50KEpTVmFsdWUoKSkpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMu
IFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRo
ZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNv
ZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVl
KCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRp
b24pKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFydEluZGV4OworCisgICAgICAg
ICAgICBpZiAoc2Vlbk1vZGVzICYgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykgeworICAgICAgICAg
ICAgICAgIGlmIChnZW5lcmljQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdl
bmVyYXRlZENhc2UpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGdlbmVy
aWNCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFnZW5lcmF0ZWRDYXNlKTsK
KworICAgICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlQ2FsbDxP
cEl0ZXJhdG9yT3Blbj4oY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxh
cik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5hbGl0eSwgdGVybWluYWxp
dHkgPT0gTm9uVGVybWluYWwpOworICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2tw
b2ludCgpOworCisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQoYnl0ZWNvZGUu
bV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90T2JqZWN0QmxvY2sg
PSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogaXNPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKyAgICAgICAg
ICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRk
KCk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNP
YmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFu
Y2hUYXJnZXQobm90T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJh
bmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yKSk7
CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
ID0gbm90T2JqZWN0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6
Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4g
b2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1f
Z3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8p
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5m
byhFcnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
ICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9j
azsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBuZXh0SW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPm5l
eHQuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShuZXh0SW1wbCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworCisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9uZXh0LCBwcmVkaWN0aW9uLCBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKG5leHRJbXBsKSwg
aWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8g
cnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4K
KyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3Vy
cmVudEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUo
KTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51
YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAg
ICAgICAgTm9kZSogcmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNv
ZGUubV9pdGVyYXRvciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9u
ZXh0LCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdl
IGRvbid0IHdhbnQgdG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUg
bmV4dCBieXRlY29kZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2Rl
SW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9u
KSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7
CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAg
ICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRh
dGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01v
ZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJl
ck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAg
ICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgQnl0ZWNvZGVJbmRl
eCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNC
bG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMg
JiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1
cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAg
ICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZS
ZW1haW5pbmdNb2RlcyAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGhhc05leHQg
PSBhZGRUb0dyYXBoKElzRW1wdHksIGdldChieXRlY29kZS5tX25leHQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAg
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFu
Y2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJp
Y0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhi
cmFuY2hEYXRhKSwgaGFzTmV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdl
dChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNr
U3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2xvYmFsT2JqZWN0LT5h
cnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSwgaXRlcmF0b3IpOworCisgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdl
dGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGRvTG9hZEJsb2NrID0g
YWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpzTnVtYmVyKC0xKSk7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5h
bEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6Rmll
bGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgaXRlcmF0b3IpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcSwgaW5k
ZXgsIGRvbmVJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogaXNEb25l
QnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAg
ICAgICBpc0RvbmVCcmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7
CisgICAgICAgICAgICAgICAgICAgIGlzRG9uZUJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNo
VGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJh
bmNoLCBPcEluZm8oaXNEb25lQnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAgICAgICAgICAgICAg
ICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1faXRlcmFi
bGVQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVkaWN0aW9u
ID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdERvbmVCbG9jazsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8o
U3BlY0ludDMyT25seSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGl0ZXJhYmxlID0gZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpOworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBidXR0ZXJmbHkgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwg
aXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBhZGRUb0dyYXBo
KEdldEFycmF5TGVuZ3RoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgaXRlcmFibGUsIGJ1
dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzRG9uZSA9IGFkZFRvR3JhcGgo
Q29tcGFyZUdyZWF0ZXJFcSwgaW5kZXgsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsgLy8gVGhlIGFib3ZlIGNvbXBhcmUgZG9lc24ndCBwcm9kdWNlIGVmZmVj
dHMgc2luY2Ugd2Uga25vdyBpbmRleCBhbmQgbGVuZ3RoIGFyZSBpbnQzMnMuCisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFu
Y2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlzRG9uZUJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJn
ZXQoZG9Mb2FkQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwg
T3BJbmZvKGJyYW5jaERhdGEpLCBpc0RvbmUpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZv
clRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGRvTG9hZEJsb2NrOworICAgICAgICAg
ICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRl
eCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMyT25s
eSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IG9uZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSkpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBuZXdJbmRleCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQsIGluZGV4LCBvbmUpKTsK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogZmFsc2VOb2RlID0ganNDb25zdGFudChqc0Jvb2xl
YW4oZmFsc2UpKTsKKworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBj
b25zaWRlciBtYWtpbmcgdGhpcyBub3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5IHVzZXMgdGhyZWUg
Y2hpbGQKKyAgICAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCisgICAgICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoaW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3Rv
cmFnZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0QnlWYWwgPSBhZGRUb0dyYXBoKE5v
ZGU6OlZhckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8o
cHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwg
Z2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCBmYWxz
ZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5k
ZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBuZXdJbmRleCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVuIG91ciBn
ZXRCeVZhbCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgu
b2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0
T0spOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOwor
ICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgLy8gUm9sbCBiYWNrIHRoZSBjaGVja3BvaW50LgorICAgICAg
ICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc0RvbmVCbG9jazsKKyAg
ICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSogdHJ1ZU5vZGUgPSBqc0NvbnN0YW50KGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGRvbmVJbmRleCA9IGpzQ29uc3RhbnQoanNOdW1iZXIoLTEpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYm90dG9tTm9kZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVN
YXRjaGluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RvbmUsIHRydWVOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJy
YXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSwgZG9u
ZUluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4KKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVu
dEluZGV4Lm9mZnNldCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsK
KworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRp
b24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsK
KyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sg
PSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVk
Q2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRs
ZUNhbGw8T3BJdGVyYXRvck5leHQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6
OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRl
cm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4
dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJs
b2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFi
bGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgT3BlcmFuZCBuZXh0UmVzdWx0ID0gT3BlcmFu
ZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yUmVzdWx0ID0gZ2V0KG5leHRSZXN1bHQp
OworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5t
X2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2Vu
ID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFu
Y2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRv
R3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgIGZs
dXNoRm9yVGVybWluYWwoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIExh
enlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1fZ3JhcGgubV9sYXp5SlNWYWx1ZXMu
YWRkKGVycm9yU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGVycm9yTWVzc2Fn
ZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8pOworICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5mbyhFcnJvclR5cGU6OlR5cGVFcnJv
ciksIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlUHJlZGlj
aXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1cnJl
bnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CisKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2NrOworICAgICAgICAgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBib3R0b21WYWx1ZSA9IGpzQ29uc3RhbnQoYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9u
KHZhbHVlUHJlZGljaXRpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBkb25lSW1wbCA9IG1f
dm0tPnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShkb25l
SW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlw
ZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0g
Y3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgR2V0QnlT
dGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250
ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsK
KworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fZG9uZSwgcHJl
ZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihkb25lSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBv
cGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYSB2YWx1ZSBmb3IgbV92
YWx1ZSBzbyB3ZSBkb24ndCB0aGluaworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV92YWx1ZSwgYm90dG9tVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4
dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hE
YXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
YW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGNvbnRpbnVhdGlvbik7CisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdERvbmVCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNo
RGF0YSksIGdldChieXRlY29kZS5tX2RvbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3REb25lQmxvY2s7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
YmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdmFsdWVJ
bXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVu
c3VyZSh2YWx1ZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9
IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29k
ZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAgICAg
ICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFw
LCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVP
cmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZVByZWRpY2l0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZhbHVlSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdl
dEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBwcm9n
cmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGdlbmVy
YXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdlbmVy
YXRlZENhc2UpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBqc0NvbnN0YW50KEpT
VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAg
ICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCByZXN1bHQpOworICAgICAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX2RvbmUsIHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICAvLyBE
byBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2Fp
biBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJl
bnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAgICAgIHBy
b2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAs
IE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFs
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJ
bmRleDsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgICAg
ICAgICAgY2xlYXJDYWNoZXMoKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0
b3JfbmV4dCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+
KCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRl
Y29kZS5tX3NwZWNpYWxQb2ludGVyKSk7CkBAIC03MTcxLDcgKzc2MDAsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gbG9h
ZHMgZnJvbSB0aGUgc2NvcGUgcmVnaXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0
aGUgREZHIGZyb20gdHJhY2tpbmcgdGhlCiAgICAgICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBs
aXZlbmVzcyBvZiB0aGUgc2NvcGUgcmVnaXN0ZXIuCiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFNjb3BlPigpOwotICAgICAgICAgICAgTm9k
ZSogY2FsbGVlID0gZ2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisgICAgICAgICAgICBOb2Rl
KiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwog
ICAgICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigqbV92bSkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gd2Vha0pTQ29uc3RhbnQoZnVuY3Rpb24tPnNjb3Bl
KCkpOwpAQCAtNzU1MCw3ICs3OTc5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50
cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLAogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSwgLy8gTnVsbCBp
ZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1
ZVZSLAorICAgIE9wZXJhbmQgcmV0dXJuVmFsdWUsCiAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGlu
ZUNhbGxGcmFtZVN0YXJ0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAg
ICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwKQEAgLTc1NTksNyArNzk4OCw3IEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICwgbV9j
b2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKHByb2ZpbGVkQmxvY2sp
CiAgICAgLCBtX2NvbnRpbnVhdGlvbkJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrKQotICAgICwgbV9y
ZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZVZSKQorICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1
ZSkKICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wKQogewog
ICAgIHsKQEAgLTc2MjUsNyArODA1NCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0Vu
dHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAvLyBNYWNoaW5lIGNvZGUgYmxvY2sgY2Fz
ZS4KICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxv
Y2spOwogICAgICAgICBBU1NFUlQoIWNhbGxlZSk7Ci0gICAgICAgIEFTU0VSVCghcmV0dXJuVmFs
dWVWUi5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlLmlzVmFsaWQoKSk7
CiAgICAgICAgIEFTU0VSVCghaW5saW5lQ2FsbEZyYW1lU3RhcnQuaXNWYWxpZCgpKTsKIAogICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZSA9IDA7CkBAIC04MDQwLDcgKzg0NjksNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOwogCiAgICAgICAgICAgICAgICAgYXV0byBub2RlQW5kSW5kZXggPSBibG9jay0+
ZmluZFRlcm1pbmFsKCk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZUFuZElu
ZGV4Lm5vZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUpOworICAgICAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbm9kZUFuZEluZGV4Lm5vZGUsIG5vZGVBbmRJbmRleC5ub2RlLT5vcCgpID09
IFVucmVhY2hhYmxlKTsKICAgICAgICAgICAgICAgICBibG9jay0+cmVzaXplKG5vZGVBbmRJbmRl
eC5pbmRleCArIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAKaW5kZXggZTdmNmU3NjI0NjY5YjMwMWY1YTAyMDQ4YzI1ZDQ4MTVjM2ExMzM5ZC4u
NjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
CkBAIC0yODAsNyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpl
dHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCkKKyAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2lj
QmxvY2sqIGpldHRpc29uZWRCbG9jaywgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcGVyYW5kIG9w
ZXJhbmQpCiAgICAgewogICAgICAgICBOb2RlKiBsaXZlbmVzc05vZGUgPSBqZXR0aXNvbmVkQmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICBpZiAoIWxpdmVu
ZXNzTm9kZSkKQEAgLTMwMiwxMSArMzAyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGpl
dHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9j
aywgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4pCiAgICAgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
QXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpl
dHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudEluY2x1ZGluZ1RoaXMoaSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpl
dHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAg
ICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRh
cnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7Ci0gICAgICAgIAorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRI
ZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0
dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFi
bGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7CisKICAgICAgICAgZml4SmV0dGlzb25lZFBy
ZWRlY2Vzc29ycyhibG9jaywgamV0dGlzb25lZEJsb2NrKTsKICAgICB9CiAgICAgCkBAIC0zNTIs
MTEgKzM1MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBUaW1lIHRvIGluc2VydCBnaG9z
dGllcyBmb3IgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBrZXB0IGFsaXZlIGluIGNhc2Ugd2UgT1NS
CiAgICAgICAgICAgICAvLyBleGl0IHByaW9yIHRvIGhpdHRpbmcgdGhlIGZpcnN0QmxvY2sncyB0
ZXJtaW5hbCwgYW5kIGVuZCB1cCBnb2luZyBkb3duIGEKICAgICAgICAgICAgIC8vIGRpZmZlcmVu
dCBwYXRoIHRoYW4gc2Vjb25kQmxvY2suCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmly
c3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9j
YWxzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ss
IGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIGtlZXBP
cGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmln
aW4sIGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmRGb3JJbmRleChpKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2Vj
b25kQmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBhNmNjN2RlY2E3MDI0ODhmOGUxYzJh
MGI2NzBiZjk5Zi4uNjAwMzMyZjE5MGZmOGI0MDQyY2Q1NDJhYjk1YjUwNTM2YWQ3YTc5NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjc0
LDYgKzI3NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9jYXRjaDoK
ICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgor
ICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6CiAg
ICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2df
c2hhZG93X2NoaWNrZW5fdGFpbDoKICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKQEAgLTMxMSw2
ICszMTMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29k
ZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2UgY2hlY2twb2ludF9v
c3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lOgogICAgIGNhc2UgY2hlY2twb2lu
dF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNhc2UgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfY2FsbF9yZXR1cm5f
bG9jYXRpb246CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNh
c2Ugb3BfY2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGQ3ZGUyNzFkYjA5OTYxNGI1YmM1
YTk4N2NhY2IyZDhlOGVmODY3MC4uNWEzYWJkMzlhNTY0ODllOWExMzdiNmE2MjllZTQ1YzEwMzM0
MGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0yNDExLDcgKzI0MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBJ
ZGVudGl0eVdpdGhQcm9maWxlOiB7Ci0gICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRm9yQWxsS2lsbHMuaAppbmRleCBiZjQzNTBjNGNkMTdlM2Q1MDA2NjM4ZjU1YWFjMzVhNTY1
Mjk5NGExLi5kOWM5NzQyOGZkNmFlNWVhNTA2ZDA1NzI2NzMwMjBkZDFhZmYxMTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3Jl
LCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoYmVmb3JlSW5saW5lQ2FsbEZyYW1lKTsKICAgICAg
ICAgaWYgKGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpIHsKICAgICAgICAgICAg
IEFTU0VSVChiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSAhPSBhZnRlci5ieXRl
Y29kZUluZGV4KCkuY2hlY2twb2ludCgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSA9PSBhZnRlci5ieXRlY29kZUluZGV4
KCkub2Zmc2V0KCksICJXaGVuIHRoZSBERkcgZG9lcyBjb2RlIG1vdGlvbiBpdCBzaG91bGQgY2hh
bmdlIHRoZSBmb3JFeGl0IG9yaWdpbiB0byBtYXRjaCB0aGUgc3Vycm91bmRpbmcgYnl0ZWNvZGVz
LiIpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJbmRl
eCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSB8fCBub2RlQWZ0
ZXItPm9wKCkgPT0gRXhpdE9LIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBJbnZhbGlkYXRpb25Qb2lu
dCwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNob3VsZCBjaGFuZ2UgdGhlIGZv
ckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBieXRlY29kZXMuIik7CiAKICAg
ICAgICAgICAgIGF1dG8gbGl2ZUJlZm9yZSA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29k
ZUJsb2NrLCBiZWZvcmUuYnl0ZWNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGF1dG8gbGl2ZUFm
dGVyID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGFmdGVyLmJ5dGVjb2Rl
SW5kZXgoKSk7CkBAIC0xMDIsOCArMTAyLDYgQEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFmdGVyLmJ5
dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCksICJUcmFuc2l0aW9uaW5nIGFjcm9zcyBhIGNoZWNr
cG9pbnQgYnV0IGJlZm9yZSBhbmQgYWZ0ZXIgZG9uJ3Qgc2hhcmUgYW4gaW5saW5lQ2FsbEZyYW1l
LiIpOwotCiAgICAgLy8gRGV0ZWN0IGtpbGxzIHRoZSBzdXBlciBjb25zZXJ2YXRpdmUgd2F5OiBp
dCBpcyBraWxsZWQgaWYgaXQgd2FzIGxpdmUgYmVmb3JlIGFuZCBkZWFkIGFmdGVyLgogICAgIEJp
dFZlY3RvciBsaXZlQWZ0ZXIgPSBncmFwaC5sb2NhbHNBbmRUbXBzTGl2ZUluQnl0ZWNvZGUoYWZ0
ZXIpOwogICAgIHVuc2lnbmVkIG51bUxvY2FscyA9IGdyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggMjAyZDIyNTA1M2ZhOWRmYmU1
YzIzYzY0YmNmOGJlMzg0ZTNlNzY1NC4uN2NjMzRhZTJkMGQ0ZTVmODQ4ZTY5NTczMDI0OTJjMTIx
ZDcxZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKEJhc2ljQmxvY2sqIGJhc2ljQmxvY2spCiAgICAgQVNT
RVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2lj
QmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNC
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFs
dWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZU
bXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZU
bXBzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mVG1wcygpKTsKKyAgICBB
U1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09IGJhc2lj
QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSk7CiAKICAgICBtX2Fic3RyYWN0
VmFsdWVzLnJlc2l6ZSgpOwogCkBAIC0xNjEsNiArMTY0LDEwIEBAIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmxvY2FsKGkpLmNsZWFyKCk7CiAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRh
aWwubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZlRtcHMoKTsgKytpKSB7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQudG1wKGkpLmNsZWFyKCk7CisgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwudG1wKGkpLmNsZWFyKCk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7CkBAIC0xNzUsMTMgKzE4Miw5IEBAIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICBibG9jay0+Y2ZhVGhpbmtzU2hvdWxkVHJ5
Q29uc3RhbnRGb2xkaW5nID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKICAgICAgICAgYmxvY2stPmNm
YVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50
KGkpLmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICAgICAg
YmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2st
PnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGJs
b2NrLT52YWx1ZXNBdEhlYWRbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNB
dFRhaWxbaV0uY2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM5LDcgKzI0Miw3IEBA
IGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFsdWUgZnJvbSBoZWFkIHRvIHRhaWwu
Ci0gICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSB2YXJpYWJsZUF0KGluZGV4KTsKKyAgICAg
ICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGF0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMzA0LDcgKzMwNyw3
IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBibG9jay0+dmFsdWVzQXRUYWlsW2ldID0gdmFyaWFibGVBdChpKTsKKyAgICAgICAgICAgIGJs
b2NrLT52YWx1ZXNBdFRhaWxbaV0gPSBhdEluZGV4KGkpOwogICAgICAgICB9CiAKICAgICAgICAg
Zm9yIChOb2RlQWJzdHJhY3RWYWx1ZVBhaXImIHZhbHVlQXRUYWlsIDogYmxvY2stPnNzYS0+dmFs
dWVzQXRUYWlsKQpAQCAtMzQzLDYgKzM0Niw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6
Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgICAgICBkYXRhTG9n
KCIgICBNZXJnaW5nIGZyb20gIiwgcG9pbnRlckR1bXAoZnJvbSksICIgdG8gIiwgcG9pbnRlckR1
bXAodG8pLCAiXG4iKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9m
QXJndW1lbnRzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpKTsK
ICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gdG8t
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NFUlQoZnJvbS0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZUbXBzKCkpOwogICAgIAogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgIApAQCAtMzUy
LDE0ICszNTYsOSBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2Nr
KiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKICAgICAKICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3Jt
KSB7CiAgICAgY2FzZSBUaHJlYWRlZENQUzogewotICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVu
dCA9IDA7IGFyZ3VtZW50IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRz
KCk7ICsrYXJndW1lbnQpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9u
ID0gdG8tPnZhbHVlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9tLT52YWx1
ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpLCB0by0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGFyZ3VtZW50KSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwg
PCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewotICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmxv
Y2FsKGxvY2FsKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5C
bG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5sb2NhbChsb2NhbCksIHRvLT52
YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubG9jYWwo
bG9jYWwpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGZyb20tPnZh
cmlhYmxlc0F0VGFpbC5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIEFic3RyYWN0VmFs
dWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVhZC5hdChpbmRleCk7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9uLCBmcm9t
LT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpLCB0by0+dmFyaWFibGVzQXRIZWFkLmF0KGluZGV4KSwg
ZnJvbS0+dmFyaWFibGVzQXRUYWlsLmF0KGluZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oCmluZGV4IDE4NjVlNmExZWZmYzNkYWFlZmU1ODRjYTg2MmM0OWJjMzY4
NTg1MDAuLmM1ZDAyNjg3M2UwMTBkMDdmMzgxMWM2YzRmZWY1NjZlMWNhNzBmOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgK
QEAgLTE1OCwxMCArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGVyYW5kczxBYnN0cmFj
dFZhbHVlPiYgdmFyaWFibGVzRm9yRGVidWdnaW5nKCk7CiAKKyAgICB1bnNpZ25lZCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZkFyZ3VtZW50
cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZUbXBzKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYWJsZXMubnVtYmVyT2ZUbXBzKCk7IH0KICAgICAKLSAgICBB
YnN0cmFjdFZhbHVlJiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkKKyAgICBBYnN0cmFjdFZhbHVl
JiBhdEluZGV4KHNpemVfdCBpbmRleCkKICAgICB7CiAgICAgICAgIGFjdGl2YXRlVmFyaWFibGVJ
Zk5lY2Vzc2FyeShpbmRleCk7CiAgICAgICAgIHJldHVybiBmYXN0Rm9yd2FyZChtX3ZhcmlhYmxl
c1tpbmRleF0pOwpAQCAtMTY5LDE3ICsxNzEsMTcgQEAgcHVibGljOgogCiAgICAgQWJzdHJhY3RW
YWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gdmFy
aWFibGVBdChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOworICAgICAgICByZXR1
cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5vcGVyYW5kSW5kZXgob3BlcmFuZCkpOwogICAgIH0KICAg
ICAKICAgICBBYnN0cmFjdFZhbHVlJiBsb2NhbChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAg
ICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5sb2NhbEluZGV4KGluZGV4KSk7CisgICAg
ICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5kZXgpKTsKICAgICB9
CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXQobV92YXJpYWJsZXMuYXJndW1lbnRJbmRleChpbmRl
eCkpOworICAgICAgICByZXR1cm4gYXRJbmRleChtX3ZhcmlhYmxlcy5hcmd1bWVudEluZGV4KGlu
ZGV4KSk7CiAgICAgfQogICAgIAogICAgIC8vIENhbGwgdGhpcyBiZWZvcmUgYmVnaW5uaW5nIENG
QSB0byBpbml0aWFsaXplIHRoZSBhYnN0cmFjdCB2YWx1ZXMgb2YKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAppbmRleCBmNWVlZjJmM2RmNzIxMjlhODM4Yzc2ODZl
MjZiOTYwYjUwZjU4MWVlLi43YTMzNjY2YWE3MWExZjY2NmM5NGIyOGI2NDQ3NDg0ZDY3YmJiN2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCkBAIC03Nyw2
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGF6eUpTVmFsdWUgbmV3U3RyaW5nKEdyYXBo
JiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBMYXppbmVzc0tpbmQga2luZCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZDsgfQorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRUeXBlKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtub3duVmFsdWUgPyBTcGVjQnl0ZWNvZGVUb3AgOiBTcGVjU3Ry
aW5nOyB9CiAgICAgCiAgICAgRnJvemVuVmFsdWUqIHRyeUdldFZhbHVlKEdyYXBoJikgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUy
ZGJkZDliOTM3MGQ2ZGU2NTNjNWE0ODg3MTE3MDBlOGI4NzliLi41MjIzNGI0YTVkM2Y2OTc2YzJm
YTk5ODE2ZGNlMTEwNjgxMDU0ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKQEAgLTQ4LDExICs0OCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292
ZXJ5SW5kZXgpCitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2Ug
anNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUs
IFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNv
dmVyeUluZGV4LCB1bnNpZ25lZCBkZmdJUkluZGV4KQogICAgIDogT1NSRXhpdEJhc2Uoa2luZCwg
aml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3Jp
Z2luLndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAg
ICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fcmVjb3ZlcnlJbmRleChy
ZWNvdmVyeUluZGV4KQorICAgICwgbV9kZmdJUkluZGV4KGRmZ0lSSW5kZXgpCiAgICAgLCBtX3N0
cmVhbUluZGV4KHN0cmVhbUluZGV4KQogewogICAgIGJvb2wgY2FuRXhpdCA9IGppdC0+bV9vcmln
aW4uZXhpdE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCA5ZTli
Y2VhNDgxYzFkNjg3Nzk3MmYyNTlkNjJjMWEyMzAwYjJiMTYxLi44Y2U4YjkyMDc5YWY3NTI5OTcw
M2YxN2ZkZGFlMmZlYzNiOWMyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1
Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSosIHZvaWQqLCB2b2lkCiAvLyBUaGlz
IHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGggYnkK
IC8vIGdvaW5nIGludG8gYmFzZWxpbmUgY29kZS4KIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9T
UkV4aXRCYXNlIHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOworICAgIE9TUkV4aXQoRXhp
dEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1
bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgg
PSBVSU5UX01BWCwgdW5zaWduZWQgZGZnSVJJbmRleCA9IFVJTlRfTUFYKTsKIAogICAgIGZyaWVu
ZCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQoQ2FsbEZyYW1lKik7
CiAKQEAgLTE1OSw2ICsxNTksNyBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFz
ZSB7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAg
ICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV9kZmdJUklu
ZGV4OwogCiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBjb2RlTG9jYXRp
b25Gb3JSZXBhdGNoKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCAxZGYzOTQzMjQxZDVhZjc5
MzE5OGVmOWM3MTI3M2U3NThhMGEyMjZhLi4wODVkYzUzMGIzYmMzNzlmYjRmM2U2MDkxY2I1YzY1
MjAyNzU4N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xNTksOSArMTU5LDE1IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIo
KSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7Ci0g
ICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgotICAgICAgICAgICAganVtcFRhcmdl
dCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAgY2FzZSBJbmxpbmVD
YWxsRnJhbWU6OkNhbGw6IHsKKyAgICAgICAgICAgIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2Rl
SUQoKSA9PSBvcF9jYWxsKQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRV
Uk5fTE9DQVRJT04ob3BfY2FsbCk7CisgICAgICAgICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rp
b24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3Jfb3Blbik7CisgICAgICAg
ICAgICBlbHNlIGlmIChjYWxsSW5zdHJ1Y3Rpb24ub3Bjb2RlSUQoKSA9PSBvcF9pdGVyYXRvcl9u
ZXh0KQorICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBMTElOVF9SRVRVUk5fTE9DQVRJT04o
b3BfaXRlcmF0b3JfbmV4dCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0OgogICAgICAgICAgICAganVtcFRhcmdl
dCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3QpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0yMzksNiArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAg
fQogICAgIH0KIAorICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKICAgICByZXR1cm4ganVtcFRhcmdl
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZTQ5YzMxMzAzNjkxYjZiZjI0Y2E5
ZWFiODUyYWUxMzhiZTY2ZjEyLi5kYzBlMWZmODczMWUyNzBhZGYzODhiYmU0MmRhOWFiZjE2MDVi
MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTEwNCw2ICsxMTA0LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2Rl
Qnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7Cisg
ICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmxhenlKU1ZhbHVlKCkuc3Bl
Y3VsYXRlZFR5cGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoK
ICAgICAgICAgY2FzZSBUb1N0cmluZzoKQEAgLTEzMDgsNyArMTMxNCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJl
Z0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTTog
ewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRo
aXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uCiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9jdXJyZW50Tm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSBkdXJpbmcgcHJlZGljdGlvbiBwcm9wYWdh
dGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAw
ZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiLi45YWU5ODA0Yzc1Yjk1ZWM1
NjFlZDJmMWE1MmI5ZGVjOThjODQ1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkYXRh
TG9nRigiKSA9PSAoJXMgPSAiLCAjcmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRhTG9nKHJpZ2h0
KTsgXAogICAgICAgICAgICAgZGF0YUxvZ0YoIikgKCVzOiVkKS5cbiIsIF9fRklMRV9fLCBfX0xJ
TkVfXyk7IFwKKyAgICAgICAgICAgIGRhdGFMb2coIlxuXG5cbiIpOyBcCisgICAgICAgICAgICBt
X2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG51bGxwdHIpLT5kdW1wQnl0ZWNvZGUoKTsgXAog
ICAgICAgICAgICAgZHVtcEdyYXBoSWZBcHByb3ByaWF0ZSgpOyBcCiAgICAgICAgICAgICBXVEZS
ZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5D
VElPTiwgI2xlZnQgIiA9PSAiICNyaWdodCk7IFwKICAgICAgICAgICAgIENSQVNIKCk7IFwKQEAg
LTU2OCw2ICs1NzAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4g
Z2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsK
ICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4gc2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNM
aWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1w
cygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBi
bG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVz
QXRIZWFkLnRtcChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CisgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQorICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWls
LnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKS0+YWNjZXNzZXNTdGFjayht
X2dyYXBoKSk7CisKKyAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0aW9ucy50bXAoaSkgPSBu
b3RTZXQ7CisgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMudG1wKGkpID0gbm90U2V0
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
aSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkgfHwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQpAQCAtNzE2
LDYgKzcyNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09
IExvYWRTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCisgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlv
bnMsIE9wZXJhbmQ6OnRtcChpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50
cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCiAgICAgICAgICAgICAg
ICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlvbnMsIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CkBAIC05NDQsNyArOTU5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tPcGVyYW5kKAogICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jaywgT3BlcmFuZHM8c2l6ZV90PiYgZ2V0TG9jYWxQb3NpdGlvbnMsCi0gICAgICAgIE9w
ZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkKKyAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIE9wZXJhbmQg
b3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChnZXRMb2NhbFBvc2l0aW9ucy5vcGVyYW5kKG9w
ZXJhbmQpID09IG5vdFNldCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIKaW5kZXggNGE4YjFlNTgxNDQxZmRhNjg3NmU2NTJjOTg0NjAxYTJi
M2I3OWQzNC4uOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEwYzgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzNyw2ICsxMzcsNyBAQCBtb2R1
bGUgRFNMCiAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiR2V0QnlWYWxI
aXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9NZXRhZGF0YS5yYgppbmRleCA3Y2QxNWQzMTVkNjM5MGFiYTI2MzVlOTYzNTlm
ODkwZTJlYjcxYTk1Li5jMDc3NWQ4ZTFiMTA1MDJkZjAxYTc0YWYwYzZkZWI0YTg3NWNjNjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKQEAgLTY3LDYg
KzY3LDcgQEAgY2xhc3MgTWV0YWRhdGEKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0
YWRhdGEpOwogCiAgICAgcHVibGljOgorICAgICAgICAje29wLm9wY29kZUlEfQogICAgICAgICBN
ZXRhZGF0YShjb25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29wIiBpZiBpbml0c30p
I3tpbml0c30geyB9CiAKICN7ZmllbGRzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9TZWN0aW9uLnJiCmluZGV4IDliNWVlOTA5NmVlNzFiMWIwZDNlZDdmN2NkMThkYjA2ZmNiMzVm
Y2YuLmY4MzgwZWQ1NzVkMzEzYzZlYTA2YWI1ZDcyYzI1YTg2Nzc2ZDljYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTUzLDcgKzUzLDE3IEBAIGNs
YXNzIFNlY3Rpb24KICAgZW5kCiAKICAgZGVmIHNvcnQhCi0gICAgICBAb3Bjb2RlcyA9IEBvcGNv
ZGVzLnNvcnQgeyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/
IDAgOiAxIDogLTEgfQorICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8Cisg
ICAgICAgICAgcmVzdWx0ID0gbmlsCisgICAgICAgICAgaWYgYS5jaGVja3BvaW50cyBvciBiLmNo
ZWNrcG9pbnRzCisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMgd2l0aCBjaGVja3BvaW50
cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3thLm5hbWV9IiBpZiBhLmNoZWNrcG9pbnRzIGFuZCBh
Lm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hl
Y2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7Yi5uYW1lfSIgaWYgYi5jaGVja3BvaW50
cyBhbmQgYi5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmVzdWx0ID0gYS5jaGVja3Bv
aW50cyA/IGIuY2hlY2twb2ludHMgPyAwIDogLTEgOiAxCisgICAgICAgICAgZWxzaWYKKyAgICAg
ICAgICAgICAgcmVzdWx0ID0gYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/
IDAgOiAxIDogLTEgCisgICAgICAgICAgZW5kCisgICAgICAgICAgcmVzdWx0CisgICAgICB9CiAg
ICAgICBAb3Bjb2Rlcy5lYWNoKCY6Y3JlYXRlX2lkISkKICAgZW5kCiAKQEAgLTczLDYgKzgzLDE4
IEBAIGNsYXNzIFNlY3Rpb24KICAgICAgIGVuZAogCiAgICAgICBpZiBjb25maWdbOmVtaXRfaW5f
c3RydWN0c19maWxlXQorICAgICAgICAgIGkgPSAwCisgICAgICAgICAgd2hpbGUgdHJ1ZQorICAg
ICAgICAgICAgICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50cworICAgICAgICAgICAgICAgICAg
b3V0IDw8ICJcbiIKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBOVU1CRVJfT0Zf
I3tjb25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fV0lUSF9DSEVDS1BPSU5UUyAje2l9XG4i
CisgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbmQKKworICAgICAgICAg
ICAgICBpICs9IDEKKyAgICAgICAgICBlbmQKKyAgICAgICAgICBvdXQgPDwgIlxuIgorCiAgICAg
ICAgICAgb3V0LndyaXRlKCIjZGVmaW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2Nv
bXBvbmVudF19X01FVEFEQVRBX1NJWkUobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAg
ICAgICAgICAgd2hpbGUgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYx
Yjg5YmY5YTFhMTk1YzNlODM4NjRjMWNhMTc4NDA4YTViMGYuLjhiM2EyMzhhNGRhZjFmYzY3OTE0
MGQ4YmJlYzc3MDliODU2OGJiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI2
MSw3ICsyNjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IG1fbGFiZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKV0gPSBsYWJlbCgpOwogCiAgICAgICAg
IGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiT2xkIEpJ
VCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChs
b25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQg
ZW1pdHRpbmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9u
ZylkZWJ1Z09mZnNldCgpKTsKIAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtNDM4LDYgKzQzOCw5IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9pbnRlcm5h
bF9maWVsZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9pbnRlcm5hbF9maWVsZCkKIAorICAg
ICAgICBERUZJTkVfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5FX09QKG9wX2l0
ZXJhdG9yX25leHQpCisKICAgICAgICAgREVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5F
X09QKG9wX3JzaGlmdCkKICAgICAgICAgREVGSU5FX09QKG9wX3Vuc2lnbmVkKQpAQCAtNTI1LDcg
KzUyOCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAg
ICByYXJlQ2FzZVByb2ZpbGUgPSAmcmFyZUNhc2VQcm9maWxlcy5hdChieXRlY29kZUNvdW50SGF2
aW5nU2xvd0Nhc2UpOwogCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAg
ICAgICAgIGRhdGFMb2dMbigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0
ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAg
ICAgICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1f
Ynl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAg
ICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNl
dEZvckJ5dGVjb2RlU2xvd1BhdGgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBsYWJlbCgpKTsK
QEAgLTU4OSw2ICs1OTIsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wdXRfdG9fc2NvcGUpCiAKKyAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9p
dGVyYXRvcl9uZXh0KQorCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHVuc2lnbmVk
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChpbmMpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9TTE9XX09QKGRlYykKQEAgLTYyNiw4ICs2MzIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJBdCAiLCBmaXJzdFRvLCAiIHNsb3c6ICIsIGl0ZXIgLSBtX3Ns
b3dDYXNlcy5iZWdpbigpLCAiXG4iKTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01F
U1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvICE9IGl0ZXItPnRvLCAi
Tm90IGVub3VnaCBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvID09IChpdGVyIC0gMSktPnRvLCAi
VG9vIG1hbnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBm
aXJzdFRvLm9mZnNldCgpICE9IGl0ZXItPnRvLm9mZnNldCgpLCAiTm90IGVub3VnaCBqdW1wcyBs
aW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRShmaXJzdFRvLm9mZnNldCgpID09IChpdGVyIC0gMSktPnRvLm9mZnNldCgpLCAi
VG9vIG1hbnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwogICAgICAgICAK
ICAgICAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGFkZDMyKFRy
dXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKCZyYXJlQ2FzZVByb2ZpbGUtPm1fY291bnRl
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzA3MzU1YzZkNzExODJhYTA3MjlhMjc0
OTEwMDRmNDVlMWVhNmFjMS4uODNhZTFhN2I2OThkNjkzM2RiYjhhMDM3MTkwNDllYzIyNTgxOGY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yOTcsNiArMjk3LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7
CiAKKyAgICAgICAgdm9pZCBjaGVja3BvaW50UmVhY2hlZCgpOworICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKKwogICAgICAgICB2b2lkIGFkZFNsb3dD
YXNlKEp1bXApOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKGNvbnN0IEp1bXBMaXN0Jik7CiAg
ICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoKTsKQEAgLTY3Niw2ICs2NzksMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOwog
CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworCiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNo
aWZ0U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIApAQCAtOTExLDYgKzkxOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOwogICAgICAgICBW
ZWN0b3I8TGFiZWw+IG1fbGFiZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIExh
YmVsPiBtX2NoZWNrcG9pbnRMYWJlbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkR2VuZXJh
dG9yPiBtX2dldEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlWYWxHZW5lcmF0b3I+IG1f
Z2V0QnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBt
X2dldEJ5SWRzV2l0aFRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRl
eCBlMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNiMjBiODY2Li43ODc1Yzk5NjBmYmI3
YTAwOTU3MjVjNjgxOWI4ZmI4ZjRiNjEwMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBVU0UoSlNWQUxVRTY0KQogI2luY2x1ZGUg
IkpJVC5oIgogCisjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKKyNp
bmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFt
ZVNodWZmbGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgpAQCAtNDIsOCArNDQsOCBAQAogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAj
aW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIK
LSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTEsNyArNTMsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjplbWl0UHV0Q2FsbFJlc3VsdChjb25zdCBP
cCYgYnl0ZWNvZGUpCiB7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jaykpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9kc3QpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25Gb3IoYnl0ZWNv
ZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZpcnR1YWxSZWdpc3RlcigpLCByZWdU
MCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtNjEsMjAgKzYzLDIxIEBAIHN0ZDo6
ZW5hYmxlX2lmX3Q8CiAsIHZvaWQ+CiBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBi
eXRlY29kZSwgQ2FsbExpbmtJbmZvKikKIHsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50ID0gbV9i
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJnQ291bnQgPSBieXRlY29kZS5tX2Fy
Z2M7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0ZWNvZGUu
bV9hcmd2KTsKKyAgICBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpOworICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5
dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX2NhbGwg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldEluY2x1ZGluZ1RoaXMoMCkpLCByZWdUMCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgICAgIHN0b3JlMzIocmVnVDAsIG1l
dGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLmFkZHJlc3NPZkxhc3RTZWVuU3Ry
dWN0dXJlSUQoKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAsIGFycmF5UHJvZmlsZUZvcihtZXRh
ZGF0YSwgY2hlY2twb2ludCkuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAg
ICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVn
aXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudEluY2x1ZGluZ1RoaXMp
LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiB9CiAKIApAQCAtMjA3
LDcgKzIxMCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiB7CiAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0ZWNvZGUubV9jYWxsZWU7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGNhbGxlZUZvcihieXRlY29kZSwgbV9ieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKICAgICAvKiBDYWxsZXIgYWx3YXlzOgogICAgICAg
ICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNhbGxGcmFtZS4KQEAgLTIz
NCw5ICsyMzcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KICAgICBzdG9y
ZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSk7CiAKLSAgICBpZiAoY29tcGlsZUNhbGxFdmFsKGJ5dGVjb2RlKSkgewor
ICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAgICAgRGF0YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAg
SnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgcmVnVDAsIGFkZHJl
c3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwpAQCAtMzgw
LDYgKzM4MiwxODQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBjb21waWxlT3BDYWxs
U2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlu
a0luZm9JbmRleCsrKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAo
WyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAg
ICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93OworICAg
ICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2Owor
ICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMy
OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSkoKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlGYXN0RnVuY3Rp
b24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5v
dEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGNvbXBpbGVPcENh
bGw8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwor
ICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1bHQgKGl0ZXJhdG9yKSBp
cyBpbiByZWdUMAorCisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmdm0oKS5wcm9wZXJ0
eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBt
X2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9uZXh0KTsKKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9y
T3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgZW1p
dEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKworICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJh
dG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFZSZWcgPSBieXRlY29kZS5tX25l
eHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNb
bV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9u
ID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkpIHsKKyAg
ICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdzsK
KyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUx
NjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dp
ZGUzMjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0pKCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fbmV4dCwgcmVnVDApOworICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5
KHJlZ1QwKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlGYXN0RnVuY3Rpb24pPihp
bnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFs
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGdlbmVyaWNDYXNlLmxpbmso
dGhpcyk7CisgICAgb3I4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihJdGVyYXRp
b25Nb2RlOjpHZW5lcmljKSksIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9pdGVyYXRpb25N
ZXRhZGF0YS5zZWVuTW9kZXMpKTsKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0b3JOZXh0Pihp
bnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBjaGVja3BvaW50UmVhY2hl
ZCgpOworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRvbmUsIHZhbHVlIH0gSlNPYmplY3QpIGluIHJl
Z1QwCisKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgaXRlclJlc3Vs
dEdQUiA9IHJlZ1QyOworICAgIEdQUlJlZyBkb25lR1BSID0gcmVnVDE7CisgICAgLy8gaXRlclJl
c3VsdEdQUiB3aWxsIGdldCB0cmFzaGVkIGJ5IHRoZSBmaXJzdCBnZXQgYnkgaWQgYmVsb3cuCisg
ICAgbW92ZSh2YWx1ZUdQUiwgaXRlclJlc3VsdEdQUik7CisKKyAgICB7CisgICAgICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyUmVzdWx0R1BSKTsKKworICAgICAgICBSZWdpc3Rl
clNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpOworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7CisgICAgICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMt
Pm5leHQuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRv
bmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
ICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fZG9uZSwgZG9uZUdQUik7CisgICAgICAgIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgfQor
CisKKyAgICB7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOworICAgICAgICBHUFJS
ZWcgc2NyYXRjaDIgPSByZWdUMzsKKyAgICAgICAgY29uc3QgYm9vbCBzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBmYWxzZTsKKyAgICAgICAgSnVtcExpc3QgaXRlcmF0aW9uRG9u
ZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKworICAgICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKworICAgICAgICBpdGVyYXRp
b25Eb25lLmxpbmsodGhpcyk7CisgICAgfQorCisgICAgZmFzdENhc2UubGluayh0aGlzKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9w
SXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsK
KyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgeworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9uZVZSZWcgPSBieXRlY29kZS5tX2RvbmU7CisgICAgICAg
IEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisKKyAgICAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKKyAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAgICAgICBub3RPYmplY3Qu
YXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7CisgICAgICAgIG5vdE9iamVj
dC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOworCisgICAgICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7
CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlk
SW5kZXgrK107CisgICAgICAgIAorICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVW
UmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CisgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9y
Q2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAgIG5vdE9iamVjdC5saW5rKHRoaXMpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVj
dCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpKTsKKyAgICB9CisK
KyAgICB7ICAgCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgICAgIFZpcnR1
YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOworICAgICAgICBHUFJSZWcg
aXRlclJlc3VsdEdQUiA9IHJlZ1QwOworCisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVu
dCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CisgICAgfQorCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApp
bmRleCA5MDY5NmNiZWMxMGUzOTNiOTk3MGYwZWIyMDExOGQyMTk3NGMzNTI1Li5kMTQwYWFjOWJl
MmQ1NDAzZDFiYzBkOTkxMmFlOWUxMDVmODBkNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0zNjYsNiArMzY2LDI2IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFCiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1
NjU1MzNmNC4uNGI5NGFiODQxZmQxNTE0OGQ0YTMyM2UxMzgxZDIzNTk3ZjMwYTlhNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFn
bWEgb25jZQogCiAjaWYgRU5BQkxFKEpJVCkKKyNpbmNsdWRlICJCeXRlY29kZU9wZXJhbmRzRm9y
Q2hlY2twb2ludC5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKKyNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMTA1LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2Vk
VGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQogCiBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewotICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgdWludDMyX3QgbG9j
YXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLmJpdHMo
KTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAKICAgICAvLyBGSVhN
RTogSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5k
IHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwgZnJhbWUgb24KQEAgLTE4Myw2ICsxODUsMjUgQEAgQUxX
QVlTX0lOTElORSBib29sIEpJVDo6aGFzQW55U2xvd0Nhc2VzKFZlY3RvcjxTbG93Q2FzZUVudHJ5
PiYgc2xvd0Nhc2VzLCBWZWN0b3IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lk
IEpJVDo6Y2hlY2twb2ludFJlYWNoZWQoKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9i
eXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBo
b3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldCIp
OworICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpICsgMSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IG1fY2hlY2twb2ludExhYmVscy5hZGQobV9ieXRlY29kZUluZGV4LCBsYWJlbCgpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitpbmxp
bmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wIGp1bXApCit7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBz
aG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28g
dGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0
ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVj
a3BvaW50KCkgKyAxKTsKKworICAgIGF1dG8gaXRlciA9IG1fY2hlY2twb2ludExhYmVscy5maW5k
KG1fYnl0ZWNvZGVJbmRleCk7CisgICAgQVNTRVJUKGl0ZXIgIT0gbV9jaGVja3BvaW50TGFiZWxz
LmVuZCgpKTsKKyAgICBqdW1wLmxpbmtUbyhpdGVyLT52YWx1ZSwgdGhpcyk7Cit9CisKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmFkZFNsb3dDYXNlKEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQo
bV9ieXRlY29kZUluZGV4KTsgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1
cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlz
IHNldC4KQEAgLTMxOSw3ICszNDAsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIGlmICghc2hvdWxkRW1pdFByb2Zp
bGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YS5tX3Byb2ZpbGUpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodmFsdWVQcm9maWxl
Rm9yKG1ldGFkYXRhLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSk7CiB9CiAKIGlubGlu
ZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2Vs
bCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2FlMTUw
Y2M2NjEwNzYyYmFjYzhiZTQyMjA3M2FhZDY0YWIzMTE5MS4uYTVlMmEyNDdjZjE1NGRhNDZlYjMz
ZGZiYmYwZTMzNjBkMzZmNTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0xMzQsNiArMTM0LDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xv
CiAgICAgQVNTRVJUKHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKIH0KIAordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5
MDIyNjY1Li45ZmNjNDFkZWM0NTgyYzk2NTI5MjM2NTVkYThmMzAyNjk1ZGY3MDE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTU1LDYgKzE1NSw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlv
bkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRpb24oVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmso
SlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgV1RGX0lO
VEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93
RXJyb3IoQ29kZUJsb2NrKikgV1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNhbGxBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggOGRl
YTdmMjc4ZTc2NjJlNTAzMTRjZWI5YjA4MzM5Zjg3YmZkYTQ5Ny4uNzlmYTYwMjE3MmIxMWE0ODRj
NDRiNGE4ZTRiZmM2YTUyZTNiYmQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcnJh
eUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRl
ICJCeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIkNoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmgiCiAjaW5jbHVkZSAiQ29t
bW9uU2xvd1BhdGhzSW5saW5lcy5oIgpAQCAtODIsNiArODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsgXAogICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsg
XAogICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCisgICAg
ZGF0YUxvZ0xuSWYoTExJTlRfVFJBQ0lORyAmJiBPcHRpb25zOjp0cmFjZUxMSW50U2xvd1BhdGgo
KSwgIkNhbGxpbmcgc2xvdyBwYXRoICIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOyBcCiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBOREVCVUcK
QEAgLTY5Myw3ICs2OTUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5
X2lkX2RpcmVjdCkKIH0KIAogCi1zdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNo
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE9wR2V0QnlJZDo6TWV0YWRhdGEmIG1ldGFkYXRh
LCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQorc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgSlNDZWxsKiBi
YXNlQ2VsbCwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogCkBA
IC03NDEsNDQgKzc0MywzOSBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNo
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZAogICAgIHsKICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAg
IGlmIChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LnNldFVuc2V0TW9kZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgbWV0YWRhdGEuc2V0VW5zZXRN
b2RlKHN0cnVjdHVyZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHNsb3Qu
aXNWYWx1ZSgpKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnNldFByb3Rv
TG9hZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Quc2xvdEJhc2UoKSk7CisgICAgICAgICAg
ICBtZXRhZGF0YS5zZXRQcm90b0xvYWRNb2RlKHN0cnVjdHVyZSwgb2Zmc2V0LCBzbG90LnNsb3RC
YXNlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVC
bG9jayk7CiB9CiAKLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkK
K3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFk
YXRhJiBtZXRhZGF0YSkKIHsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BHZXRCeUlkPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKTsKLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xv
dDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7Ci0gICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVj
b2RlLm1fZHN0KSA9IHJlc3VsdDsKLSAgICAKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVwogICAgICAg
ICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCiAg
ICAgICAgICYmICFzbG90LmlzVW5zZXQoKSkgewogICAgICAgICB7CiAgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEubW9kZSkgeworICAgICAgICAgICAgc3dpdGNoIChtZXRhZGF0YS5tb2RlKSB7
CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpEZWZhdWx0OgotICAgICAgICAgICAgICAg
IG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3Ry
dWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgR2V0QnlJZE1vZGU6OlVuc2V0OgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEOworICAgICAg
ICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlE
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6
UHJvdG9Mb2FkOgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQ7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IG9sZFN0cnVjdHVyZUlEID0gMDsKQEAgLTc5OSwzNSArNzk2LDEwMyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkg
JiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAvLyBTdGFy
dCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwogCiAgICAg
ICAgICAgICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUgY2FjaGUgZnJvbSBldmVyIGhhcHBlbmlu
Zy4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRD
YWNoaW5nID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5n
ID0gMDsKICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludCgpKSB7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVs
dE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1
cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWZhdWx0
TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JM
TEludENhY2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVU5M
SUtFTFkobWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgc2xvdC5pc1ZhbHVlKCkp
KSB7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSk7CiAK
LSAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JM
TEludENhY2hpbmcpKQorICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0YS5oaXRDb3VudEZvckxM
SW50Q2FjaGluZykpCiAgICAgICAgICAgICAgICAgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUo
Z2xvYmFsT2JqZWN0LCB2bSwgY29kZUJsb2NrLCBwYywgbWV0YWRhdGEsIGJhc2VDZWxsLCBzbG90
LCBpZGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNT
X1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLnNl
dEFycmF5TGVuZ3RoTW9kZSgpOworICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJs
b2NrKTsKICAgICB9CiAKLSAgICBMTElOVF9QUk9GSUxFX1ZBTFVFKHJlc3VsdCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BH
ZXRCeUlkPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJh
bmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBw
ZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVl
LCBpZGVudCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIExMSU5UX1JFVFVSTl9QUk9G
SUxFRChyZXN1bHQpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgaXRlcmF0b3Ig
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgUmVnaXN0
ZXImIG5leHRSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQp
OworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBu
ZXh0UmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5t
X25leHRQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIC8vIFdlIHVzZSBtX3ZhbHVl
IHRvIGhvbGQgdGhlIGl0ZXJhdG9yIHJldHVybiB2YWx1ZSBzaW5jZSBpdCdzIGVpdGhlciBub3Qg
bGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUgb3IgaXQncyBnb2luZyB0byBiZSBmaWxsZWQgbGF0ZXIu
CisgICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX3ZhbHVlKTsKKyAgICBSZWdpc3RlciYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CisKKyAgICBpZiAoIWl0ZXJhdG9yUmV0dXJuLmlz
T2JqZWN0KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKSk7CisK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSwgbWV0
YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICBkb25lUmVnaXN0ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX2RvbmVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgLy8gV2UgdXNl
IG1fdmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVlIHRtcCBzaW5jZSBpdCdz
IGVpdGhlciBub3QgbGl2ZSBwYXN0IHRoaXMgYnl0ZWNvZGUgb3IgaXQncyBnb2luZyB0byBiZSBm
aWxsZWQgbGF0ZXIuCisgICAgUmVnaXN0ZXImIHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9
IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3Jt
TExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4s
IHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0
OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUubV9idWNr
ZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
KwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKIHsKICAgICBMTElO
VF9CRUdJTigpOwpAQCAtMTU2Myw3ICsxNjI4LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlw
ZSBzZXRVcENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2kK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdl
bmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgT3Am
JiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoraW5saW5lIFNsb3dQYXRo
UmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIE9wJiYgYnl0ZWNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgdW5z
aWduZWQgY2hlY2twb2ludEluZGV4ID0gMCkKIHsKICAgICAvLyBUaGlzIG5lZWRzIHRvOgogICAg
IC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KQEAgLTE1NzEsMTYgKzE2MzYsMTYgQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUKICAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3Mg
aW5saW5lIGNhY2hlLgogICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFk
ZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgogICAgIAotICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2NhbGxlZSk7
CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGNhbGxl
ZUZvcihieXRlY29kZSwgY2hlY2twb2ludEluZGV4KSk7CiAgICAgCi0gICAgQ2FsbEZyYW1lKiBj
YWxsZWVGcmFtZSA9IGNhbGxGcmFtZSAtIGJ5dGVjb2RlLm1fYXJndjsKKyAgICBDYWxsRnJhbWUq
IGNhbGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwo
Ynl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCk7CiAgICAgCi0gICAgY2FsbGVlRnJhbWUtPnNldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGJ5dGVjb2RlLm1fYXJnYyk7CisgICAgY2FsbGVlRnJh
bWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsKICAgICBjYWxsZWVGcmFtZS0+dW5j
aGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgPSBjYWxsZWVB
c1ZhbHVlOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZXJGcmFtZShjYWxsRnJhbWUpOwogICAg
IAogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAg
ICByZXR1cm4gc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmbWV0
YWRhdGEubV9jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoY2FsbGVlRnJhbWUs
IGtpbmQsIGNhbGxlZUFzVmFsdWUsICZjYWxsTGlua0luZm9Gb3IobWV0YWRhdGEsIGNoZWNrcG9p
bnRJbmRleCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbCkKQEAg
LTE2MDQsNiArMTY2OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3Ry
dWN0KQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2Rl
QmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wQ29uc3RydWN0PigpLCBDb2RlRm9yQ29uc3RydWN0
KSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3Jf
b3Blbl9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVu
X2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cgb3Blbl9jYWxsIik7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoY29kZUJsb2NrLCBj
YWxsRnJhbWUsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSwgQ29kZUZvckNhbGwsIE9wSXRlcmF0
b3JPcGVuOjpzeW1ib2xDYWxsKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKworLy8gICAgZGF0YUxvZ0xuKCJDYWxsaW5nIHNsb3cg
bmV4dF9jYWxsIik7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJp
Y0NhbGwoY29kZUJsb2NrLCBjYWxsRnJhbWUsIHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKSwgQ29k
ZUZvckNhbGwsIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCkpOworfQorCiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncykKIHsKICAgICBMTElO
VF9CRUdJTigpOwpAQCAtMTk5MCw2ICsyMDc3LDQ0IEBAIHN0YXRpYyB2b2lkIGhhbmRsZVZhcmFy
Z3NDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0
CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fZHN0KSA9IHJlc3VsdDsKIH0K
IAorc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludChWTSYgdm0sIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBPcEl0
ZXJhdG9yT3BlbiYgYnl0ZWNvZGUpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
Ynl0ZWNvZGUubV9pdGVyYXRvcikuanNWYWx1ZSgpOworICAgIGlmICghaXRlcmF0b3IuaXNPYmpl
Y3QoKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEpTVmFsdWUgbmV4dCA9IGl0ZXJhdG9yLmdldChnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4
dCkgPSBuZXh0OworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck5leHRDaGVja3BvaW50
KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IE9wSXRlcmF0b3JOZXh0JiBieXRlY29kZSwgQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGUmIHNpZGVTdGF0ZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgdW5zaWduZWQgY2hlY2twb2ludEluZGV4ID0gc2lkZVN0YXRlLmJ5dGVjb2Rl
SW5kZXguY2hlY2twb2ludCgpOworCisgICAgYXV0byYgdmFsdWVSZWdpc3RlciA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBhdXRvIGl0ZXJhdG9yUmVzdWx0
T2JqZWN0ID0gc2lkZVN0YXRlLnRtcHNbT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHRdOworICAg
IGF1dG8gbmV4dCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX25leHQpLmpzVmFs
dWUoKTsgICAgCisKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobmV4dCwgIldlIHNo
b3VsZCBub3QgT1NSIGV4aXQgdG8gYSBjaGVja3BvaW50IGZvciBmYXN0IGNhc2VzLiIpOworCisg
ICAgYXV0byYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1f
ZG9uZSk7CisgICAgaWYgKGNoZWNrcG9pbnRJbmRleCA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9u
ZSkgeworICAgICAgICBkb25lUmVnaXN0ZXIgPSBpdGVyYXRvclJlc3VsdE9iamVjdC5nZXQoZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7Cisg
ICAgaWYgKGRvbmVSZWdpc3Rlci5qc1ZhbHVlKCkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCkpCisg
ICAgICAgIHZhbHVlUmVnaXN0ZXIgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UKKyAgICAgICAg
dmFsdWVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0LmdldChnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlKTsKK30KKwogaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
blN0cmVhbTo6UmVmIHBjKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFjb2RlQmxvY2stPnZtKCku
ZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKQEAgLTIwNjYsNiArMjE5MSwxNSBAQCBleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdChDYWxs
RnJhbWUqIGNhbGxGcmFtZQogICAgICAgICBoYW5kbGVWYXJhcmdzQ2hlY2twb2ludCh2bSwgY2Fs
bEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcFRhaWxDYWxsVmFyYXJncz4oKSwgKnNpZGVT
dGF0ZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVu
OiB7CisgICAgICAgIGhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwg
Z2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BJdGVyYXRvck9wZW4+KCkpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGhhbmRsZUl0ZXJh
dG9yTmV4dENoZWNrcG9pbnQodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBwYy0+YXM8T3BJ
dGVyYXRvck5leHQ+KCksICpzaWRlU3RhdGUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBicmVhazsKQEAgLTIxMDMsNiArMjIzNywxMiBAQCBleHRlcm4gIkMiIHZvaWQgbGxp
bnRfd3JpdGVfYmFycmllcl9zbG93KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0NlbGwqIGNlbGwp
CiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY2VsbCk7CiB9CiAKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQoreworICAgIGRhdGFMb2dMbihK
U1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKK30KKwogZXh0ZXJuICJDIiBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHZvaWQgbGxpbnRfY3Jhc2goKQogewogICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjU2
OTljMzBkMmNkYWZhNGY5M2MzYTlmMDk4MDU3MWM4MTc2N2MxYS4uZjlhMzRkYWIzNmQ5ZmE1Mjc1
NmExOThiMmQ3NGY3NTJjNTM4YWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgbWFj
cm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgc2l6ZShk
ZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNybyAoZikgZigpIGVu
ZCkKIGVuZAogCi1tYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQorbWFjcm8gY2FsbFRhcmdl
dEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQogICAg
IGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gY2Fs
bGVlCiAgICAgZWxzZQpAQCAtMTA0NSwxMSArMTA0NSwxMSBAQCBtYWNybyBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBj
YWxsUAogICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRp
bmcgaW4gdW5leHBlY3RlZAogICAgICAgICAjIGNyYXNoZXMuCiAgICAgICAgIHJlc3RvcmVTdGFj
a1BvaW50ZXJBZnRlckNhbGwoKQotICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gp
CiAgICAgZW5kCiAgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUp
CiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbChz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gpCiBlbmQKIAogbWFjcm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVt
cDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKQEAgLTExMTcsNyArMTExNywxMSBAQCBtYWNy
byBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRy
VGFnKQogICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKIGVuZAogCi1tYWNybyBzbG93UGF0aEZv
ckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgs
IHByZXBhcmVDYWxsKQorbWFjcm8gc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUs
IG1fZHN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorZW5kCisKK21hY3JvIHNs
b3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKICAgICBjYWxsQ2FsbFNsb3dQYXRoKAogICAgICAgICBzbG93UGF0aCwKICAgICAgICAgIyBU
aG9zZSBhcmUgcjAgYW5kIHIxCkBAIC0xMTI2LDcgKzExMzAsNyBAQCBtYWNybyBzbG93UGF0aEZv
ckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgs
IHByZXBhcgogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwgc3AKICAgICAgICAgICAg
IHByZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgU2xvd1BhdGhQdHJUYWcpCiAgICAgICAg
IC5kb250VXBkYXRlU1A6Ci0gICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5h
bWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQ
dHJUYWcpCisgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3cs
IHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVy
LCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKICAgICAgICAgZW5kKQogZW5kCiAK
QEAgLTIwMTYsNyArMjAyMCw3IEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgZnJhbWVTbG93UGF0aCwgc2xvCiAgICAgICAgICAg
ICBzdWJwIHIxLCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKICAgICAgICAgZW5kCiAgICAgZW5k
Ci0gICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlz
cGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwo
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBh
cmVDYWxsKQogZW5kCiAKIApAQCAtMjA3OSw3ICsyMDgzLDcgQEAgZW5kKQogIyByZXR1cm5zIHRo
ZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgogCiBfbGxpbnRfb3BfY2FsbF9ldmFs
OgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKKyAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCiAgICAg
ICAgIG9wX2NhbGxfZXZhbF9uYXJyb3csCiAgICAgICAgIG5hcnJvdywKICAgICAgICAgT3BDYWxs
RXZhbCwKQEAgLTIwODgsNyArMjA5Miw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgICAg
IHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6Ci0g
ICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAgICAg
b3BfY2FsbF9ldmFsX3dpZGUxNiwKICAgICAgICAgd2lkZTE2LAogICAgICAgICBPcENhbGxFdmFs
LApAQCAtMjA5Nyw3ICsyMTAxLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6CiAgICAg
ICAgIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMzI6
Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKICAgICAg
ICAgb3BfY2FsbF9ldmFsX3dpZGUzMiwKICAgICAgICAgd2lkZTMyLAogICAgICAgICBPcENhbGxF
dmFsLApAQCAtMjEwNyw3ICsyMTExLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMzI6CiAK
IAogY29tbW9uT3AobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQsIG1hY3JvICgpIGVuZCwgbWFj
cm8gKHNpemUpCi0gICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BDYWxsRXZhbCwgbWFjcm8g
KCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxFdmFsLCBtX3Byb2ZpbGUsIG1f
ZHN0LCBtYWNybyAoKQogICAgICAgICBkaXNwYXRjaE9wKHNpemUsIG9wX2NhbGxfZXZhbCkKICAg
ICBlbmQpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDgxODkxYzIyZTYxODNjODA0MmFiZGZj
ZThkNDM5MTFhZjQxZjY1NGEuLjc0YzQ4MGRmMjEyMTcxNjU1MGM1ZmQ0ZjA4NDRhYjExMDhmZGM4
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02Nyw3ICs2Nyw3IEBAIG1hY3JvIG1ha2VSZXR1cm5Q
cm9maWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKICAgICAg
ICAgbW92ZSBwYXlsb2FkLCB0MAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDUsIHQxLCB0MCkKKyAgICAgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0NSwgdDEsIHQwKQogICAgICAgICBnZXQobV9k
c3QsIHQyKQogICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogICAgICAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KQEAgLTc3LDE2ICs3NywxNyBA
QCBlbmQKIAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcg
aW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KLW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlz
cGF0Y2gpCiAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcltQQl0sIFBCCi0gICAgZ2V0KHNpemUsIG9wY29k
ZVN0cnVjdCwgbV9kc3QsIHQzKQorICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1
YWxSZWdpc3RlciwgdDMpCiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAg
ICBzdG9yZWkgcjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBtZXRhZGF0YShzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0
MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIHQyLCByMSwgcjApCiAgICAgZGlzcGF0Y2goKQorCiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1
bmN0aW9uKQpAQCAtNjMyLDkgKzYzMyw5IEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50KHNpemUsIGdldCwgdmFsdWVGaWVsZE5hbWUpCiAgICAgICAgIGVuZCkK
IGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdGFnLCBw
YXlsb2FkKQorbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1l
dGFkYXRhLCB0YWcsIHBheWxvYWQpCiAgICAgc3RvcmVpIHRhZywgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQotICAgIHN0
b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tl
dHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQorICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNl
dFttZXRhZGF0YV0KIGVuZAogCiAKQEAgLTEzNzgsNyArMTM3OSw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwCiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRb
dDVdLCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRC
eUlkRGlyZWN0U2xvdwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0
MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgdDUsIHQwLCB0MSkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAg
ICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xNDAwLDcgKzE0
MDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0
YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0NV0sIHQzCiAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRC
eUlkQXJyYXlMZW5ndGg6CkBAIC0xNDEzLDcgKzE0MTQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdAogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWQsIHQ1LCBJbnQzMlRhZywgdDApCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHQwKQogICAgIHJldHVybihJbnQzMlRh
ZywgdDApCiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE0MjEsNyArMTQyMiw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0CiAgICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0
YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAg
IGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCBVbmRlZmluZWRUYWcsIDApCisgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQogICAgIHJl
dHVybihVbmRlZmluZWRUYWcsIDApCiAKIC5vcEdldEJ5SWREZWZhdWx0OgpAQCAtMTQzMCw3ICsx
NDMxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkaXMgT3BHZXRCeUlkOjpN
ZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3Q1XSwgdDIK
ICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cK
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdl
dEJ5SWRTbG93OgpAQCAtMTQ0MCw3ICsxNDQxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQK
IC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3Bf
Z2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJv
ZmlsZSwgdDIsIHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNTE4LDcg
KzE1MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWws
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBnZXQobV9kc3QsIHNj
cmF0Y2gpCiAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwg
OF0KICAgICAgICAgc3RvcmVpIHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3Jh
dGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIEludDMyVGFnLCBy
ZXN1bHRQYXlsb2FkKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxl
LCB0NSwgSW50MzJUYWcsIHJlc3VsdFBheWxvYWQpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBl
bmQKIApAQCAtMTUyNyw3ICsxNTI4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAg
ICAgZmQyaWkgcmVzdWx0LCBzY3JhdGNoMiwgc2NyYXRjaDMKICAgICAgICAgc3RvcmVpIHNjcmF0
Y2gzLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KICAgICAgICAgc3RvcmVpIHNjcmF0Y2gy
LCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQorICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQogICAgICAgICBk
aXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NzIsNyArMTU3Myw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEpCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKICAgICBkaXNwYXRjaCgpCiAKIC5v
cEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNTg1LDcgKzE1ODYsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4
aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjAp
CiAKIGVuZCkKQEAgLTE5NTcsMTAgKzE5NTgsMTAgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAg
ICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KICAgICAgICAgbW92
ZSB0Mywgc3AKICAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRy
eVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNh
bGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmls
ZSwgbV9kc3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQogCiAgICAgLm9wQ2Fs
bFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgICAgIHNsb3dQYXRo
Rm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3Qs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgZW5kKQogZW5kCiAKQEAgLTIy
ODgsNyArMjI4OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9w
R2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgbWFjcm8gZ2V0UHJv
cGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFu
ZFt0NV0sIHQzCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDMsIHQwLCB0
MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQxLCB0MikK
KyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwg
dDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTIyOTcsNyArMjI5OCw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3Bl
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIFRhZ09mZnNldFt0MF0s
IHQxCiAgICAgICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdDBdLCB0MgogICAgICAgICB0ZHpDaGVj
a0lmTmVjZXNzYXJ5KHQxKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1
LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxl
LCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yMzA1
LDcgKzIzMDYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdl
dEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBPcEdl
dEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQzCiAgICAgICAgIGxvYWRwIEpT
TGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRhZ09mZnNldFt0MCwgdDMsIDhdLCB0MQog
ICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBQYXlsb2FkT2Zm
c2V0W3QwLCB0MywgOF0sIHQyCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
dDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2Zp
bGUsIHQ1LCB0MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTI1
OTQsNiArMjU5NSwxNSBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9w
R2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIHJldHVybihJbnQz
MlRhZywgdDApCiBlbmQpCiAKK2xsaW50T3Aob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9w
ZW4sIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorICAgIGRlZmluZU9TUkV4aXRSZXR1cm5M
YWJlbChvcF9pdGVyYXRvcl9vcGVuLCBzaXplKQorICAgIGJyZWFrCitlbmQpCisKK2xsaW50T3Ao
b3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoKQorICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9uZXh0LCBzaXpl
KQorICAgIGJyZWFrCitlbmQpCiAKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxf
ZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJl
dHVybikKICAgICBnZXQobV9iYXNlLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYWUyZTM3NzNmZmRjYzQw
Njc0YzdhYWMwYzFkNGZlNmNkMGZiNzg1OS4uODYxMzZlODU3YzlmNzgyMmIyNDQ2YzYyNmJmZGM3
YTNkZmJiMmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTY4LDI2ICs2OCwyNiBAQCBtYWNybyBtYWtlUmV0
dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAg
ICAgZm4obWFjcm8gKHZhbHVlKQogICAgICAgICBtb3ZlIHZhbHVlLCB0MwogICAgICAgICBtZXRh
ZGF0YSh0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQxLCB0MykK
KyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMpCiAg
ICAgICAgIGdldChtX2RzdCwgdDEpCiAgICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDEsIDhdCiAg
ICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzW21ldGFkYXRhXQorbWFjcm8gdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB2YWx1ZSkKKyAg
ICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5t
X2J1Y2tldHNbbWV0YWRhdGFdCiBlbmQKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVj
b2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCi1tYWNybyBkaXNw
YXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorbWFjcm8gZGlzcGF0
Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGxvYWRQQygpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJb
UEJdLCBQQgotICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MSkKKyAgICBnZXQo
c2l6ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQxKQogICAgIHN0b3JlcSBy
MCwgW2NmciwgdDEsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDEp
Ci0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKICAgICBkaXNwYXRjaCgp
CiBlbmQKIApAQCAtMTM0MCw3ICsxMzQwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAg
ICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZGkgT3BHZXRCeUlk
RGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0
LCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0
MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTEzNDgs
NTMgKzEzNDgsNTkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBP
cEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBkaXNwYXRjaCgpCiBl
bmQpCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorIyBUaGUgYmFzZSBvYmpl
Y3QgaXMgZXhwZWN0ZWQgaW4gdDMKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0
cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXpl
LCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQyLCB0MSkKLSAgICBsb2FkYiBPcEdl
dEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5tb2RlW3QyXSwgdDEKLSAgICBnZXQobV9i
YXNlLCB0MCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5v
cEdldEJ5SWRTbG93KQorICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVN
ZXRhZGF0YU5hbWUlLm1vZGVbdDJdLCB0MQogCiAub3BHZXRCeUlkRGVmYXVsdDoKICAgICBiYm5l
cSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpEZWZhdWx0LCAub3BHZXRCeUlkUHJvdG9Mb2Fk
CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdl
dEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRFt0
Ml0sIHQwCi0gICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpcyBPcEdl
dEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRb
dDJdLCB0MQorICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0
YU5hbWUlLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEs
IHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFByb3RvTG9hZDoKICAg
ICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRB
cnJheUxlbmd0aAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAg
bG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5z
dHJ1Y3R1cmVJRFt0Ml0sIHQzCi0gICAgYmluZXEgdDMsIHQxLCAub3BHZXRCeUlkU2xvdwotICAg
IGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2Rl
LmNhY2hlZE9mZnNldFt0Ml0sIHQxCi0gICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9t
b2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKKyAgICBsb2FkaSAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2Rl
LnN0cnVjdHVyZUlEW3QyXSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIHNsb3dMYWJlbAorICAgIGxv
YWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xv
YWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwg
dDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5
SWRBcnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJh
eUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2Zp
bGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFy
cmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCAub3BHZXRCeUlk
U2xvdwotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdworICAg
IGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1l
JS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQorICAgIGJ0aXogdDAs
IElzQXJyYXksIHNsb3dMYWJlbAorICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93
TGFiZWwKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQw
LCB0MSkKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6
OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAotICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5
SWRTbG93CisgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51bWJlclRhZywgdDAK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAog
Lm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQx
Ci0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEudW5zZXRNb2Rl
LnN0cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIFZhbHVlVW5kZWZpbmVkKQorICAgIGxvYWRp
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnVuc2V0TW9kZS5z
dHJ1Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKKyAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmlu
ZWQpCiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCitlbmQKKworbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDApCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBwZXJmb3Jt
R2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5vcEdl
dEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorCiAub3BHZXRCeUlkU2xvdzoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgZGlzcGF0Y2go
KQpAQCAtMTQwMiw3ICsxNDA4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQs
IE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIC5vc3JSZXR1
cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lk
LCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjAp
CiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNDk3LDcgKzE1MDMsNyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZAogICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkK
ICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2Zy
LCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHJlc3Vs
dCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3Vs
dCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNTU4LDcgKzE1NjQsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAub3BHZXRCeVZhbERvbmU6CiAgICAgc3RvcmVxIHQy
LCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyKQorICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAgICBkaXNwYXRj
aCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNTcxLDcgKzE1NzcsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNl
dHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRh
KHQ1LCB0MikKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHIwKQorICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkKICAgICByZXR1cm4ocjApCiAK
IGVuZCkKQEAgLTE5NDgsNiArMTk1NCwzMCBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9w
Y29kZVN0cnVjdCwgZ2V0dSkKIC5kb25lOgogZW5kCiAKK21hY3JvIGNhbGxIZWxwZXIob3Bjb2Rl
TmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVh
bFJlZ2lzdGVyLCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBnZXRDYWxs
ZWUsIGdldEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorICAg
IG1ldGFkYXRhKHQ1LCB0MCkKKyAgICBnZXRDYWxsZWUodDApCisKKyAgICBsb2FkcCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxl
ZVdpdGhMaW5rQml0W3Q1XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQw
LCB0MykKKyAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisKKyAgICBnZXRBcmd1bWVudFN0
YXJ0KHQzKQorICAgIGxzaGlmdGkgMywgdDMKKyAgICBuZWdwIHQzCisgICAgYWRkcCBjZnIsIHQz
CisgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCisgICAgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXModDIpCisgICAgc3RvcmVQQygpCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbW92ZSB0Mywgc3AKKyAgICBwcmVw
YXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGlu
ZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcp
CisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0
Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorCiBtYWNybyBjb21tb25DYWxsT3Aob3Bj
b2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQog
ICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWV0YWRhdGEo
dDUsIHQwKQpAQCAtMTk1NiwyNCArMTk4NiwxOSBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2Rl
TmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAg
ICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgICAg
ICBlbmQsIG1ldGFkYXRhKQogCi0gICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0gICAgICAgIGxv
YWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxh
c3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgotICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQwLCB0MykKLSAgICAgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdwot
ICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCB0MykKLSAgICAgICAgbHNo
aWZ0aSAzLCB0MwotICAgICAgICBuZWdwIHQzCi0gICAgICAgIGFkZHAgY2ZyLCB0MwotICAgICAg
ICBzdG9yZXEgdDIsIENhbGxlZVt0M10KLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fYXJnYywgdDIpCi0gICAgICAgIHN0b3JlUEMoKQotICAgICAgICBzdG9yZWkgdDIsIEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICAgICAgbW92ZSB0
Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0
clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29k
ZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCi0KLSAgICAub3BDYWxs
U2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgbWFjcm8gZ2V0
Q2FsbGVlKGRzdCkKKyAgICAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCisgICAgICAgIGVuZAor
CisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50U3RhcnQoZHN0KQorICAgICAgICAgICAgZ2V0dShz
aXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBt
YWNybyBnZXRBcmd1bWVudENvdW50KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBtX2FyZ2MsIGRzdCkKKyAgICAgICAgZW5kCisKKyAgICAgICAgY2FsbEhlbHBlcihv
cGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBwcmVw
YXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50
U3RhcnQsIGdldEFyZ3VtZW50Q291bnQpCiAgICAgZW5kKQogZW5kCiAKQEAgLTIyNzYsNyArMjMw
MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNj
b3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgbWFjcm8gZ2V0UHJvcGVydHkoKQog
ICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQx
CiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDIpCisgICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIpCiAgICAgICAgIHJldHVybih0
MikKICAgICBlbmQKIApAQCAtMjI4NCwxNCArMjMwOSwxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0YwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0
NV0sIHQwCiAgICAgICAgIGxvYWRxIFt0MF0sIHQwCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3Nh
cnkodDApCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQwKQorICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAg
ICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKICAgICBtYWNybyBnZXRDbG9zdXJlVmFyKCkKICAg
ICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQog
ICAgICAgICBsb2FkcSBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XSwg
dDAKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDApCisgICAgICAg
IHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCiAgICAgICAg
IHJldHVybih0MCkKICAgICBlbmQKIApAQCAtMjU1MSw3ICsyNTc2LDYgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9wcm9maWxlX2NvbnRyb2xfZmxvdywgT3BQcm9maWxlQ29udHJvbEZsb3csIG1h
Y3JvIChzaXplLAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotCiBsbGludE9wV2l0aFJldHVybihv
cF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIHJldHVybikKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBzdWJpIDEsIHQwCkBAIC0yNTY3LDYgKzI1OTEsMTQ3
IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3Ro
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAorbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEoYTIsIHQ1KQorICAgIG1hY3Jv
IGZhc3ROYXJyb3coKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zh
c3RfbmFycm93KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMTYoKQorICAgICAgICBjYWxs
U2xvd1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KQorICAgIGVuZAorICAgIG1h
Y3JvIGZhc3RXaWRlMzIoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTMyKQorICAgIGVuZAorICAgIHNpemUoZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwg
ZmFzdFdpZGUzMiwgbWFjcm8gKGNhbGxPcCkgY2FsbE9wKCkgZW5kKQorCisgICAgIyBGSVhNRTog
V2Ugc2hvdWxkIGRvIHRoaXMgd2l0aCBpbmxpbmUgYXNzZW1ibHkgc2luY2UgaXQncyB0aGUgImZh
c3QiIGNhc2UuCisgICAgYmJlcSByMSwgY29uc3RleHByIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMs
IC5pdGVyYXRvck9wZW5HZW5lcmljCisgICAgZGlzcGF0Y2goKQorCisuaXRlcmF0b3JPcGVuR2Vu
ZXJpYzoKKyAgICBtYWNybyBnb3RvR2V0QnlJZENoZWNrcG9pbnQoKQorICAgICAgICBqbXAgLmdl
dEJ5SWRTdGFydAorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAg
Z2V0KG1fc3ltYm9sSXRlcmF0b3IsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3Vt
ZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkKKyAgICAgICAgZ2V0dShzaXplLCBPcEl0ZXJhdG9y
T3BlbiwgbV9zdGFja09mZnNldCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1l
bnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0KQorICAgICAgICBtb3ZlIDEsIGRzdAorICAgIGVuZAor
CisKKyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX29wZW4sIF9sbGludF9zbG93X3BhdGhfaXRl
cmF0b3Jfb3Blbl9jYWxsLCBPcEl0ZXJhdG9yT3BlbiwgbV9pdGVyYXRvclByb2ZpbGUsIG1faXRl
cmF0b3IsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldEJ5SWRDaGVja3BvaW50
LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0
QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXRCeUlkU3RhcnQ6CisgICAgbWFjcm8g
c3RvcmVOZXh0QW5kRGlzcGF0Y2godmFsdWUpCisgICAgICAgIG1vdmUgdmFsdWUsIHQyCisgICAg
ICAgIGdldChtX25leHQsIHQxKQorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAg
ICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2l0ZXJh
dG9yLCB0MykKKyAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5pdGVyYXRvck9wZW5HZW5lcmlj
R2V0TmV4dFNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9t
b2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNs
b3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKworLml0ZXJhdG9yT3Bl
bkdlbmVyaWNHZXROZXh0U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9p
dGVyYXRvcl9vcGVuX2dldF9uZXh0KQorICAgIGRpc3BhdGNoKCkKKworZW5kKQorCitsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKworICAgIGxvYWRWYXJpYWJsZShn
ZXQsIG1fbmV4dCwgdDApCisgICAgYnRxbnogdDAsIHQwLCAuaXRlcmF0b3JOZXh0R2VuZXJpYwor
ICAgIG1ldGFkYXRhKGEyLCB0NSkKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2Fs
bFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBt
YWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAg
Y2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAg
ICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3Ap
IGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5s
aW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNv
bnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JOZXh0R2VuZXJpYworICAg
IGRpc3BhdGNoKCkKKworLml0ZXJhdG9yTmV4dEdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldERv
bmVDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXREb25lU3RhcnQKKyAgICBlbmQKKworICAg
IG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX25leHQsIGRzdCkKKyAgICBlbmQK
KworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkKKyAgICAgICAg
Z2V0dShzaXplLCBPcEl0ZXJhdG9yTmV4dCwgbV9zdGFja09mZnNldCwgZHN0KQorICAgIGVuZAor
CisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0KQorICAgICAgICBt
b3ZlIDEsIGRzdAorICAgIGVuZAorCisgICAgIyBVc2UgbV92YWx1ZSBzbG90IGFzIGEgdG1wIHNp
bmNlIHdlIGFyZSBnb2luZyB0byB3cml0ZSB0byBpdCBsYXRlci4KKyAgICBjYWxsSGVscGVyKG9w
X2l0ZXJhdG9yX25leHQsIF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsLCBPcEl0
ZXJhdG9yTmV4dCwgbV9uZXh0UmVzdWx0UHJvZmlsZSwgbV92YWx1ZSwgcHJlcGFyZUZvclJlZ3Vs
YXJDYWxsLCBzaXplLCBnb3RvR2V0RG9uZUNoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUs
IGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXND
b3VudCkKKworLmdldERvbmVTdGFydDoKKyAgICBtYWNybyBzdG9yZURvbmVBbmRKbXBUb0dldFZh
bHVlKGRvbmVWYWx1ZSkKKyAgICAgICAgIyB1c2UgdDAgYmVjYXVzZSBwZXJmb3JtR2V0QnlJREhl
bHBlciB1c3VhbGx5IHB1dHMgdGhlIGRvbmVWYWx1ZSB0aGVyZSBhbmQgb2ZmbGluZWFzbSB3aWxs
IGVsaWRlIHRoZSBzZWxmIG1vdmUuCisgICAgICAgIG1vdmUgZG9uZVZhbHVlLCB0MAorICAgICAg
ICBnZXQobV9kb25lLCB0MSkKKyAgICAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICAg
ICAgam1wIC5nZXRWYWx1ZVN0YXJ0CisgICAgZW5kCisKKworICAgIGxvYWRWYXJpYWJsZShnZXQs
IG1fdmFsdWUsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLmdldERvbmVTbG93Cisg
ICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0
YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVEb25l
QW5kSm1wVG9HZXRWYWx1ZSkKKworLmdldERvbmVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCisgICAgYnJhbmNoSWZFeGNlcHRp
b24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCisgICAgbG9hZFZhcmlh
YmxlKGdldCwgbV9kb25lLCB0MCkKKworICAgICMgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSBw
dXRzIHRoZSBkb25lVmFsdWUgaW50byB0MAorLmdldFZhbHVlU3RhcnQ6CisgICAgIyBCcmFuY2gg
dG8gc2xvdyBpZiBub3QgbWlzYyBwcmltaXRpdmUuCisgICAgYnRxbnogdDAsIH4weGYsIC5nZXRW
YWx1ZVNsb3cKKyAgICBidGl6IHQwLCAweDEsIC5ub3REb25lCisgICAgZGlzcGF0Y2goKQorCisu
bm90RG9uZToKKyAgICBtYWNybyBzdG9yZVZhbHVlQW5kRGlzcGF0Y2godikKKyAgICAgICAgbW92
ZSB2LCB0MgorICAgICAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgICAgIHN0b3JlcSB0MiwgW2Nm
ciwgdDEsIDhdCisgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQwLCAweGJhZGRi
MDFlKQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICAjIFJlbG9hZCB0aGUgbmV4
dCByZXN1bHQgdG1wIHNpbmNlIHRoZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUgY2xvYmJlcmVk
IHQzLgorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQorICAgICMgV2UgZG9uJ3Qg
bmVlZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJlIHNpbmNl
IHdlIHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgorICAgIHBlcmZvcm1HZXRCeUlE
SGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmls
ZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCkK
KworLmdldFZhbHVlU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVy
YXRvcl9uZXh0X2dldF92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKKwogbGxpbnRPcFdp
dGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1f
YmFzZSwgdDEpCiAgICAgZ2V0dShzaXplLCBPcEdldEludGVybmFsRmllbGQsIG1faW5kZXgsIHQy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3Jt
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCmluZGV4
IDhkNzY3MTE2YzA1NGU1ZWE2NjRlZjQwNjJjNTZmMjYwNWUwZDhiNDUuLjU4OWFlMGUwZjNlZDM0
YjY2MWU4NTYyYmNhMjk4MDJlYzEwZTViNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKQEAgLTYyOSw3ICs2MjksNyBAQCBlbmQKIAogY2xhc3Mg
Tm9kZQogICAgIGRlZiB2YWxpZGF0ZQotICAgICAgICByYWlzZSAiVW5yZXNvbHZlZCAje2R1bXB9
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIHJhaXNlICJVbnJlc29sdmVkICcje2R1
bXB9JyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgogICAgIGVuZAogICAgIAogICAgIGRlZiB2YWxp
ZGF0ZUNoaWxkcmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAppbmRleCBiOGRlOTY1NTgyZjdkOTEyNzEzMzdkNTQzMTkwM2U4MzE4YzI2
ZjQ3Li5kZDVlOTBjNDJjODJkYmYwNjcxZDU4MzJlMWMzYzZkMTA5NmJmNTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQXJyYXlJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMTUzLDggKzE1NCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICNkZWZpbmUgUkVUVVJOX1BST0ZJTEVEKHZhbHVlX18pIFwKICAgICBSRVRV
Uk5fV0lUSF9QUk9GSUxJTkcodmFsdWVfXywgUFJPRklMRV9WQUxVRShyZXR1cm5WYWx1ZV9fKSkK
IAotI2RlZmluZSBQUk9GSUxFX1ZBTFVFKHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsgXAorI2RlZmluZSBQUk9GSUxFX1ZBTFVFKHZhbHVlX18pIFwKKyAgICBQUk9G
SUxFX1ZBTFVFX0lOKHZhbHVlX18sIG1fcHJvZmlsZSkKKworI2RlZmluZSBQUk9GSUxFX1ZBTFVF
X0lOKHZhbHVlLCBwcm9maWxlTmFtZSkgZG8geyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jaykucHJvZmlsZU5hbWUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiBzdGF0aWMgdm9pZCB0aHJvd0FyaXR5Q2hl
Y2tTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dT
Y29wZSYgc2NvcGUpCkBAIC05NjUsNiArOTY5LDEzMCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaW5fYnlfaWQpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5o
YXNQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KSkpKTsKIH0KIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KK1Nsb3dQYXRo
UmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YVB0cikKK3sKKyAg
ICAvLyBEb24ndCBzZXQgUEM7IHdlIGNhbid0IHRocm93IGFuZCBpdCdzIHJlbGF0aXZlbHkgc2xv
dy4KKyAgICBCRUdJTl9OT19TRVRfUEMoKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNL
bm93bldpZHRoPE9wSXRlcmF0b3JPcGVuLCB3aWR0aD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9
ICpyZWludGVycHJldF9jYXN0PE9wSXRlcmF0b3JPcGVuOjpNZXRhZGF0YSo+KG1ldGFkYXRhUHRy
KTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gR0VUX0MoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNW
YWx1ZSgpOworICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRlcmFibGUsIG1faXRlcmFibGVQcm9maWxl
KTsKKyAgICBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yID0gR0VUX0MoYnl0ZWNvZGUubV9zeW1ib2xJ
dGVyYXRvcikuanNWYWx1ZSgpOworICAgIGF1dG8mIGl0ZXJhdG9yID0gR0VUKGJ5dGVjb2RlLm1f
aXRlcmF0b3IpOworCisgICAgYXV0byBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uID0gWyZd
IHsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25N
b2RlOjpHZW5lcmljOworCisgICAgICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1
c3QgY2hlY2tlZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2YWxpZC4KKyAgICAgICAgSlNGdW5j
dGlvbiogc3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KHZtLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgIGlmICghc3ltYm9sSXRlcmF0b3JGdW5jdGlv
bikKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOyAKKworICAgICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIGFsbG9jYXRlIHRoZSB2YWx1ZXMgZnVuY3Rpb24ganVzdCB0
byBjaGVjayBpZiBpdCdzIHRoZSBzYW1lIGFzIG91ciBmdW5jdGlvbiBhdCBzbyB3ZSB1c2UgdGhl
IGNvbmN1cnJlbnQgYWNjZXNzb3IuCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3Mg
Zm9yIGFycmF5cyBmcm9tIHRoZSBzYW1lIGdsb2JhbCBvYmplY3QgYXMgb3Vyc2VsdmVzIGJ1dCB3
ZSBzaG91bGQgYmUgYWJsZSB0byBzdXBwb3J0IGFueSBwYWlyaW5nLgorICAgICAgICBpZiAoZ2xv
YmFsT2JqZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb25Db25jdXJyZW50bHkoKSAhPSBzeW1i
b2xJdGVyYXRvckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGdvb2QgdG8gZ28uCisgICAgICAgIG1l
dGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRp
b25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgICAg
IEdFVChieXRlY29kZS5tX25leHQpID0gSlNWYWx1ZSgpOworICAgICAgICBhdXRvKiBpdGVyYXRl
ZE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGl0ZXJhYmxlKTsKKyAgICAgICAgeworICAgICAg
ICAgICAgaXRlcmF0b3IgPSBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5k
OjpWYWx1ZXMpOworICAgICAgICB9CisgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRlcmF0b3Iu
anNWYWx1ZSgpLCBtX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25N
b2RlOjpGYXN0QXJyYXk7CisgICAgfTsKKworICAgIGlmIChpdGVyYWJsZS5pbmhlcml0czxKU0Fy
cmF5Pih2bSkpIHsKKyAgICAgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oKSA9
PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpCisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkp
KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdG8gdGhlIGJ5dGVjb2RlIHRvIHRyeSBpbiBnZW5l
cmljIG1vZGUuCisgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBt
ZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xP
V19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVy
biBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PE5hcnJvdz4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQ
dHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMs
IHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0
PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQorewor
ICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUzMj4oY2FsbEZyYW1lLCBwYywg
bWV0YWRhdGFQdHIpOworfQorCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xvd1BhdGhS
ZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAg
IEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJh
dG9yTmV4dCwgd2lkdGg+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2Fz
dDxPcEl0ZXJhdG9yTmV4dDo6TWV0YWRhdGEqPihtZXRhZGF0YVB0cik7CisKKyAgICBBU1NFUlQo
IUdFVChieXRlY29kZS5tX25leHQpLmpzVmFsdWUoKSk7CisgICAgSlNPYmplY3QqIGl0ZXJhdG9y
ID0ganNDYXN0PEpTT2JqZWN0Kj4oR0VUKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKSk7
OworICAgIEpTQ2VsbCogaXRlcmFibGUgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1
ZSgpLmFzQ2VsbCgpOworICAgIGlmIChhdXRvIGFycmF5SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0
PEpTQXJyYXlJdGVyYXRvcio+KHZtLCBpdGVyYXRvcikpIHsKKyAgICAgICAgaWYgKGF1dG8gYXJy
YXkgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXkqPih2bSwgaXRlcmFibGUpKSB7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0
cnVjdHVyZUlEKCkpOworCisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRh
LnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRl
cmF0aW9uTW9kZTo6RmFzdEFycmF5OworICAgICAgICAgICAgYXV0byYgaW5kZXhTbG90ID0gYXJy
YXlJdGVyYXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCk7
CisgICAgICAgICAgICBpbnQ2NF90IGluZGV4ID0gaW5kZXhTbG90LmdldCgpLmFzQW55SW50KCk7
CisgICAgICAgICAgICBBU1NFUlQoMCA8PSBpbmRleCAmJiBpbmRleCA8PSBtYXhTYWZlSW50ZWdl
cigpKTsKKworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgICAgIGJvb2wgZG9u
ZSA9IGluZGV4ID09IC0xIHx8IGluZGV4ID49IGFycmF5LT5sZW5ndGgoKTsKKyAgICAgICAgICAg
IEdFVChieXRlY29kZS5tX2RvbmUpID0ganNCb29sZWFuKGRvbmUpOworICAgICAgICAgICAgaWYg
KCFkb25lKSB7CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUg
YmVjYXVzZSB3ZSBrbm93IHRoaXMgaXMgYSBwcmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5k
ZXhTbG90LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoaW5kZXggKyAxKSk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkp
OworICAgICAgICAgICAgICAgIHZhbHVlID0gYXJyYXktPmdldEluZGV4KGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgICAgICAgICAgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgbV92YWx1
ZVByb2ZpbGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBObyBu
ZWVkIGZvciBhIGJhcnJpZXIgaGVyZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2
ZS4KKyAgICAgICAgICAgICAgICBpbmRleFNsb3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051
bWJlcigtMSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV92
YWx1ZSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkpOworICAgICAgICB9
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAvLyBSZXR1
cm4gdG8gdGhlIGJ5dGVjb2RlIHRvIHRyeSBpbiBnZW5lcmljIG1vZGUuCisgICAgbWV0YWRhdGEu
bV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFk
YXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YykpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5
X2Zhc3RfbmFycm93KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMs
IHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
PE5hcnJvdz4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVy
blR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQorewor
ICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywg
bWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9y
X25leHRfdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9uZXh0
X3RyeV9mYXN0PFdpZGUzMj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiNzEz
NWUyYjc4NGFiNjhkYjVmNTU4ZmE3ODUwNGNhYjA5NjQzYzYxLi43YWIwOGEyZmFkNjlhNGIwZDQ1
OTIzNzc5Mzc1ZGNkOGIyZWUwYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ2LDYgKzI0Niw4IEBAIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfaXNfb2JqZWN0X29yX251bGwpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2luX2J5X2lkKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfdmFs
KTsKKy8vIFNMT1dfUEFUSF9ISURERU5fREVDTChpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KTsKKy8v
IFNMT1dfUEFUSF9ISURERU5fREVDTChpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3N0cmNhdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rv
X3ByaW1pdGl2ZSk7CkBAIC0yODMsNiArMjg1LDE4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3NwcmVhZCk7CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK2V4dGVybiBTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3QoQ2FsbEZyYW1lKiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3coQ2Fs
bEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93
aWRlMTYoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7
CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBt
ZXRhZGF0YSk7CisKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK2V4dGVybiBTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QoQ2FsbEZyYW1lKiwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3coQ2FsbEZy
YW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7CitleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRl
MTYoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRhZGF0YSk7Citl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlf
ZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB2b2lkKiBtZXRh
ZGF0YSk7CisKIHVzaW5nIFNsb3dQYXRoRnVuY3Rpb24gPSBTbG93UGF0aFJldHVyblR5cGUoU0xP
V19QQVRIICopKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5k
ZXggMmUxYjVmMjk2ZTMzMjAzZTk4NGZlOTY3YTc4MTExOGIwZDY5NjFjOS4uZTRlNTc3ZmZhNTJk
NzY1Mjk5YTMzNjZmOTRkMWE2YmI0YWI0YjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuY3BwCkBAIC0zNDAsNiArMzQwLDI0IEBAIGNvbnN0IGNoYXIqIGlu
dHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAorT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50
cmluc2ljIGludHJpbnNpYykKK3sKKyAgICBzd2l0Y2ggKGludHJpbnNpYykgeworICAgIGNhc2Ug
QXJyYXlWYWx1ZXNJbnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5VmFsdWVzSW50cmluc2lj
OgorICAgICAgICByZXR1cm4gSXRlcmF0aW9uS2luZDo6VmFsdWVzOworICAgIGNhc2UgQXJyYXlL
ZXlzSW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheUtleXNJbnRyaW5zaWM6CisgICAgICAg
IHJldHVybiBJdGVyYXRpb25LaW5kOjpLZXlzOworICAgIGNhc2UgQXJyYXlFbnRyaWVzSW50cmlu
c2ljOgorICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVy
biBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3Bh
Y2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXgg
MzNlY2FiYzgxZmM4MTg0MGI0ZGY3YTY5NjYyZGIxM2Y1NjYyY2I5ZC4uMTE5YzA0ZmI0MmYzZjBj
ZTMyOTk5MDZkMjdiZjRiY2VhOTA3OWUzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmgKQEAgLTE5Miw2ICsxOTIsOCBAQCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4
X3QgewogICAgIERhdGFWaWV3U2V0RmxvYXQ2NCwKIH07CiAKK09wdGlvbmFsPEl0ZXJhdGlvbktp
bmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyk7CisKIGNvbnN0IGNoYXIq
IGludHJpbnNpY05hbWUoSW50cmluc2ljKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCmluZGV4IGFmZDll
YjJlNWQ2NmI4NTNhMGM3NzA0MmFjYWU0OTlkMDY3M2YxOGYuLmJjZmQzMWIzZDZjZjNhMDkyNGNk
ZTM3ZWRiMWQ0NTg4YTRlMzhkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlJdGVyYXRvci5oCkBAIC02OCw2ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgSlNP
YmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4o
aW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLmdldCgpKTsgfQogCiAgICAgc3Rh
dGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGl0
ZXJhdGVkT2JqZWN0LCBKU1ZhbHVlIGtpbmQpOworICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogaXRlcmF0ZWRP
YmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUo
dm0sIHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihraW5kKSkpOworICAgIH0KICAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGVX
aXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA0MmM1Mzc3N2NjZGVj
NWZjZDRkYjgxMGQxODU0ZmE2MGM5ZjQ4MWVkLi5kMzAyYjE4NjUzZTM4NDk3ODkyYjYwNWZhMTI4
YTk5YzBmOTRmMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCkBAIC0yMjUsNiArMjI1LDcgQEAgcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBl
LgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgaXNGdW5jdGlvbihWTSYpIGNv
bnN0OworICAgIGJvb2wgaXNDYWxsYWJsZShWTSYpIGNvbnN0OwogICAgIGJvb2wgaXNDYWxsYWJs
ZShWTSYsIENhbGxUeXBlJiwgQ2FsbERhdGEmKSBjb25zdDsKICAgICBib29sIGlzQ29uc3RydWN0
b3IoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mLCBDb25zdHJ1Y3RUeXBl
JiwgQ29uc3RydWN0RGF0YSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggNWIzZmY4YWM0NGU2NTc4YWVlZmY2OWMx
Y2ZkYmViZWFiYWQ4MGFmNy4uNjJmOWQyNGYxNWQwNzI0NWFkNzc2YzQ4NzlkMjA3ZjE1NTdjYWFi
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCkBAIC04MjcsNiArODI3LDEzIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzRnVuY3Rp
b24oVk0mIHZtKSBjb25zdAogICAgIHJldHVybiBhc0NlbGwoKS0+aXNGdW5jdGlvbih2bSk7CiB9
CiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0mIHZtKSBjb25zdAoreworICAg
IENhbGxUeXBlIHVudXNlZFR5cGU7CisgICAgQ2FsbERhdGEgdW51c2VkRGF0YTsKKyAgICByZXR1
cm4gaXNDYWxsYWJsZSh2bSwgdW51c2VkVHlwZSwgdW51c2VkRGF0YSk7Cit9CisKIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0mIHZtLCBDYWxsVHlwZSYgY2FsbFR5cGUsIENhbGxE
YXRhJiBjYWxsRGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWlzQ2VsbCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCBlOGIyM2NlNTk5ZDM2MmRjNjVmMzNmOGVmMjNh
ZDhmNWQ2ZDk3MTFiLi5iMjUwMzU2OWM4NDIyNTYwMTE0MWE4MGNmNTk4NDhmNWQ2NzNiNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtNjAsMTMgKzYwLDEzIEBA
IGlubGluZSBUbyBqc0Nhc3QoSlNWYWx1ZSBmcm9tKQogLy8gU3BlY2lmaWMgdHlwZSBvdmVybG9h
ZHMuCiAjZGVmaW5lIEZPUl9FQUNIX0pTX0RZTkFNSUNfQ0FTVF9KU19UWVBFX09WRVJMT0FEKG1h
Y3JvKSBcCiAgICAgbWFjcm8oSlNJbW11dGFibGVCdXR0ZXJmbHksIEpTVHlwZTo6SlNJbW11dGFi
bGVCdXR0ZXJmbHlUeXBlLCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5VHlwZSkgXAotICAg
IG1hY3JvKEpTQXJyYXlJdGVyYXRvciwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5
cGU6OkpTQXJyYXlJdGVyYXRvclR5cGUpIFwKICAgICBtYWNybyhKU1N0cmluZ0l0ZXJhdG9yLCBK
U1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBl
KSBcCiAgICAgbWFjcm8oSlNPYmplY3QsIEZpcnN0T2JqZWN0VHlwZSwgTGFzdE9iamVjdFR5cGUp
IFwKICAgICBtYWNybyhKU0ZpbmFsT2JqZWN0LCBKU1R5cGU6OkZpbmFsT2JqZWN0VHlwZSwgSlNU
eXBlOjpGaW5hbE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uLCBKU1R5cGU6OkpT
RnVuY3Rpb25UeXBlLCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSW50ZXJu
YWxGdW5jdGlvbiwgSlNUeXBlOjpJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgSlNUeXBlOjpJbnRlcm5h
bEZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXksIEpTVHlwZTo6QXJyYXlUeXBlLCBK
U1R5cGU6OkRlcml2ZWRBcnJheVR5cGUpIFwKKyAgICBtYWNybyhKU0FycmF5SXRlcmF0b3IsIEpT
VHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlKSBc
CiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlciwgSlNUeXBlOjpBcnJheUJ1ZmZlclR5cGUsIEpTVHlw
ZTo6QXJyYXlCdWZmZXJUeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXcsIEZpcnN0
VHlwZWRBcnJheVR5cGUsIExhc3RUeXBlZEFycmF5VHlwZSkgXAogICAgIG1hY3JvKEpTUHJvbWlz
ZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlLCBKU1R5cGU6OkpTUHJvbWlzZVR5cGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDBlMTg5
NjBlNDgxYTMyNGFkYzI1NjhlZmRiYjI0Y2VhZjE0YTBmMzcuLmY5NTNmNzc4YjMxOWJjMjE2MmYy
ODBkNjgwNjRlODJlNTA0ZmQyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjE1LDYgKzYxNSw3IEBAIHB1YmxpYzoKICAgICBKU0Z1
bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiog
YXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9U
b1N0cmluZ0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
LmdldCh0aGlzKTsgfQorICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNv
bmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdl
dENvbmN1cnJlbnRseSgpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0
OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBjMjhiZmMzNGJmZTgwZjc2MzRhNDBl
MWYzOGQwMjk3YjZhNzBkNzFlLi5iZGZiZjRjN2UxYzk5ODE5ODg5YTg3YTA4NGFmNTE3MWU3MWQ4
NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAg
LTExOSw2ICsxMTksOCBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWlu
Z0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNoYWRvd0NoaWNrZW5Mb2dTaXplLCAxMDAw
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTWF4VGFp
bERlbGV0ZWRGcmFtZXNTaXplLCAxMjgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKKyAgICB2
KEJvb2wsIHVzZUl0ZXJhdGlvbkludHJpbnNpY3MsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAor
ICAgIFwKICAgICB2KEJvb2wsIHVzZU9TTG9nLCBmYWxzZSwgTm9ybWFsLCAiTG9nIGRhdGFMb2co
KXMgdG8gb3NfbG9nIGluc3RlYWQgb2Ygc3RkZXJyIikgXAogICAgIC8qIGR1bXBEaXNhc3NlbWJs
eSBpbXBsaWVzIGR1bXBERkdEaXNhc3NlbWJseS4gKi8gXAogICAgIHYoQm9vbCwgZHVtcERpc2Fz
c2VtYmx5LCBmYWxzZSwgTm9ybWFsLCAiZHVtcHMgZGlzYXNzZW1ibHkgb2YgYWxsIEpJVCBjb21w
aWxlZCBjb2RlIHVwb24gY29tcGlsYXRpb24iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA3NjRhZDA2NWFjMDExZTMzYzMyMzhjZDlkYTk1Mzlj
MTU4MzkyM2U1Li45YzJjZTdhZmFlNmUzOGU3YTYwODAyNmY1MTc3MTEwZTNjODU1NjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyNjgsNiAr
MTI2OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQs
IER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBCcmllZihQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpIGNvbnN0CiB7CiAgICAgb3V0
LnByaW50KCIlIiwgc3RyaW5nLCAiOiIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIGlm
IChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKQorICAgICAgICBvdXQucHJpbnQo
IiwiLCBJbmRleGluZ1R5cGVEdW1wKGluZGV4aW5nVHlwZSgpKSk7CiB9CiAKIHZvaWQgU3RydWN0
dXJlOjpkdW1wQ29udGV4dEhlYWRlcihQcmludFN0cmVhbSYgb3V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaCBiL1NvdXJjZS9XVEYvd3Rm
L0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKaW5kZXggMzU3YmEyZmEyZjc5MjlhNmE5OThh
OWE0ZWYxNGQyYmU1NzU0NjM3MS4uNTZhYmM0YjUzZWM5ZmFiNjA3NWJmNmQyZWJiYmVkMWYzM2Nk
ZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9h
ZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oCkBA
IC01OSwzICs1OSw5IEBACiAKICNkZWZpbmUgT1ZFUkxPQURfUkVMQVRJT05BTF9PUEVSQVRPUlNf
Rk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFR1JBTFMoZW51bU5hbWUpIE9WRVJMT0FEX1JFTEFUSU9O
QUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHN0ZDo6aXNfaW50ZWdy
YWxfdjxUPikKIAorI2RlZmluZSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9D
TEFTU19XSEVOKGVudW1OYW1lLCBlbmFibGVFeHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BF
UkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgfCwgZW5hYmxlRXhwcmVzc2lvbikg
XAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsICYs
IGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFT
U19XSEVOKGVudW1OYW1lLCBeLCBlbmFibGVFeHByZXNzaW9uKSBcCisKKyNkZWZpbmUgT1ZFUkxP
QURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0lUSF9JTlRFUkdSQUxTKGVudW1O
YW1lKSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1O
YW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU0MmNiZWJkOWNhZjgyNDkxYzQ5YzE1M2ZlNDI2
YTEzODk4NDMxZWMuLjdlYTI1OGY0ZWRjZDllYTc5YWQ5ZDAwNzNjNjZmYzdhMzc4NjM2M2UgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTE4IEBACisyMDIwLTA0LTE2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBmb3Itb2YgaXRlcmF0aW9uIGZv
ciBKU0FycmF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qczoKKyAg
ICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanM6CisgICAg
ICAgIChjYXRjaCk6CisgICAgICAgIChpdGVyLnJldHVybik6CisgICAgICAgIChpdGVyYXRvcklu
dGVyZmFjZUVycm9yVGVzdCk6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJl
dHVybik6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybik6CisgICAg
ICAgICogc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAoYXJyYXkuU3ltYm9sLml0ZXJhdG9yLl9fcHJvdG9fXy5u
ZXh0KToKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5qczogQWRk
ZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5p
bmctZm9yLW9mLW9uLW1hcC5qczogQWRkZWQuCisgICAgICAgIChmaW5kKToKKyAgICAgICAgKGku
bGV0LnYub2YuZmluZCk6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZv
ci1vZi1vbi1zZXQuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6CisgICAgICAgIChzZXQgYWRk
KToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0dGVyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCBkb25lKToKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9s
Lml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgICog
c3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanM6IEFkZGVkLgorICAgICAgICAo
aS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IHZhbHVlKToKKyAgICAgICAgKGkubGV0Lml0
ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToK
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgICogc3RyZXNzL3Rocm93
LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRv
cik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6
CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRl
ci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGku
bGV0Lml0ZXJhYmxlLmdldCBkb25lKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5p
dGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5j
YXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVy
LmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5s
ZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJl
dHVybik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS12
YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCB2YWx1ZSk6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRl
cmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorCisyMDIwLTA0LTE1ICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZGVzaWduIGhvdyB3
ZSBkbyBmb3Itb2YgaXRlcmF0aW9uIGZvciBKU0FycmF5cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJh
dGUtYXJyYXktZW50cmllcy5qczoKKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2N1
c3RvbS1pdGVyYXRvcnMuanM6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgIChpdGVyLnJldHVy
bik6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdCk6CisgICAgICAgIChpdGVy
YXRvckludGVyZmFjZUVycm9yVGVzdFJldHVybik6CisgICAgICAgIChpdGVyYXRvckludGVyZmFj
ZUJyZWFrVGVzdFJldHVybik6CisgICAgICAgICogc3RyZXNzL2Zvci1vZi1hcnJheS1taXhlZC12
YWx1ZXMuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2dlbmVy
YXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6
CisgICAgICAgIChpLmxldC52Lm9mLmZpbmQpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
Y29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpbmQpOgorICAg
ICAgICAoc2V0IGFkZCk6CisgICAgICAgICogc3RyZXNzL29zci1mcm9tLWZvci1vZi1kb25lLWdl
dHRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0LnJldHVybi5nZXQg
ZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0
ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4p
OgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJuLmdldCB2YWx1ZSk6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJv
bC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAq
IHN0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5zLW5vbi1vYmplY3QuanM6IEFkZGVkLgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5T
eW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAg
ICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWlu
LWZvci1vZi1oZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVy
YWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToK
KyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mcm9tLW5leHQtaW4t
Zm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToK
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxl
dC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNz
L3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6IEFkZGVkLgorICAg
ICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQg
dmFsdWUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNoKToKKwogMjAyMC0w
NC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IEltcGxlbWVudCBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9m
LWl0ZXJhdGUtYXJyYXktZW50cmllcy5qcwppbmRleCA1NWVjYzBiZmNmOTE5Y2FjYWU3ZmQxNWRk
YjQwYjE0ZmRjYTk0ZWRhLi4yMDEyYjkxMjg1MGY1ODExNjdmYmQzMTA1MDU5Yjc2ZDc2NjNiNmQ4
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJh
eS1lbnRyaWVzLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRl
LWFycmF5LWVudHJpZXMuanMKQEAgLTMsMTAgKzMsMTIgQEAgZnVuY3Rpb24gZm9vKCkgewogICAg
IHZhciBhcnJheSA9IFtdOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjUwMDA7IGkrKykKICAg
ICAgICAgYXJyYXkucHVzaChpKTsKLSAgICAKKwogICAgIHZhciByZXN1bHQgPSAwOwotICAgIGZv
ciAodmFyIFtrZXksIHZhbHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpCisgICAgZm9yICh2YXIgW2tl
eSwgdmFsdWVdIG9mIGFycmF5LmVudHJpZXMoKSkgeworICAgICAgICBwcmludChrZXkgKyAiICIg
KyAkdm0uaW5kZXhpbmdNb2RlKGFycmF5KSk7CiAgICAgICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1
ZSArIGFycmF5W2tleV07CisgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvY3VzdG9tLWl0ZXJhdG9ycy5qcwppbmRleCBmZDY0MTNmZTNiNWU5MDNhZmZlMzgwM2ZkMDA0
YzBjYjFmMWM2NGYzLi5kM2QxYmQ3ZTg1OGU4NzRmYmQxMTNkODJmOTIxMWVhNGJkNWVmN2I1IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKQEAgLTIyLDcgKzIyLDcgQEAgZm9yICh2YXIg
dmFsdWUgb2YgaXRlcikgewogICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZh
bHVlOwogfQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBj
YWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAog
CkBAIC01Myw3ICs1Myw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChT
dHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQog
aWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxl
ZC4iOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAg
ICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBsb29raW5nIHVwIG5leHQuIikKLSAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsK
IH0KIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVk
LiI7CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAt
MTM2LDcgKzEzNiw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJp
bmcoZSkgIT09ICJFcnJvcjogbG9va2luZyB1cCByZXR1cm4uIikKLSAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIAogCkBA
IC0xNjUsMTAgKzE2NSwxMCBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAo
U3RyaW5nKGUpICE9PSAiRXJyb3I6IG5leHQgaXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJF
cnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAo
cmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAg
IHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAgLTE4Myw3ICsx
ODMsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewog
ICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVy
biBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxl
ZCIpOwogICAgIH0KIH07CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0
Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRp
b24uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAg
ICAgICAgdGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjog
cmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2YXIgaXRlciA9IHsK
ICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQg
PSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiB0cnkg
ewpAQCAtMjE4LDggKzIxOCw4IEBAIHRyeSB7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0gY2F0
Y2ggKGUpIHsKLSAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQu
IikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICBp
ZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiB3YXMgY2FsbGVkIikKKyAgICAgICAgdGhy
b3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlz
IG5vdCBjYWxsZWQuIjsKQEAgLTI1NSwxMCArMjU1LDEwIEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50
ZXJmYWNlRXJyb3JUZXN0KG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNh
dGNoIChlKSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAg
ICAgfQogICAgIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJu
IGlzIGNhbGxlZC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVk
Iik7CiB9CiAKIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0
ZXJhdG9yUmVzdWx0KSB7CkBAIC0yODIsNyArMjgyLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRl
cmZhY2VFcnJvclRlc3RSZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAg
IH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5h
dGUgaXRlcmF0aW9uLiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJv
d246ICIgKyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5D
YWxsZWQpCiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAg
LTMxMyw3ICszMTMsNyBAQCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVy
bihub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAg
ICAgICBpZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVy
cm9yIHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAo
IXJldHVybkNhbGxlZCkKICAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxl
ZC4iOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1n
bG9iYWxzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkNzdjZjg4YWI2MDJjZTRkMzg3YjcxZGNjZmJmMWRhZjIwZjhlMmUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50
LWdsb2JhbHMuanMKQEAgLTAsMCArMSwyMiBAQAorbGV0IGNvdW50ID0gMDsKKworZnVuY3Rpb24g
Zm9vKGFycmF5KSB7CisgICAgZm9yIChsZXQgdiBvZiBhcnJheSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCk7Cit9Citub0lubGluZShmb28pOworCitsZXQgb3RoZXJHbG9iYWwgPSBjcmVhdGVH
bG9iYWxPYmplY3QoKTsKK2xldCBhcnJheSA9IG90aGVyR2xvYmFsLkFycmF5KCk7CithcnJheVtT
eW1ib2wuaXRlcmF0b3JdKCkuX19wcm90b19fLm5leHQgPSBmdW5jdGlvbiAoKSB7CisgICAgY291
bnQrKzsKKyAgICByZXR1cm4geyBkb25lOiB0cnVlIH07Cit9CithcnJheVswXSA9IDE7CisKK2Nv
bnN0IGl0ZXJDb3VudCA9IDFlNTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgaXRlckNvdW50OyArK2kp
CisgICAgZm9vKGFycmF5KTsKKworaWYgKGl0ZXJDb3VudCAhPT0gY291bnQpCisgICAgdGhyb3cg
bmV3IEVycm9yKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4
ZWQtdmFsdWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNDk4YTYwNDMzZGYyZGMxNzUzYTlkN2I4OGI5NmJkMzI0MDA2ZjgxCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVl
cy5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiB0ZXN0KGFycmF5KSB7CisgICAgbGV0IHN1
bSA9IDA7CisgICAgZm9yIChsZXQgdiBvZiBhcnJheSkgeworICAgICAgICBpZiAodHlwZW9mIHYg
PT09ICJudW1iZXIiKQorICAgICAgICAgICAgc3VtICs9IHY7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJldHVybiBzdW07CisgICAgfQorfQorbm9JbmxpbmUodGVzdCk7CisKK2xldCBhcnJh
eSA9IFsxLDIsMyw0LCJzdHJpbmciXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsK
KyAgICBpZiAodGVzdChhcnJheSkgIT09IDEwKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsK
K30KKworCithcnJheSA9IFsxLDIsMyw0LHt9XQorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsr
aSkgeworICAgIGlmICh0ZXN0KGFycmF5KSAhPT0gMTApCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmct
Zm9yLW9mLW9uLW1hcC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZv
ci1vZi1vbi1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4YjdlZTgxNDI0YTJkMmY1MzhjZTdiMjA1OWQ4
ZDZlNDU4ZTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1j
b250YWluaW5nLWZvci1vZi1vbi1tYXAuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gKmZp
bmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgW2FycmF5XSBvZiBub2RlcykgeworICAgICAg
ICBpZiAoIWFycmF5LmZpbmQoKHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIHlpZWxkIGFycmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOworCitsZXQg
bWFwID0gbmV3IE1hcCgpOworbm9JbmxpbmUobWFwW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KTsK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpCisgICAgbWFwLnNldChbMSwyLDQsNSw1XSwg
e30pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChsZXQgdiBv
ZiBmaW5kKG1hcCwgaSAlIDIpKSB7IH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZjMyNzM5MGQ3
Mzc1YTIyMDJhZTU5YTExMjQ2NTY5OGNiNmVhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCkBAIC0wLDAgKzEs
MjMgQEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBwKQoreworICAgIGZvciAobGV0IGFycmF5IG9m
IG5vZGVzKSB7CisgICAgICAgIGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9Jbmxp
bmUoZmluZCk7CisKK2xldCBzZXQgPSBuZXcgU2V0KCk7Citub0lubGluZShzZXRbU3ltYm9sLml0
ZXJhdG9yXSgpLm5leHQpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBzZXQu
YWRkKFsxLDIsNCw1LDVdLCB7fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsK
KyAgICBmb3IgKGxldCB2IG9mIGZpbmQoc2V0LCBpICUgMikpIHsKKyAgICAgICAgaWYgKGkgJSAy
ICE9PSAxKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJubyByZXN1bHQgc2hvdWxkIGhh
dmUgYmVlbiBwcm9kdWNlZCBoZXJlIik7CisgICAgICAgIGlmICghKHYgaW5zdGFuY2VvZiBBcnJh
eSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJlc3VsdCB3YXMgbm90IGFuIGFycmF5
Iik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9m
LWRvbmUtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUtZ2V0
dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFiNGM0OWM5M2IyOWZjYjBmNzEwYzZjODJkMWZkODgwMDFhMjJl
MjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9u
ZS1nZXR0ZXIuanMKQEAgLTAsMCArMSwyMyBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsr
aSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7
CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAg
IGdldCBkb25lKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5hbFRpZXIoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcmNlT1NSKCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAg
IHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7Cisg
ICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQorICAg
IGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcyBiL0pT
VGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTcwOTZlZTAzZTE1MjU3M2FlZGM2NGQwNDM5ZmIyYmYyMmM2NDE1YgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKQEAgLTAs
MCArMSwyMSBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxldCByZXR1
cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIGRvbmU6IDAs
CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAg
IGRvbmU6IHRoaXMuZG9uZSsrLAorICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsgaWYgKGlz
RmluYWxUaWVyKCkpIEZvcmNlT1NSKCk7ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisK
KyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBy
ZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAg
ICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQorICAgIH0gY2F0Y2ggeworICAgIH0KKyAgICBp
ZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5q
cyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMmJkMzJhZGQ3Y2MzYmEzNDMyNTRkYTcxMDhlNTE5ZmY3NWIzMjUxCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJu
cy1ub24tb2JqZWN0LmpzCkBAIC0wLDAgKzEsMTYgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1
OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxl
ID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4gMTsgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVy
YXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNhbGxl
ZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRlcmFi
bGUpIHsgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT0gIlR5cGVFcnJvcjog
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCisgICAgICAgICAg
ICB0aHJvdyBlOworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tZG9u
ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20t
ZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGExNDJjOGE2YzU0
ZjQ3NmVjMDM5YTE0ZTllMmQzZTdiOTZkZjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAg
KzEsMjQgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9y
OworICAgIGxldCByZXR1cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBu
ZXh0KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZ2V0IGRvbmUoKSB7CisgICAgICAgICAg
ICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3ltYm9s
Lml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAgICAg
ICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHRyeSB7
CisgICAgICAgIGZvciAoYSBvZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAg
ICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZy
b20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS1u
ZXh0LWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IxOTRmZDdjYTVhYzU5YWQ2OTYx
OTQyZjg2MjdiNjBhNWFhMzAxOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Ro
cm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2ZvciAo
bGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCByZXR1
cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeworICAgICAg
ICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW1N5
bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7Cisg
ICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAgICBu
b0lubGluZShpdGVyYWJsZS5uZXh0KTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRl
cmFibGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJvcnIoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQor
CisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3It
b2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4t
Zm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDg3ODgzNThlNGVkMzA2MTJhY2M2ZjJlZjNh
MzBkOGQ1NjY2NzlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJv
bS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI3IEBACitmb3Ig
KGxldCBpID0gMDsgaSA8PSAxZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQgcmV0
dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkg
eyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZG9uZTogZmFsc2UsCisgICAgICAgIGdldCB2YWx1
ZSgpIHsKKyAgICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0s
CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAg
cmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKSB7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICB9Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAgICAgICB0
aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396731</attachid>
            <date>2020-04-16 18:04:43 -0700</date>
            <delta_ts>2020-04-18 14:34:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175454-20200416180442.patch</filename>
            <type>text/plain</type>
            <size>254182</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDI5MTBmMjUzY2UyYzRkYjQwNzUwZWJiZjFkYTIyYjZmNGY2YmM3Li41NzYzMWRhYjZjYTc5YjRl
ZTM2NzU5YzhmYjk1MjMzOTg2ZmI1ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMjAtMDQtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBU
aGlzIHBhdGNoIGludHJpbnNpY3MgZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMgd2hlbiB0
aGV5IGFyZQorICAgICAgICBiZWluZyBpdGVyYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBTeW1ib2wu
aXRlcmF0b3IuIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgYWRkaW5nIHR3byBuZXcgYnl0ZWNvZGVz
IG9wX2l0ZXJhdG9yX29wZW4gYW5kCisgICAgICAgIG9wX2l0ZXJhdG9yX25leHQuIFRoZXNlIGJ5
dGVjb2RlcyBhcmUgZXNzZW50aWFsbHkgYSBmdXNlZCBzZXQgb2YKKyAgICAgICAgZXhpc3Rpbmcg
Ynl0ZWNvZGVzIHdpdGggYSBzcGVjaWFsIGNhc2UgZm9yIG91ciBpbnRyaW5zaWNlZCBKU0FycmF5
CisgICAgICAgIGNhc2UuIFRoaXMgcGF0Y2ggb25seSBhZGRzIHN1cHBvcnQgZm9yIHRoZXNlIGlu
c3RydWN0aW9ucyBvbgorICAgICAgICA2NC1iaXQuCisKKyAgICAgICAgVGhlIG9wX2l0ZXJhdG9y
X29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1lIGFzOgorICAgICAgICBgaXRl
cmF0b3IgPSBzeW1ib2xJdGVyYXRvcihpdGVyYWJsZSk7IG5leHQgPSBpdGVyYXRvci5uZXh0O2As
CisgICAgICAgIHdoZXJlIGl0ZXJhYmxlIGlzIHRoZSByaHMgb2YgdGhlIGZvci1vZiBhbmQgc3lt
Ym9sSXRlcmF0b3IgaXMgdGhlCisgICAgICAgIHJlc3VsdCBvZiBydW5uaW5nIGl0ZXJhYmxlLnN5
bWJvbEl0ZXJhdG9yOworCisgICAgICAgIFRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2RlIGlz
IHNlbWFudGljYWxseSB0aGUgc2FtZSBhczoKKyAgICAgICAgYG5leHRSZXN1bHQgPSBuZXh0LkBj
YWxsKGl0ZXJhdG9yKTsgZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsgdmFsdWUKKyAgICAgICAgPSBk
b25lID8gdW5kZWZpbmVkIDogbmV4dFJlc3VsdC52YWx1ZWAsIHdoZXJlIG5leHRSZXN1bHQgaXMg
YQorICAgICAgICB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhlIExM
SW50L0Jhc2VsaW5lIGFuZCBhCisgICAgICAgIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAgICBJ
biBvcmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVyZm9t
YW5jZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEgYW5k
IGlubGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlfaWQg
Y29kZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhlCisg
ICAgICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRjaCBh
ZGRzIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQgdGhl
IGNvcnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJyZW50
IGJ5dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUgbWVh
bmluZ2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0aWxs
IHVzZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1vc3Qg
b2YgdGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZhY3Rv
cmVkIGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhhdCBh
cmUKKyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUgdHJp
Y2tpZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQgREZH
CisgICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3Qg
aGF2ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBERkcg
Z3JhcGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcgYWxs
IHRoZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5nL1Bo
YW50b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikgUm9s
bGluZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dpdGNo
aW5nIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwgZWFjaCB2YXJp
YWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpvcjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3I4KToKKyAgICAgICAg
KiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpv
YnNlcnZlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVT
dHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjp0
bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlT3Bl
cmFuZHNGb3JDaGVja3BvaW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVG
b3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6
CisgICAgICAgIChKU0M6Omhhc1ZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OnZhbHVl
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OmRlc3RpbmF0aW9uRm9yKToKKyAgICAgICAgKEpT
Qzo6Y2FsbGVlRm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNG
b3IpOgorICAgICAgICAoSlNDOjpzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OmNhbGxMaW5rSW5mb0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElu
bGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChK
U0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5z
dHJ1Y3Rpb246Omhhc0NoZWNrcG9pbnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3Ry
dWN0aW9uOjphc0tub3duV2lkdGggY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rp
b246OndpZGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTMy
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JdGVyYXRpb25Nb2RlTWV0YWRhdGEuaDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oLgor
ICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENh
Y2hlKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc1N1YnR5cGVTcGVj
dWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uQ29udGFpbnMpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29w
ZTo6cmVsZWFzZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0VtcHR5KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9wZW4pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNDbG9z
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRv
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvckNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcyk6
CisgICAgICAgICogZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
OkF0VGFpbEFic3RyYWN0U3RhdGU6OnRtcCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmJvdHRvbVZh
bHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
VmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVN
aW5NYXgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklU
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJ
VEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVk
QXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNl
OjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlv
blBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNh
dGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6REZH
Ojpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YmVn
aW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmVu
ZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpt
ZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNpemUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAgICAg
KEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3BlcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxh
Y2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
TGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3BlY3VsYXRl
ZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhbGxlclJldHVyblBDKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAg
ICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvTWV0YWRhdGEucmI6Cisg
ICAgICAgICogZ2VuZXJhdG9yL1NlY3Rpb24ucmI6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAg
ICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENhbGxS
ZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29w
ZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJ
VENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6
SklUOjpjaGVja3BvaW50UmVhY2hlZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93
VG9Ib3RGb3JDaGVja3BvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxp
bmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgor
ICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpsbGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAg
ICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAg
ICAgICAgKEpTQzo6aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlND
OjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9y
X29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlf
ZmFzdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAg
ICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlND
OjppdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAg
IChKU0M6OmludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bkNvbmN1cnJlbnRseSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpkdW1wQnJpZWYgY29uc3QpOgorCiAyMDIwLTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3IvSlNT
ZXRJdGVyYXRvciB3aXRoIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDMyMGFiMGUz
MThhMDYxZTYwYjkzNGZmMjExYzE3ZmI4MTY1ZDNmNi4uNjJkMmM3MmMyOTE2ZTBlMDBhOWYwNmRk
YTEzMDA4NGQzNjQwM2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNC0xNiAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWRlc2lnbiBob3cg
d2UgZG8gZm9yLW9mIGl0ZXJhdGlvbiBmb3IgSlNBcnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IEZpbGlwIFBpemxvLgorCisgICAgICAgICogd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRz
Lmg6CisKIDIwMjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50
VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGJhNjIwMTkwMjMyNWZmZDA0MjYwMjI5YWM0Yzc0MDgxZjhlOTRmYWQuLjk1
OTUzZGI0OTMwMjJhYzFlYzQwZTM5ZjEyNDc5NmY4MDU3MTU4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNTMsNiArMTM1Myw3IEBAIFdFQktJVF9DT1BZX0ZJTEVT
KEphdmFTY3JpcHRDb3JlX0NvcHlQcml2YXRlSGVhZGVycwogICAgIEZJTEVTICR7SmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSU30KICAgICBGTEFUVEVORUQKICkKK2FkZF9k
ZXBlbmRlbmNpZXMoSmF2YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIEJ5dGVjb2RlcyBK
U0NCdWlsdGlucykKICMgSmF2YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIG5lZWRzIHRv
IGhhdmUgYSBkaXJlY3Qgb3IgaW5kaXJlY3QKICMgZGVwZW5kZW5jeSBvZiBKYXZhU2NyaXB0Q29y
ZSBmb3IgQ01ha2UgVmlzdWFsIFN0dWRpbyBnZW5lcmF0b3IgdG8KICMgZWxpbWluYXRlIGR1cGxp
Y2F0ZWQgY3VzdG9tIGNvbW1hbmRzLiBPdGhlcndpc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0YjhlMTgxY2MyOGUuLjVmNjNh
ZjMwYTc1MzQ3ZWU2Y2ViZTg5Yjg0YzA3OTg3YzA4ODJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMTAzLDYgKzExMDMsOCBAQAogCQk1M0M0RjY2QjIxQjFBNDA5MDAyRkQw
MDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUdsb2JhbE9i
amVjdC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9wY29kZU9y
aWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTND
NkZFRUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCAqLzsgfTsKIAkJNTND
QTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQgLyog
V2FzbUJCUVBsYW4uaCAqLzsgfTsKKwkJNTNEMzU0OTkyNDBEODhCRDAwODk1MEREIC8qIEJ5dGVj
b2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVPcGVy
YW5kc0ZvckNoZWNrcG9pbnQuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8q
IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVN
ZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERCMURBRjA4
QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4RjgyMTU0
NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1
ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFF
OTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBAIC0zODE0
LDYgKzM4MTYsOSBAQAogCQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9wY29kZU9y
aWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bjb2Rl
T3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcxRUE1MzNE
ODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhc21CQlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTNDQTczMDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzRDM1NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZU9wZXJhbmRzRm9yQ2hl
Y2twb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU9wZXJh
bmRzRm9yQ2hlY2twb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0QzNTQ5
ODI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVVc2VEZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1l
dGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlvbk1vZGVN
ZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Q0NDREQjFEQUYwOEFC
MDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzV2FzbUFkZHJlc3NWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1Zh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NEREMURBRjA5QTAwMEI5
Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUFkZHJl
c3NWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRTFGOEY3MjE1NDcx
NDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1ZhbHVlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODIyMCw4ICs4MjI1LDEwIEBACiAJCQkJQzJGQ0FFMEUxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgKi8sCiAJCQkJQzJGQ0FFMEYxN0E5QzI0RTAwMzRDNzM1
IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oICovLAogCQkJCTBGNjY2RUJFMTgzNTY2Rjkw
MEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCisJCQkJNTNE
MzU0OTcyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50Lmgg
Ki8sCiAJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3Bw
ICovLAogCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmgg
Ki8sCisJCQkJNTNEMzU0OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAq
LywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywK
IAkJCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywKIAkJCQkw
RjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1LDYgKzgz
MjIsNyBAQAogCQkJCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVh
bS5jcHAgKi8sCiAJCQkJMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3Ry
ZWFtLmggKi8sCiAJCQkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rp
b25BbGxvY2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAv
KiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4
NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyog
SnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJMEYyREQ4
MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4
OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcgQEAKIAkJCQkwRkQy
RkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktp
bmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFFOTg0QiAvKiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFFNzE2Q0Ew
MDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwMTEzRDRD
MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUwNzA4MzNjYmY1YmE1
ZWJlZjBlYzguLjE1Mzk3ZThiN2Y0OGE4NGZiMjdmMTFkMmYxMzcxZTBlMmEzMDFjYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oCkBAIC02ODYsNiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1t
MzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIExvZ2ljYWxJ
bW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMyKGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBs
b2FkOChhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlUZW1wUmVnaXN0ZXIs
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAg
ICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG9yNjQoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTE2MDMsNyArMTYxNyw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgbWVt
b3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNy
Yywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgY29uc3Qg
dm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCAwKTsKQEAgLTE2MTgs
NyArMTYzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJl
c3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChU
cnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJ
bW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1t
MzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAgICAgICAgIGlmICgh
aW1tOC5tX3ZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggOGM2OTc5YmI5YjJmZGViMDRjYTAyNmU3
NjZkMjA4YjczYTA2M2YyZS4uMmExZGRlZGVlMzZkYmUzY2RlNTcyZjQ4NjA1YTQ2NGM4MGI2ZTc4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpv
cjE2OworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjg7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9h
ZDMyOwpAQCAtOTYsNiArOTcsMTIgQEAgcHVibGljOgogICAgICAgICBvcjE2KGltbSwgQWRkcmVz
cyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0z
MiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG9y
OChpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKKyAgICB9CisKICAgICB2b2lkIHN1
YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9m
aWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5k
ZXggZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4YzBlOGRlMjM3YjIwMS4uOTQyNjU3YzYyZjA3
NDljYTA1YzRlZWU0ZDY3Yjk1ZmU2NDU1ZDllNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApAQCAtMjA3LDEwICsyMDcsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRPdXRPZkJvdW5kcygpIHsgbV9vdXRPZkJvdW5kcyA9IHRydWU7IH0KICAgICBi
b29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAg
ICAgCi0gICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
IHsKLSAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAg
IH0KKyAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkg
eyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsgfQorICAgIHZvaWQgb2JzZXJ2
ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQg
PSBzdHJ1Y3R1cmUtPmlkKCk7IH0KIAogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIHZvaWQgY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayos
IFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMWY1NjY5NGNlNzAwZmRlYmUxZmRjYmQw
NDRmMmE4N2QwODhmN2VhMi4uZTI4OGE5OTcyMDA4YmM5NTI5N2Y1OGFmMDk1OWQzZmNkOTQwZGRl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CkBAIC0zNCw2ICszNCw3IEBAIHR5cGVzIFsKICAgICA6R2V0QnlWYWxIaXN0b3J5LAogICAgIDpH
ZXRQdXRJbmZvLAogICAgIDpJbmRleGluZ1R5cGUsCisgICAgOkl0ZXJhdGlvbk1vZGVNZXRhZGF0
YSwKICAgICA6SlNDZWxsLAogICAgIDpKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCwKICAgICA6
SlNHbG9iYWxPYmplY3QsCkBAIC0xMTYyLDYgKzExNjMsNTkgQEAgb3AgOmdldF9yZXN0X2xlbmd0
aCwKICAgICAgICAgbnVtUGFyYW1ldGVyc1RvU2tpcDogdW5zaWduZWQsCiAgICAgfQogCisjIFNl
bWFudGljYWxseSwgdGhpcyBpcyBpdGVyYXRvciA9IHN5bWJvbEl0ZXJhdG9yKGl0ZXJhYmxlKTsg
bmV4dCA9IGl0ZXJhdG9yLm5leHQ7CisjIEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93ZXZlciwg
dGhpcyBoYXMgc3BlY2lhbCBiZWhhdmlvciB3aGVyZSBuZXh0IGJlY29tZXMgdGhlIGVtcHR5IHZh
bHVlLCB3aGljaAorIyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgaW4gYSBrbm93biBpdGVyYXRpb24g
bW9kZSB0byBvcF9pdGVyYXRvcl9uZXh0Lgorb3AgOml0ZXJhdG9yX29wZW4sCisgICAgYXJnczog
eworICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0OiBWaXJ0
dWFsUmVnaXN0ZXIsCisgICAgICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIGl0ZXJhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1
bnNpZ25lZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhdGlvbk1ldGFk
YXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAorICAg
ICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbW9kZU1ldGFkYXRh
OiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgc3ltYm9sQ2FsbDogbmlsLAor
ICAgICAgICBnZXROZXh0OiBuaWwsCisgICAgfQorCisjIFNlbWFudGljYWxseSwgdGhpcyBpcyBu
ZXh0UmVzdWx0ID0gbmV4dC5AY2FsbChpdGVyYXRvcik7IGRvbmUgPSBuZXh0UmVzdWx0LmRvbmU7
IHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IG5leHRSZXN1bHQudmFsdWU7CitvcCA6aXRlcmF0
b3JfbmV4dCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRvbmU6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgbmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYXRv
cjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAg
fSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9u
TW9kZU1ldGFkYXRhLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAg
ICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgbmV4dFJlc3Vs
dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTogR2V0QnlJ
ZE1vZGVNZXRhZGF0YSwKKyAgICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAg
ICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIHZhbHVl
UHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAgICBuZXh0
UmVzdWx0OiBKU1ZhbHVlLAorICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgY29t
cHV0ZU5leHQ6IG5pbCwKKyAgICAgICAgZ2V0RG9uZTogbmlsLAorICAgICAgICBnZXRWYWx1ZTog
bmlsLAorICAgIH0KKwogb3AgOnlpZWxkLAogICAgIGFyZ3M6IHsKICAgICAgICAgZ2VuZXJhdG9y
OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xMjkwLDYgKzEzNDQsOCBAQCBvcCA6b3BfZ2V0X2J5X2lk
X3JldHVybl9sb2NhdGlvbgogb3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uCiBvcCA6
b3BfcHV0X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92YWxfcmV0dXJuX2xv
Y2F0aW9uCitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVy
YXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9w
IDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmlu
ZGV4IGM2ZWZlMGQ4ZmY2Yzc5ODk2YWZkMDBlMjBjYzQyNzc5ZDNhNGIwYzcuLmQ1ODdlZTAzZjI2
ZDhkZmI5NGQwOGQ0NDIwNDA4Y2FjNTBhMzhlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBA
IC0yMzEsNiArMjMxLDEzIEBAIEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1wTGl2ZW5l
c3NGb3JDaGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrCiAgICAgICAgICAgICBy
ZXN1bHQuc2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsK
KyAgICAgICAgcmVzdWx0LnNldChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9w
ZXJhbmRzRm9yQ2hlY2twb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFhY2FjZjNiZmVkMTVj
NmMxN2NhYTZjYjFlOTU4MTI4ZDVkMmYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oCkBAIC0w
LDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKKyNpbmNsdWRlICJC
eXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZUZvckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2ln
bmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4
KTsKKyAgICByZXR1cm4gJm1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNBcnJheVBy
b2ZpbGVGb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJ
bmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2tw
b2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0Fy
cmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1
bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKGhhc0FycmF5UHJvZmlsZUZv
cihtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KSk7CisgICAgcmV0dXJuICphcnJheVByb2ZpbGVG
b3JJbXBsKG1ldGFkYXRhLCBjaGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCeXRlY29kZU1ldGFkYXRhPgorVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JJbXBsKEJ5
dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRl
Y29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIHN3
aXRjaCAoY2hlY2twb2ludEluZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5
bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAgICAgIGNh
c2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UHJvZmls
ZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorCisgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2Rl
SUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRl
eCkgeworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZt
ZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0
OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxl
OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIAorICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK2Jvb2wgaGFzVmFsdWVQcm9m
aWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5k
ZXgpCit7CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9p
bnRJbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1
ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5z
aWduZWQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChoYXNWYWx1ZVByb2ZpbGVGb3Io
bWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCkpOworICAgIHJldHVybiAqdmFsdWVQcm9maWxlRm9y
SW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGU+CitPcGVyYW5kIGRlc3RpbmF0aW9uRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29k
ZSwgdW5zaWduZWQgY2hlY2twb2ludEluZGV4LCBKSVRUeXBlIHR5cGUgPSBKSVRUeXBlOjpOb25l
KQoreworICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhw
ciAoQnl0ZWNvZGU6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgc3dp
dGNoIChjaGVja3BvaW50SW5kZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3lt
Ym9sQ2FsbDogcmV0dXJuIGJ5dGVjb2RlLm1faXRlcmF0b3I7CisgICAgICAgIGNhc2UgT3BJdGVy
YXRvck9wZW46OmdldE5leHQ6IHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgICAgIGRlZmF1
bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0g
b3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewor
ICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogeworICAgICAgICAgICAg
aWYgKHR5cGUgPT0gSklUVHlwZTo6REZHSklUIHx8IHR5cGUgPT0gSklUVHlwZTo6REZHSklUKQor
ICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5leHQ6Om5leHRS
ZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fdmFsdWU7IC8vIFdlIHJldXNl
IHZhbHVlIGFzIGEgdGVtcCBiZWNhdXNlIGl0cyBlaXRoZXIgbm90IHVzZWQgaW4gc3Vic2VxdWVu
dCBieXRlY29kZXMgb3Igd3JpdHRlbiBhcyB0aGUgdGVtcCBvYmplY3QgLgorICAgICAgICB9Cisg
ICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBieXRlY29kZS5tX2Rv
bmU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gYnl0ZWNv
ZGUubV92YWx1ZTsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZQorICAgICAgICBy
ZXR1cm4gYnl0ZWNvZGUubV9kc3Q7Cit9CisKKy8vIENhbGwtbGlrZSBvcGNvZGUgbG9jYXRpb25z
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorVmlydHVhbFJlZ2lzdGVyIGNhbGxlZUZv
cihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sK
KyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5
dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICBy
ZXR1cm4gYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcjsKKyAgICB9IGVsc2UgaWYgY29uc3RleHBy
IChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBBU1NF
UlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7CisgICAg
ICAgIHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBi
eXRlY29kZS5tX2NhbGxlZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+Cit1bnNp
Z25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0Zvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNv
ZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2tw
b2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9p
dGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVy
YXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgaWYg
Y29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAg
ICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4
dCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNv
ZGUubV9hcmdjOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3B0cmRpZmZfdCBz
dGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVu
c2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludElu
ZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRv
cl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9w
ZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnMgLSBieXRlY29kZS5tX2l0ZXJhYmxlLm9mZnNldCgpOworICAgIH0gZWxzZSBpZiBj
b25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAg
ICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0
KTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gYnl0
ZWNvZGUubV9pdGVyYXRvci5vZmZzZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5
dGVjb2RlLm1fYXJndjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4K
K0xMSW50Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm9Gb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0
YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hl
Y2twb2ludEluZGV4KTsKKyAgICByZXR1cm4gbWV0YWRhdGEubV9jYWxsTGlua0luZm87Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3Zjcw
ZTBkNTYyNmMxMy4uYTVhNTA3ZWQyZTkyZGNlZTNmYzE1MWJkZWIyYTYyNzI3M2MyMjc1MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CkBAIC0yNTksNiArMjU5LDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKIAogICAgIFVTRVMo
T3BZaWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKIAorICAgIFVTRVMoT3BJdGVyYXRvck9wZW4s
IHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZSkKKyAgICBVU0VTKE9wSXRlcmF0b3JOZXh0LCBpdGVy
YXRvciwgbmV4dCwgaXRlcmFibGUpCisKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NwcmVh
ZDoKICAgICAgICAgaGFuZGxlTmV3QXJyYXlMaWtlKGluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5
V2l0aFNwcmVhZD4oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw2ICs0ODksOSBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydQogCiAgICAgREVGUyhPcENhdGNoLCBleGNlcHRpb24sIHRocm93
blZhbHVlKQogCisgICAgREVGUyhPcEl0ZXJhdG9yT3BlbiwgaXRlcmF0b3IsIG5leHQpCisgICAg
REVGUyhPcEl0ZXJhdG9yTmV4dCwgZG9uZSwgdmFsdWUpCisKICAgICBjYXNlIG9wX2VudGVyOiB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVZhcnM7IGktLTspCiAgICAgICAgICAgICBm
dW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDI5ZjYwZTk0MjgyMjU5MTk0
Nzc2ODU1N2VhODdhNjU3ZjIzYTYwYi4uOTE1Y2M2MzFkYmQyODQ1ZWU5MTM4ZTEzOWViNjllOTYz
NDE3NTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKQEAgLTQwLDE4ICs0MCwzNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQ2FsbExpbmtJ
bmZvOjpDYWxsVHlwZSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKE9wY29kZUlEIG9wY29kZUlE
KQogewotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NhbGxf
ZXZhbCkKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFy
YXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKKyAgICAgICAg
cmV0dXJuIFRhaWxDYWxsVmFyYXJnczsgICAgICAgIAorCisgICAgY2FzZSBvcF9jYWxsOgorICAg
IGNhc2Ugb3BfY2FsbF9ldmFsOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNl
IG9wX2l0ZXJhdG9yX25leHQ6CiAgICAgICAgIHJldHVybiBDYWxsOwotICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsX3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICAg
ICAgcmV0dXJuIENhbGxWYXJhcmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3Qp
CisKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdDsKLSAg
ICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2Nv
bnN0cnVjdF92YXJhcmdzOgogICAgICAgICByZXR1cm4gQ29uc3RydWN0VmFyYXJnczsKLSAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKQorCisgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAg
ICAgICAgIHJldHVybiBUYWlsQ2FsbDsKLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KTsKLSAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOworCisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIENhbGw7CiB9CiAKIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGYxM2Qx
NzM0YTAyYzU4YTMyMTc1OTI1ZDI4ODU1YTJhMjYwMDE4MTguLmI5MGY4MjQ2ZmM2MTExMzc4YWVi
ZWY5MDI1NmYxMTVlZjE3ZTNiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtODEsNiArODEsMTMgQEAgQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQ29kZUIKICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FsbExpbmtJbmZv
ID0gJmluc3RydWN0aW9uLT5hczxPcFRhaWxDYWxsPigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2sp
Lm1fY2FsbExpbmtJbmZvOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29w
ZW46CisgICAgICAgIGNhbGxMaW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9w
ZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgY2FsbExpbmtJbmZvID0g
Jmluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2Nr
KS5tX2NhbGxMaW5rSW5mbzsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0OTIwYjZhODc4MTU3ZTYxNjBi
NjUzZTdhNGU3MzA0YjIuLjcyYTA5NGVlNjhlNDc2OGI4MTEyYTEzYTNhMmQyYzdiMzIzMjYxYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJD
YWxsTGlua1N0YXR1cy5oIgpAQCAtNTgzLDYgKzU4NCwyMCBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBMSU5LKE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJv
bEZsb3cpCiAKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJ
TklUSUFMSVpFX01FVEFEQVRBKE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJl
ck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAg
SU5JVElBTElaRV9NRVRBREFUQShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1i
ZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAg
IElOSVRJQUxJWkVfTUVUQURBVEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsMTQgKzEyMzks
MjcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQx
OAogICAgICAgICAvLyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZl
X3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2Nv
cGUgcmVzb2x1dGlvbi4KIAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4o
WyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgIGF1dG8gY2xlYXJJ
Zk5lZWRlZCA9IFsmXSAoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhLCBBU0NJSUxp
dGVyYWwgb3BOYW1lKSB7CisgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0
QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
U3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVy
ZUlEID0gbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAg
aWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5n
IExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRh
ZGF0YSk7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJD
bGVhcmluZyAiLCBvcE5hbWUsICIgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAg
ICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxM
SW50R2V0QnlJZENhY2hlKG1vZGVNZXRhZGF0YSk7CisgICAgICAgIH07CisKKyAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewor
ICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgIml0ZXJh
dG9yIG9wZW4iX3MpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVh
cklmTmVlZGVkKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG5leHQiX3Mp
OworICAgICAgICAgICAgY2xlYXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRh
LCAiaXRlcmF0b3IgbmV4dCJfcyk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBj
bGVhcklmTmVlZGVkKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCAiZ2V0IGJ5IGlkIl9zKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKQEAgLTEzMjYsOSArMTM1NCwyNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIgPSBb
Jl0gKCkgewogICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5h
dChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0g
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dl
dF9ieV9pZCkgeworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAgICAg
ICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFk
YXRhKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9y
X29wZW46IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICJDbGVhcmluZyBMTEludCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAg
ICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVu
PigpLm1ldGFkYXRhKHRoaXMpLm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogewor
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFy
aW5nIExMSW50IGl0ZXJhdG9yIG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBkb24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hlcyBo
ZXJlIGJ1dCBpdCdzIGtpbmRhIGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRoaXMg
aXMgcmVmZXJyaW5nIHRvLi4uCisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0
cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAg
ICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVh
ckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAg
ICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpj
bGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMDg3LDExIEBAIFZhbHVlUHJvZmlsZSog
Q29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46Cisg
ICAgICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
T3Blbj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3Io
aW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29k
ZUluZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJ
bmxpbmVzLmgKaW5kZXggMjJlNzZiMTg1ZWI5ZWJhOTdkZTliYjA4MWQ2NDE4NmJmNTRjZTRhYS4u
NTM2MjI4OTA3ZTg0YzQ5MzNjZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwxMiAr
MzksMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3Rv
ciYgZnVuYykKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwK
LSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVu
YyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmls
ZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9G
SUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKLSAgICB9CisKKyAgICAgICAgbV9tZXRhZGF0YS0+
Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAgICAg
ICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1
bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNl
KTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICB9
KTsKKyAgICB9ICAgCiAKIH0KIApAQCAtNjgsNiArODAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZv
ckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogI3VuZGVmIFZJU0lUMQog
I3VuZGVmIFZJU0lUMgorCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5l
eHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9p
dGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IDkzZjIyNzBhY2E2NTJi
ZjE5YzJjOTU1OTFlZGFlNTE2NzdhMjg4YzIuLjIyMmViMTk1ZDEzMDYxOTc3MDZhZmQyNmI0ODFm
MzYxMjczNzI5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
U3RhdHVzLmNwcApAQCAtODYsNiArODYsMzYgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGUKICAg
ICBjYXNlIG9wX2dldF9ieV92YWw6CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9y
bWF0aW9uLCBmYWxzZSk7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAg
QVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JPcGVuOjpnZXRO
ZXh0KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRv
ck9wZW4+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisKKyAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2FkLgor
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDM5
CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2Rl
OjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24s
IGZhbHNlKTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5k
ZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJh
dG9yX25leHQ6IHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck5leHQ+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CisgICAgICAgIGlmIChieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSkgeworICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRN
b2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9y
bWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fZG9u
ZU1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlkZW50
aWZpZXIgPSAmdm0ucHJvcGVydHlOYW1lcy0+ZG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIEFTU0VSVChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSA9PSBPcEl0ZXJhdG9yTmV4
dDo6Z2V0VmFsdWUpOworICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRh
dGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
R2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgc3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlE
OworICAgICAgICAgICAgaWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OiB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAppbmRleCAwODVhZThkMTk5NzZiODg2ZjAwMTlmODVmYTY3YjAyYmUxNGNkYTVlLi4z
ZDcwY2Q1NDNlY2ZhZTkwMjI1MDI5NjAxYTBkNDA1ZWM2NzFiMmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMzIsNyArMzIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogc3RydWN0IEpTT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJ
RCA9IDo6SlNDOjpPcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJl
ck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJF
Ul9PRl9CWVRFQ09ERV9XSVRIX0NIRUNLUE9JTlRTKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9w
Y29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8T3Bjb2Rl
SUQ+KE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNvZGVzV2l0
aE1ldGFkYXRhKTsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9IG9wX3dp
ZGUxNjsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IG9wX3dpZGUzMjsK
ICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVMZW5ndGhzID0gOjpK
U0M6Om9wY29kZUxlbmd0aHM7CkBAIC00MSw3ICs0Myw5IEBAIHN0cnVjdCBKU09wY29kZVRyYWl0
cyB7CiAKIHN0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAgICB1c2luZyBPcGNvZGVJRCA9IFdh
c21PcGNvZGVJRDsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNv
ZGVzV2l0aENoZWNrcG9pbnRzID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KE5VTUJFUl9PRl9XQVNN
X1dJVEhfQ0hFQ0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVy
T2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09G
X1dBU01fV0lUSF9NRVRBREFUQSk7CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhDaGVja3BvaW50cyA8PSBudW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSk7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMTYgPSB3YXNtX3dpZGUxNjsKICAgICBzdGF0
aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUzMiA9IHdhc21fd2lkZTMyOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSB3YXNtT3Bjb2RlTGVuZ3Ro
czsKQEAgLTk4LDEyICsxMDIsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFycm93KCkt
PnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUcmFpdHM6OndpZGUzMjsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KKyAgICBPcGNv
ZGVTaXplIHdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1dpZGUzMjxUcmFpdHM+
KCkpCisgICAgICAgICAgICByZXR1cm4gT3Bjb2RlU2l6ZTo6V2lkZTMyOworICAgICAgICByZXR1
cm4gaXNXaWRlMTY8VHJhaXRzPigpID8gT3Bjb2RlU2l6ZTo6V2lkZTE2IDogT3Bjb2RlU2l6ZTo6
TmFycm93OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2Rl
VHJhaXRzPgogICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0
YWRhdGE7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVU
cmFpdHM+CisgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dpdGhD
aGVja3BvaW50czsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09w
Y29kZVRyYWl0cz4KICAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50KCkgY29uc3QKICAgICB7CkBAIC0x
MzcsNiArMTU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFp
dHM+CisgICAgVCBhc0tub3duV2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKChp
czxULCBUcmFpdHM+KCkpKTsKKyAgICAgICAgcmV0dXJuIFQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB0eXBlbmFtZSBUeXBlQnlTaXplPHdpZHRoPjo6dW5zaWduZWRUeXBlKj4odGhpcyArICh3aWR0
aCA9PSBPcGNvZGVTaXplOjpOYXJyb3cgPyAxIDogMikpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0
ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4KICAgICBUKiBjYXN0
KCkKICAgICB7CkBAIC0xNjEsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHsKIAogICAgICAgICBB
U1NFUlQoaXNXaWRlMTY8VHJhaXRzPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1w
bDxPcGNvZGVTaXplOjpXaWRlMTY+Kj4odGhpcyArIDEpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgpAQCAtMTY5LDE0ICsxOTQsMTYgQEAg
cHVibGljOgogICAgIHsKIAogICAgICAgICBBU1NFUlQoaXNXaWRlMzI8VHJhaXRzPigpKTsKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRl
MzI+Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyAxKTsKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+Kj4odGhpcyAr
IDEpOwogICAgIH0KIH07CiAKIHN0cnVjdCBJbnN0cnVjdGlvbiA6IHB1YmxpYyBCYXNlSW5zdHJ1
Y3Rpb248T3Bjb2RlSUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbnN0cnVjdGlvbikg
PT0gMSwgIlNvIHBvaW50ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsKIAogc3Ry
dWN0IFdhc21JbnN0YW5jZSA6IHB1YmxpYyBCYXNlSW5zdHJ1Y3Rpb248V2FzbU9wY29kZUlEPiB7
CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbUluc3RhbmNlKSA9PSAxLCAiU28gcG9pbnRl
ciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2Rl
TWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JdGVyYXRpb25Nb2Rl
TWV0YWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmQ2OTE5MzFjNmM3OTQ4ZTU1N2U0ZjU2OTIzYWUzNDkw
ZmViOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IEpTQyB7CisKK2VudW0gY2xhc3MgSXRlcmF0aW9uTW9kZSA6IHVpbnQ4X3QgeworICAgIEdlbmVy
aWMgPSAxIDw8IDAsCisgICAgRmFzdEFycmF5ID0gMSA8PCAxLAorfTsKKworY29uc3RleHByIHVp
bnQ4X3QgbnVtYmVyT2ZJdGVyYXRpb25Nb2RlcyA9IDI7CisKK09WRVJMT0FEX0JJVFdJU0VfT1BF
UkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhJdGVyYXRpb25Nb2RlKTsKKwor
c3RydWN0IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSB7CisgICAgdWludDhfdCBzZWVuTW9kZXMgeyAw
IH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc2Vlbk1vZGVzKSkgPT0gc2l6
ZW9mKEl0ZXJhdGlvbk1vZGUpKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRl
eCAyZDE0M2I5Y2Y2NzQzMDVkNDBjOTFlYjBhZTM1MTMzMTI1Njk0NDFmLi5iYmUxZjY3ZmZiZWZl
OGU4YmIxMzY3ZWI2YzdlZDY3Y2JhYThhYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNjAsMTQgKzYwLDMxIEBA
IHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJl
SW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAgICAgfQogCiAgICAgYXV0byYgaW5zdHJ1Y3Rpb24g
PSBtX293bmVyLT5pbnN0cnVjdGlvbnMoKS5hdChtX2J5dGVjb2RlT2Zmc2V0LmdldCgpKTsKLSAg
ICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0
YWRhdGEobV9vd25lci5nZXQoKSkpOworICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlE
KCkpIHsKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRD
YWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkp
Lm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9y
X29wZW46CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9w
SXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKG1fb3duZXIuZ2V0KCkpLm1fbW9kZU1ldGFkYXRhKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRh
dGEobV9vd25lci5nZXQoKSk7CisgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRh
dGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZSht
ZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogfQogCi12b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFk
YXRhJiBtZXRhZGF0YSkKK3ZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1l
dGFkYXRhKQogewotICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFsdWUuCi0g
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hl
KCk7CisgICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CiB9CiAK
LQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKaW5kZXggMjIwZmZmM2UzYmY1NDM0MWU5NjFjODJkZjhj
NGU4YzkwMDA3MzRiZS4uMWQ1OTU3ZWZmODEwOTJhMWRhYmRlZTUwMjVjYWM1ZTZmMzg2NzgyYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsK
IAotICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRh
ZGF0YSYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0QnlJZE1v
ZGVNZXRhZGF0YSYpOwogCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaAppbmRleCAxODUxYjYzYzdjYTZhZWYyZmIzNmJmMmY4N2U5MmExOWUwZDQwYzE4Li5h
YTg4NTlhZGQ2Mjg2MGZmZGFkYjRkMjIyODdjMzRiMDdjZTViMzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0TVNCU2V0
Q29uc3RleHByKG0KICAgICBtYWNybyhPcFRhaWxDYWxsKSBcCiAgICAgbWFjcm8oT3BDYWxsRXZh
bCkgXAogICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCisgICAgbWFjcm8oT3BJdGVyYXRvck9wZW4p
IFwKKyAgICBtYWNybyhPcEl0ZXJhdG9yTmV4dCkgXAorCiAKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidHlwZS1saW1pdHMiKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkNzZkNGZhN2I0NmU5OGI5Zjk3MDBkYzM4
NjMwZjQuLjk0NjU4YjA5NmJmMTkzYzg3Y2ZkNzFhOWY1YmRlMTVmNjEzMzJhODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xMjAs
NiArMTIwLDE2IEBAIGlubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBib29sIGlzU3VidHlwZVNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkKK3sKKyAgICBy
ZXR1cm4gISh2YWx1ZSAmIH5jYXRlZ29yeSkgJiYgdmFsdWU7Cit9CisKK2lubGluZSBib29sIHNw
ZWN1bGF0aW9uQ29udGFpbnMoU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIGNh
dGVnb3J5KQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIGNhdGVnb3J5KSAmJiB2YWx1ZTsKK30K
KwogaW5saW5lIGJvb2wgaXNDZWxsU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7
CiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYmICEodmFsdWUgJiB+U3BlY0NlbGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmluZGV4
IDk2MTBkY2U1Y2RiYzNlYzA5Y2UzM2IxZDZiY2M0YjNmZjhhNmMzYzguLmU5YmY5NTMxZjdiYTU5
NTczMTEwZTMxYTdhNDRjZDIyOGI3NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAgLTQ4LDYgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsKICAgICB9CiAKKyAgICB2b2lkIHJlbGVhc2Uo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZG9TYW1wbGUpOworICAgICAgICBnX3N1cGVyU2Ft
cGxlckNvdW50LS07CisgICAgICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsKKyAgICB9CisKIHByaXZh
dGU6CiAgICAgYm9vbCBtX2RvU2FtcGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNkMzYy
Y2FjMTlkNDkzOTg5NDc3N2JlZGE3YzBhYzJkNjM2MDYzZi4uOGZlZGU2MmI1MzBlYmQxMDFmZWRh
NjFhYmFiOTQ5YTNmM2IzNTliNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwMTYsMTQgKzQwMTYs
MTUgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVk
ZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJk
YTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9m
Tm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKK3ZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywg
Rm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQog
ewogICAgIGJvb2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2RlID8gZm9yTG9vcE5vZGUtPmlzRm9y
QXdhaXQoKSA6IGZhbHNlOwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNGb3JBd2FpdCAm
JiBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CisgICAgYXV0byBzaG91
bGRFbWl0QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5v
OworICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFy
c2VNb2RlKCkpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9y
YXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJdGVy
YXRvcihzdWJqZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRJdGVyYXRvcihzdWJqZWN0LmdldCgp
LCBub2RlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBpc0ZvckF3YWl0ID8g
ZW1pdEdldEFzeW5jSXRlcmF0b3Ioc3ViamVjdC5nZXQoKSwgbm9kZSkgOiBlbWl0R2V0R2VuZXJp
Y0l0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBSZWY8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFi
ZWwoKTsKQEAgLTQxMzAsNyArNDEzMSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRF
bnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAg
ICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdl
dCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JBd2FpdCA/
IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0SXRlcmF0
b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0
KCksIG5vZGUsIHNob3VsZEVtaXRBd2FpdCk7CiAKICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygp
LmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5n
ZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CkBAIC00MTQzLDcgKzQx
NDQsMTQ1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIHBvcEZpbmFsbHlDb250
cm9sRmxvd1Njb3BlKCk7CiAgICAgICAgIGlmIChicmVha0xhYmVsSXNCb3VuZCkgewogICAgICAg
ICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3IgYnJlYWstZWQgY29udHJvbCBmbG93
LgotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGlz
Rm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm8pOworICAgICAgICAgICAg
ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBzaG91bGRFbWl0
QXdhaXQpOworICAgICAgICB9CisgICAgfQorICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7
Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0
IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2Fs
bEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xU
YWJsZSkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNpY3MoKSB8fCBp
czMyQml0KCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkpKSB7
CisgICAgICAgIGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9kZSwgc3ViamVjdE5vZGUsIGNhbGxC
YWNrLCBmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYWJsZSA9IG5ld1RlbXBvcmFyeSgp
OworICAgIGVtaXROb2RlKGl0ZXJhYmxlLmdldCgpLCBzdWJqZWN0Tm9kZSk7CisKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JTeW1ib2wgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgaXRlcmFibGUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRPckluZGV4ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgQ2FsbEFyZ3Vt
ZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBtb3ZlKGFyZ3MudGhpc1JlZ2lzdGVy
KCksIGl0ZXJhYmxlLmdldCgpKTsKKyAgICBlbWl0SXRlcmF0b3JPcGVuKGl0ZXJhdG9yLmdldCgp
LCBuZXh0T3JJbmRleC5nZXQoKSwgaXRlcmF0b3JTeW1ib2wuZ2V0KCksIGFyZ3MsIG5vZGUpOwor
CisgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgUmVmPExhYmVsPiB0
cnlTdGFydExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlWaWFUaHJv
d0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IGZpbmFsbHlMYWJlbCA9IG5ld0xh
YmVsKCk7CisgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8
TGFiZWw+IGVuZENhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOworCisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpz
VW5kZWZpbmVkKCkpOworCisgICAgLy8gUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yJ3MgbGlm
ZXRpbWUgbXVzdCBiZSBsb25nZXIgdGhhbiBJdGVyYXRvckNsb3NlQ29udGV4dC4KKyAgICBGaW5h
bGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dCgqdGhpcywgZmluYWxseUxhYmVsLmdldCgpKTsKKyAg
ICBwdXNoRmluYWxseUNvbnRyb2xGbG93U2NvcGUoZmluYWxseUNvbnRleHQpOworCisgICAgewor
ICAgICAgICBSZWY8TGFiZWxTY29wZT4gc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6
Okxvb3ApOworCisgICAgICAgIFJlZjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgIGVtaXRMYWJlbCgqc2Nv
cGUtPmNvbnRpbnVlVGFyZ2V0KCkpOworICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAg
ICBpZiAoZm9yTG9vcE5vZGUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZvckxvb3BO
b2RlLT5pc0Zvck9mTm9kZSgpKTsKKyAgICAgICAgICAgIHByZXBhcmVMZXhpY2FsU2NvcGVGb3JO
ZXh0Rm9yTG9vcEl0ZXJhdGlvbihmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKKyAg
ICAgICAgICAgIGVtaXREZWJ1Z0hvb2soZm9yTG9vcE5vZGUtPmxleHByKCkpOworICAgICAgICB9
CisKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRvbmUgPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3MoKnRoaXMsIG51
bGxwdHIsIDApOworICAgICAgICAgICAgbW92ZShuZXh0QXJncy50aGlzUmVnaXN0ZXIoKSwgaXRl
cmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0KGRvbmUuZ2V0KCks
IHZhbHVlLmdldCgpLCBpdGVyYWJsZS5nZXQoKSwgbmV4dE9ySW5kZXguZ2V0KCksIG5leHRBcmdz
LCBub2RlKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGxvb3BEb25l
LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdl
dCgpKTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IHB1c2hUcnkodHJ5U3RhcnRMYWJlbC5n
ZXQoKSwgZmluYWxseVZpYVRocm93TGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXpl
ZEZpbmFsbHkpOworICAgICAgICBjYWxsQmFjaygqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgICAg
ICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgIC8vIEl0ZXJhdG9yQ2xvc2Ug
c2VxdWVuY2UgZm9yIGFicnVwdCBjb21wbGV0aW9ucy4KKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gRmluYWxseSBibG9jayBmb3IgdGhlIGVudW1lcmF0aW9uLgorICAgICAgICAgICAgZW1pdExh
YmVsKGZpbmFsbHlWaWFUaHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHBvcFRyeSh0cnlE
YXRhLCBmaW5hbGx5VmlhVGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZjxMYWJl
bD4gZmluYWxseUJvZHlMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisKKyAg
ICAgICAgICAgIGVtaXRPdXRPZkxpbmVGaW5hbGx5SGFuZGxlcihmaW5hbGx5Q29udGV4dC5jb21w
bGV0aW9uVmFsdWVSZWdpc3RlcigpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lz
dGVyKCksIHRyeURhdGEpOworICAgICAgICAgICAgbW92ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0
ZXIuZ2V0KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOworICAg
ICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAg
IGVtaXRMYWJlbChmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgbW92ZUVtcHR5VmFs
dWUoZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICAgICAgLy8gRmlu
YWxseSBmYWxsIHRocm91Z2ggY2FzZS4KKyAgICAgICAgICAgIGVtaXRMYWJlbChmaW5hbGx5Qm9k
eUxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3RvcmVTY29wZVJlZ2lzdGVyKCk7CisKKyAg
ICAgICAgICAgIFJlZjxMYWJlbD4gZmluYWxseURvbmUgPSBuZXdMYWJlbCgpOworCisgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7
CisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5
KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGZpbmFsbHlEb25lLmdldCgpKTsKKworICAgICAgICAg
ICAgUmVmPExhYmVsPiByZXR1cm5DYWxsVHJ5U3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICAg
ICAgZW1pdExhYmVsKHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSk7CisgICAgICAgICAgICBUcnlE
YXRhKiByZXR1cm5DYWxsVHJ5RGF0YSA9IHB1c2hUcnkocmV0dXJuQ2FsbFRyeVN0YXJ0LmdldCgp
LCBjYXRjaExhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRDYXRjaCk7CisKKyAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsK
KyAgICAgICAgICAgIG1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRv
ci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9k
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3Qo
KSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6
Tm8pOworCisgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9y
YXJ5KCksIHZhbHVlLmdldCgpKSwgZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmpl
Y3QuIl9zKTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlEb25lLmdldCgpKTsKKyAg
ICAgICAgICAgIGVtaXRGaW5hbGx5Q29tcGxldGlvbihmaW5hbGx5Q29udGV4dCwgZW5kQ2F0Y2hM
YWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIHBvcFRyeShyZXR1cm5DYWxsVHJ5RGF0YSwgZmlu
YWxseURvbmUuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBDYXRjaCBibG9jayBmb3IgZXhjZXB0
aW9ucyB0aGF0IG1heSBiZSB0aHJvd24gd2hpbGUgY2FsbGluZyB0aGUgcmV0dXJuCisgICAgICAg
ICAgICAvLyBoYW5kbGVyIGluIHRoZSBlbnVtZXJhdGlvbiBmaW5hbGx5IGJsb2NrLiBUaGUgb25s
eSByZWFzb24gd2UgbmVlZCB0aGlzCisgICAgICAgICAgICAvLyBjYXRjaCBibG9jayBpcyBiZWNh
dXNlIGlmIGVudGVyZWQgdGhlIGFib3ZlIGZpbmFsbHkgYmxvY2sgZHVlIHRvIGEgdGhyb3duCisg
ICAgICAgICAgICAvLyBleGNlcHRpb24sIHRoZW4gd2Ugd2FudCB0byByZS10aHJvdyB0aGUgb3Jp
Z2luYWwgZXhjZXB0aW9uIG9uIGV4aXRpbmcKKyAgICAgICAgICAgIC8vIHRoZSBmaW5hbGx5IGJs
b2NrLiBPdGhlcndpc2UsIHdlJ2xsIGxldCBhbnkgbmV3IGV4Y2VwdGlvbiBwYXNzIHRocm91Z2gu
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0
KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvblJlZ2lz
dGVyID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdE91dE9mTGluZUZpbmFs
bHlIYW5kbGVyKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBmaW5hbGx5Q29udGV4dC5jb21wbGV0
aW9uVHlwZVJlZ2lzdGVyKCksIHJldHVybkNhbGxUcnlEYXRhKTsKKyAgICAgICAgICAgICAgICAv
LyBTaW5jZSB0aGlzIGlzIGEgc3ludGhlc2l6ZWQgY2F0Y2ggYmxvY2sgYW5kIHdlJ3JlIGd1YXJh
bnRlZWQgdG8gbmV2ZXIgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUgYW55IHN5
bWJvbHMgZnJvbSB0aGUgc2NvcGUsIHdlIGNhbiBza2lwIHJlc3RvcmluZyB0aGUgc2NvcGUKKyAg
ICAgICAgICAgICAgICAvLyByZWdpc3RlciBoZXJlLgorCisgICAgICAgICAgICAgICAgUmVmPExh
YmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNFbXB0eShuZXdUZW1wb3JhcnkoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVy
LmdldCgpKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbW92ZShleGNlcHRp
b25SZWdpc3Rlci5nZXQoKSwgZmluYWxseUV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAg
ICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBlbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAgICAg
ZW1pdExhYmVsKGVuZENhdGNoTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBicmVha0xhYmVsSXNCb3VuZCA9IHNjb3BlLT5icmVha1RhcmdldE1h
eUJlQm91bmQoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKQorICAgICAgICAgICAg
ZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKKyAgICAgICAgcG9wRmluYWxseUNvbnRy
b2xGbG93U2NvcGUoKTsKKyAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7CisgICAgICAg
ICAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9sIGZsb3cu
CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIEVtaXRBd2FpdDo6Tm8pOwogICAgICAgICB9CiAgICAgfQogICAgIGVtaXRMYWJlbChsb29w
RG9uZS5nZXQoKSk7CkBAIC00MjY1LDU2ICs0NDA0LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJc0VtcHR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQog
ICAgIE9wSXNFbXB0eTo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0K
LSAgICAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgZG9FbWl0
QXdhaXQpCi17Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRo
aXMsIG51bGxwdHIpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGl0ZXJhdG9yKTsKLSAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQo
KSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKLQotICAgICAgICBpZiAo
ZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgICAgICBlbWl0QXdhaXQoZHN0
KTsKLSAgICB9Ci0gICAgewotICAgICAgICBSZWY8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xh
YmVsKCk7Ci0gICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3Jhcnko
KSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgZW1pdFRocm93VHlwZUVycm9y
KCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKLSAgICAg
ICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkc3Q7
Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0
aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJ
RCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSkKLXsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50
cygqdGhpcywgbnVsbHB0ciwgMSk7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBtb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRS
ZWdpc3RlcigwKSwgdmFsdWUpOwotICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotICAgIH0K
LQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQotewotICAgIFJlZjxMYWJlbD4gZG9u
ZSA9IG5ld0xhYmVsKCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVy
bktleXdvcmQpOwotICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jh
cnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0KLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBDYWxsQXJndW1lbnRzIHJldHVy
bkFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Ci0gICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKLSAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJu
TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+
ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxl
Q2FsbDo6Tm8pOwotCi0gICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQotICAg
ICAgICBlbWl0QXdhaXQodmFsdWUuZ2V0KCkpOwotCi0gICAgZW1pdEp1bXBJZlRydWUoZW1pdElz
T2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwotICAgIGVt
aXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiJfcyk7Ci0gICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwotfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlcikKIHsKQEAgLTQ1NTUsNyArNDY0NCwzNSBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiAgICAg
bW92ZSh2YWx1ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXh0T3JJ
bmRleCwgUmVnaXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0ZXJhYmxl
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICAvLyBSZXNlcnZl
IHNwYWNlIGZvciBjYWxsIGZyYW1lLgorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIENh
bGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2Fs
bEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnM7ICsraSkKKyAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7
CisKKyAgICBpZiAoc2hvdWxkRW1pdERlYnVnSG9va3MoKSkKKyAgICAgICAgZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZUV4cHJlc3Npb24sIG5vZGUtPmRpdm90U3RhcnQoKSk7CisKKyAgICBlbWl0
RXhwcmVzc2lvbkluZm8obm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpKTsKKyAgICBPcEl0ZXJhdG9yT3Blbjo6ZW1pdCh0aGlzLCBpdGVyYXRvciwgbmV4
dE9ySW5kZXgsIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZS50aGlzUmVnaXN0ZXIoKSwgaXRlcmFi
bGUuc3RhY2tPZmZzZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVy
YXRvck5leHQoUmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQq
IGl0ZXJhYmxlLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYgaXRlcmF0
b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8vIFJlc2Vy
dmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBj
YWxsRnJhbWU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRlclNpemVJ
blJlZ2lzdGVyczsgKytpKQorICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFyeSgp
KTsKKworICAgIGlmIChzaG91bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBlbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlRXhwcmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKworICAgIGVt
aXRFeHByZXNzaW9uSW5mbyhub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUt
PmRpdm90RW5kKCkpOworICAgIE9wSXRlcmF0b3JOZXh0OjplbWl0KHRoaXMsIGRvbmUsIHZhbHVl
LCBpdGVyYWJsZSwgbmV4dE9ySW5kZXgsIGl0ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRv
ci5zdGFja09mZnNldCgpKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJh
dG9yU3ltYm9sKTsKICAgICBlbWl0Q2FsbEl0ZXJhdG9yKGl0ZXJhdG9yLmdldCgpLCBhcmd1bWVu
dCwgbm9kZSk7CkBAIC00NTYzLDYgKzQ2ODAsNTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXgK
ICAgICByZXR1cm4gaXRlcmF0b3IuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIHsKKyAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAg
bW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVt
aXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRz
LCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERl
YnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2Fp
dDo6WWVzKQorICAgICAgICAgICAgZW1pdEF3YWl0KGRzdCk7CisgICAgfQorICAgIHsKKyAgICAg
ICAgUmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVt
cElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5n
ZXQoKSk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVy
ZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmpl
Y3QuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVn
aXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQorewor
ICAgIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRy
LCAxKTsKKyAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRv
cik7CisgICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1
ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUt
PmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgfQorCisgICAgcmV0dXJuIGRz
dDsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3Nl
KFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSwgRW1pdEF3YWl0IGRvRW1pdEF3YWl0KQoreworICAgIFJlZjxMYWJlbD4gZG9uZSA9IG5ld0xh
YmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQp
OworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0
dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50
cygqdGhpcywgbnVsbHB0cik7CisgICAgbW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGl0ZXJhdG9yKTsKKyAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgcmV0dXJuTWV0aG9kLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwg
bm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8p
OworCisgICAgaWYgKGRvRW1pdEF3YWl0ID09IEVtaXRBd2FpdDo6WWVzKQorICAgICAgICBlbWl0
QXdhaXQodmFsdWUuZ2V0KCkpOworCisgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5l
d1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOworICAgIGVtaXRUaHJvd1R5
cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7
CisgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworfQorCisKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0
ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5h
bWVzKCkuYXN5bmNJdGVyYXRvclN5bWJvbCk7CkBAIC00NTc1LDcgKzQ3NDMsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCog
YXJndW1lbnQsIFRocm93YQogICAgIGVtaXRKdW1wKGFzeW5jSXRlcmF0b3JGb3VuZC5nZXQoKSk7
CiAgICAgZW1pdExhYmVsKGFzeW5jSXRlcmF0b3JOb3RGb3VuZC5nZXQoKSk7CiAKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY29tbW9uSXRlcmF0b3IgPSBlbWl0R2V0SXRlcmF0b3IoYXJndW1lbnQs
IG5vZGUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21tb25JdGVyYXRvciA9IGVtaXRHZXRH
ZW5lcmljSXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOwogICAgIG1vdmUoaXRlcmF0b3IuZ2V0KCks
IGNvbW1vbkl0ZXJhdG9yLmdldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0
aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0
eU5hbWVzKCkubmV4dCk7CkBAIC00NjA0LDcgKzQ3NzIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93
YWJsZQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOwog
ICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5j
SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKGFyZ3VtZW50LCBub2Rl
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gcGFyc2VNb2RlKCkgPT0g
U291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlID8gZW1pdEdldEFzeW5jSXRl
cmF0b3IoYXJndW1lbnQsIG5vZGUpIDogZW1pdEdldEdlbmVyaWNJdGVyYXRvcihhcmd1bWVudCwg
bm9kZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5
SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7
CiAKICAgICAgICAgUmVmPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CkBAIC00NjQyLDcg
KzQ4MTAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWll
bGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAgICAgICBl
bWl0SnVtcElmRmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJvd01ldGhv
ZC5nZXQoKSksIHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgICAg
IEVtaXRBd2FpdCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6OlllcyA6IEVt
aXRBd2FpdDo6Tm87Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJh
dG9yLmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOworICAgICAgICAgICAg
ICAgICAgICBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIGVt
aXRBd2FpdEluSXRlcmF0b3JDbG9zZSk7CiAKICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1l
dGhvZC4iX3MpOwogCkBAIC00NzAzLDcgKzQ4NzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJs
ZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0
KCkpOwotICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwg
bmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKKyAg
ICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBu
ZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOwogCiAg
ICAgICAgICAgICBlbWl0TGFiZWwoYnJhbmNoT25SZXN1bHQuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggZWE2Y2QyYjZkNWJhNzk5NDk1NjQ4NjJmMzAzMDFhMzFlYTgxMThkZS4uNzFlOWE1ZjNk
ZjMwZTE1MmVmYzJmNDk2NjMyNmE3OWZlZWQ4MzViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODI4LDYg
KzgyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ciwKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdl
dHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9u
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5lcmljRW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwg
UmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAgICAgICAgIHZvaWQg
ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUs
IEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51
bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRh
Z2dlZFRlbXBsYXRlTm9kZSopOwpAQCAtOTAwLDkgKzkwMSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzRGVyaXZlZEFycmF5KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIERl
cml2ZWRBcnJheVR5cGUpOyB9CiAgICAgICAgIHZvaWQgZW1pdFJlcXVpcmVPYmplY3RDb2VyY2li
bGUoUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3IpOwogCi0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBu
ZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklE
KiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwotICAgICAgICB2
b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0gRW1pdEF3YWl0OjpObyk7CisgICAg
ICAgIHZvaWQgZW1pdEl0ZXJhdG9yT3BlbihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJ
RCogbmV4dE9ySW5kZXgsIFJlZ2lzdGVySUQqIHN5bWJvbEl0ZXJhdG9yLCBDYWxsQXJndW1lbnRz
JiBpdGVyYWJsZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAgICAgdm9p
ZCBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRvbmUsIFJlZ2lzdGVySUQqIHZhbHVlLCBS
ZWdpc3RlcklEKiBpdGVyYWJsZSwgUmVnaXN0ZXJJRCogbmV4dE9ySW5kZXgsIENhbGxBcmd1bWVu
dHMmIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRHZW5lcmljSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBc3luY0l0ZXJh
dG9yKFJlZ2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworCisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlLCBKU0M6OkVtaXRBd2FpdCA9IEpTQzo6RW1pdEF3YWl0OjpObyk7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0V2l0aFZhbHVlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSk7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0ID0g
RW1pdEF3YWl0OjpObyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJhbWV0ZXIo
UmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKIApAQCAt
OTUyLDkgKzk1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXNoQ2F0
Y2hTY29wZShWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBvcENhdGNo
U2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCosIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKik7Ci0KICAgICAgICAgdm9pZCBlbWl0QXdhaXQoUmVnaXN0ZXJJRCop
OwogICAgICAgICB2b2lkIGVtaXRHZXRTY29wZSgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHVzaFdpdGhTY29wZShSZWdpc3RlcklEKiBvYmplY3RTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMDdmMDA4
YjNmZWZlN2U3YzY2YTQwYzMxMGY1NjQ4ZjhhNTFkNTk2Mi4uMDI0NjY4NTdlZWMxZGYzNjk3Yzc0
NGI4MTQ2M2I5YjEzZGI1ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDgyMCw3ICs0ODIwLDcgQEAgdm9pZCBB
cnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogcmhzKQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKICAgICBpZiAobV90YXJnZXRQ
YXR0ZXJucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckNsb3Nl
KGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdl
bmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tp
cHBlZC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0
b3JOZXh0KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhp
cyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUu
Z2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwpAQCAtNDg3Miw3ICs0ODcyLDcgQEAgdm9pZCBBcnJh
eVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChsb29wU3RhcnQu
Z2V0KCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yTmV4
dCh2YWx1ZS5nZXQoKSwgbmV4dE1ldGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KHZhbHVlLmdldCgp
LCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuZG9uZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRy
dWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uRG9uZS5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLnZhbHVlKTsKQEAgLTQ4OTAsNyArNDg5MCw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJu
Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IHJocykKIAogICAgIFJlZjxMYWJlbD4gaXRlcmF0b3JDbG9zZWQgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0b3JD
bG9zZWQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5n
ZXQoKSwgdGhpcyk7CisgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVy
YXRvci5nZXQoKSwgdGhpcyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRvckNsb3Nl
ZC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA3ZTI2MzgwYzYwNTY1YmI4MDI5
YmMwODExMzU5MWIwZTFjM2ViMjZjLi41MDdjMmJkZTVkZWU3NzM4ZTBjZTgyMTk5NzY5NmM2MjQ3
MjA3MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00Mzk4LDEwICs0Mzk4LDggQEAgdm9pZCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAg
ICAgICAgICAgICAgIGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgZm9yIChzaXplX3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykKLSAg
ICAgICAgZnVuY3RvcihtX3N0YXRlLmFyZ3VtZW50KGkpKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
bV9zdGF0ZS5udW1iZXJPZkxvY2FscygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUu
bG9jYWwoaSkpOworICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnNpemUoKTsgaS0tOykKKyAg
ICAgICAgZnVuY3RvcihtX3N0YXRlLmF0SW5kZXgoaSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKaW5kZXggODk3YzcwZGZmYmEwNjZiNjQ5Y2FmZGNjMWVm
MDkzMzc2ODEwNGQxMy4uNDM4ZTE2ZGU4NTk1OTI1NGQ5NTU3MjFiNmYwOGRiOTU4MTRmZDhmNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0
YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0
YXRlLmgKQEAgLTEzNywxMSArMTM3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbWFrZUhlYXBUb3BG
b3JOb2RlKGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5zaXplKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFp
bC5udW1iZXJPZkFyZ3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBj
b25zdCB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgfQor
ICAgIHVuc2lnbmVkIG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVl
c0F0VGFpbC5udW1iZXJPZlRtcHMoKTsgfQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6
ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpOyB9CiAg
ICAgQWJzdHJhY3RWYWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxv
Y2stPnZhbHVlc0F0VGFpbC5vcGVyYW5kKG9wZXJhbmQpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYg
bG9jYWwoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwo
aW5kZXgpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KSB7IHJl
dHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaW5kZXgpOyB9CisgICAgQWJzdHJh
Y3RWYWx1ZSYgdG1wKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWls
LnRtcChpbmRleCk7IH0KICAgICAKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IGQyZjRmMDA4NDBjOTExZmFlMDkyNjQxYzM1ZDM3NGYyMDE4OWQ4YTAuLmM2ZGViNjliMDJm
MWI3YzkzYmZkMWUwYTFjNGUwODVjOGMzNGJlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2lu
dC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRl
bnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtMTU5LDcg
KzE2MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIZWxwZXIgZm9yIG1pbiBhbmQgbWF4LgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVNaW5NYXgo
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlw
ZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgCiAgICAgdm9pZCByZWZp
bmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCk7CiAgICAgLy8g
QmxvY2tzIGNhbiBlaXRoZXIgYmUgdGFyZ2V0YWJsZSAoaS5lLiBpbiB0aGUgbV9ibG9ja0xpbmtp
bmdUYXJnZXRzIG9mIG9uZSBJbmxpbmVTdGFja0VudHJ5KSB3aXRoIGEgd2VsbC1kZWZpbmVkIGJ5
dGVjb2RlQmVnaW4sCkBAIC0xNzYsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBIYW5kbGUg
Y2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJvdW5kaW5nIGlubGluaW5nIGFuZCBpbnRy
aW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBUZXJtaW5hbCwgTm9uVGVybWluYWwgfTsK
ICAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVj
dGlvblNpemUsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgICAgIE5vZGUqIGNh
bGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBDYWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTkwLDI3ICsxOTEsMjcgQEAgcHJp
dmF0ZToKICAgICBib29sIGhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGVtaXRGdW5jdGlvbkNoZWNrSWZOZWVk
ZWQpOwogICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlO
VF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBp
bnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1
cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxs
LgotICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rl
ck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFy
Z3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRsZVZhcmFyZ3NJbmxpbmlu
ZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3Rh
dHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBW
aXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNl
dCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwogICAgIHVuc2lnbmVk
IGdldElubGluaW5nQmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOwogICAgIGVudW0gY2xhc3MgQ2FsbE9wdGltaXphdGlvblJlc3VsdCB7IE9wdGlt
aXplZFRvSnVtcCwgSW5saW5lZCwgRGlkTm90aGluZyB9OwotICAgIENhbGxPcHRpbWl6YXRpb25S
ZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdp
c3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNv
ZGVJbmRleCBuZXh0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKLSAgICBDYWxsT3B0aW1pemF0
aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwg
VmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIENhbGxPcHRpbWl6
YXRpb25SZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJh
bmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2Rl
SW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVh
dGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSk7CisgICAgQ2FsbE9wdGltaXphdGlv
blJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1
bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVn
aXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVj
b2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tzRnVuY3Rvcj4KLSAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQg
cmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgLy8g
SGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwg
ZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVl
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVET01KSVRD
YWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBPcGVy
YW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihP
cGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZh
cmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
Ci0gICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihPcGVy
YW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRs
ZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgPSBHZXRCeU9mZnNldCk7Ci0gICAg
Ym9vbCBoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIo
T3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05vZGUsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAg
IGJvb2wgaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBT
cGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMpOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQnl0ZWNvZGU+CkBAIC0zMjAsMTUgKzMyMSwxNSBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gZ2V0TG9jYWxPclRtcChvcGVyYW5kKTsKICAgICB9CiAKLSAgICBOb2RlKiBnZXQo
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgTm9kZSogZ2V0KE9wZXJhbmQgb3BlcmFuZCkK
ICAgICB7CiAgICAgICAgIGlmIChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAg
dW5zaWduZWQgY29uc3RhbnRJbmRleCA9IG9wZXJhbmQudG9Db25zdGFudEluZGV4KCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gb3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIo
KS50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9sZFNpemUgPSBtX2Nv
bnN0YW50cy5zaXplKCk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXpl
IHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOwot
ICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQob3Bl
cmFuZCk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbihvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2Nr
LmdldENvbnN0YW50KG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAg
IFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gPSBjb2Rl
QmxvY2suY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3BlcmFuZC52aXJ0dWFsUmVn
aXN0ZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0gb2xkU2l6ZSkg
ewogICAgICAgICAgICAgICAgICAgICBtX2NvbnN0YW50cy5ncm93KGNvbnN0YW50SW5kZXggKyAx
KTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkU2l6ZTsgaSA8IG1f
Y29uc3RhbnRzLnNpemUoKTsgKytpKQpAQCAtMzQ5LDEwICszNTAsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZSgpLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0gaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlZUNvbnN0YW50KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKQorICAg
ICAgICAgICAgICAgIGlmIChvcGVyYW5kID09IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha0pTQ29uc3RhbnQoY2Fs
bGVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kLm9mZnNldCgp
ID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgeworICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQg
PT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpIHsKICAgICAgICAgICAg
IC8vIFdlIGhhdmUgdG8gZG8gc29tZSBjb25zdGFudC1mb2xkaW5nIGhlcmUgYmVjYXVzZSB0aGlz
IGVuYWJsZXMgQ3JlYXRlVGhpcyBmb2xkaW5nLiBOb3RlCiAgICAgICAgICAgICAvLyB0aGF0IHdl
IGRvbid0IGhhdmUgc3VjaCB3YXRjaHBvaW50LWJhc2VkIGZvbGRpbmcgZm9yIGlubGluZWQgdXNl
cyBvZiBDYWxsZWUsIHNpbmNlIGluIHRoYXQKICAgICAgICAgICAgIC8vIGNhc2UgaWYgdGhlIGZ1
bmN0aW9uIGlzIGEgc2luZ2xldG9uIHRoZW4gd2UgYWxyZWFkeSBrbm93IGl0LgpAQCAtNDEyLDcg
KzQxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5zaHJpbmsoMCk7CiAg
ICAgfQogCi0gICAgTm9kZSogc2V0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1
ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQorICAgIE5vZGUqIHNldChPcGVyYW5kIG9w
ZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewog
ICAgICAgICByZXR1cm4gc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChv
cGVyYW5kKSwgdmFsdWUsIHNldE1vZGUpOwogICAgIH0KQEAgLTY5MywxNSArNjk0LDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKICAgICB9CiAKKyAgICBOb2RlKiBq
c0NvbnN0YW50KEZyb3plblZhbHVlKiBjb25zdGFudFZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGNvbnN0YW50VmFsdWUpKTsKKyAgICB9
CisKICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIGNvbnN0YW50IHNob3VsZCBiZSBzdHJvbmdseSBt
YXJrZWQuCiAgICAgTm9kZSoganNDb25zdGFudChKU1ZhbHVlIGNvbnN0YW50VmFsdWUpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9ncmFwaC5m
cmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIGpzQ29uc3RhbnQo
bV9ncmFwaC5mcmVlemVTdHJvbmcoY29uc3RhbnRWYWx1ZSkpOwogICAgIH0KIAogICAgIE5vZGUq
IHdlYWtKU0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjb25zdGFu
dFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShjb25z
dGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBnZXQvc2V0
IHRoZSB0aGlzIHZhbHVlLgpAQCAtODUyLDcgKzg1OCw3IEBAIHByaXZhdGU6CiAgICAgfQogICAg
IAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5v
ZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9w
SW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBp
ZiAob3AgPT0gVGFpbENhbGwpIHsKQEAgLTk2MSw3ICs5NjcsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAgIH0KLSAg
ICAKKwogICAgIEFycmF5TW9kZSBnZXRBcnJheU1vZGUoQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAg
ICAgewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jazsKQEAgLTExNzYsNyArMTE4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IE9wdGlvbmFsOiBhIGNvbnRpbnVhdGlvbiBibG9jayBmb3IgcmV0dXJucyB0byBqdW1wIHRvLiBJ
dCBpcyBzZXQgYnkgZWFybHkgcmV0dXJucyBpZiBpdCBkb2VzIG5vdCBleGlzdC4KICAgICAgICAg
QmFzaWNCbG9jayogbV9jb250aW51YXRpb25CbG9jazsKIAotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV9yZXR1cm5WYWx1ZTsKKyAgICAgICAgT3BlcmFuZCBtX3JldHVyblZhbHVlOwogICAgICAg
ICAKICAgICAgICAgLy8gU3BlY3VsYXRpb25zIGFib3V0IHZhcmlhYmxlIHR5cGVzIGNvbGxlY3Rl
ZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrLAogICAgICAgICAvLyB3aGljaCBhcmUgYmFz
ZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhhdCBwYXN0IERGRyBjb21waWxhdGlvbnMgb2YgdGhp
cwpAQCAtMTE5Niw3ICsxMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIENvZGVCbG9jayos
CiAgICAgICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssCiAgICAgICAgICAgICBKU0Z1
bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXR1cm5WYWx1ZVZSLAorICAgICAgICAgICAgT3BlcmFu
ZCByZXR1cm5WYWx1ZSwKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJh
bWVTdGFydCwKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCwKQEAgLTEyNzEsNiArMTI3Nyw3IEBAIEJh
c2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCkKICAg
ICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2soQnl0ZWNv
ZGVJbmRleCgpLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIG1fbnVtVG1wcywgMSkpOwog
ICAgIEJhc2ljQmxvY2sqIGJsb2NrUHRyID0gYmxvY2sucHRyKCk7CiAgICAgbV9ncmFwaC5hcHBl
bmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CisgICAgVkVSQk9TRV9MT0coIkFkZGluZyBuZXcgdW50
YXJnZXRhYmxlIGJsb2NrOiAiLCBibG9ja1B0ci0+aW5kZXgsICJcbiIpOwogICAgIHJldHVybiBi
bG9ja1B0cjsKIH0KIApAQCAtMTMwMyw4ICsxMzEwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Fs
bE9wPgogQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
YWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2Rl
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8Q2FsbE9wPigpOwotICAgIE5vZGUqIGNh
bGxUYXJnZXQgPSBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpOwotICAgIGludCByZWdpc3Rlck9mZnNl
dCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7CisgICAgTm9kZSogY2FsbFRh
cmdldCA9IGdldChjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQo
KSkpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zm
c2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3BvaW50
KCkpKTsKIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgY3VycmVudENvZGVPcmlnaW4oKSwKQEAgLTEzMTIsOCArMTMxOSw4IEBAIEJ5dGVDb2RlUGFy
c2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVj
dGlvbiogcGMsIE5vCiAKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCA9IElubGluZUNh
bGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7CiAKLSAgICByZXR1cm4gaGFuZGxlQ2FsbChieXRl
Y29kZS5tX2RzdCwgb3AsIGtpbmQsIHBjLT5zaXplKCksIGNhbGxUYXJnZXQsCi0gICAgICAgIGJ5
dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0
aW9uKCkpOworICAgIHJldHVybiBoYW5kbGVDYWxsKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBt
X2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCksIEpJVFR5cGU6OkRGR0pJVCksIG9wLCBraW5kLCBw
Yy0+c2l6ZSgpLCBjYWxsVGFyZ2V0LAorICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
c0ZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSwgcmVnaXN0ZXJPZmZz
ZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVkaWN0aW9uKCkpOwogfQogCiB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywg
Tm9kZSogY2FsbFRhcmdldCkKQEAgLTEzMjMsNyArMTMzMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnJlZmluZVN0YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2Rl
KiBjYWxsCiB9CiAKIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBP
cGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1
bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgQ2FsbExpbmtT
dGF0dXMgY2FsbExpbmtTdGF0dXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CkBAIC0x
NjM5LDcgKzE2NDYsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENh
bGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQg
Y2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJs
b2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFy
c2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2Fs
bFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5z
dHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQg
PSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKQEAgLTE2NzMs
NyArMTY4MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgc2l6ZV90IGFyZ3VtZW50
UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCk7CiAKICAg
ICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKLSAgICAgICAgcmVzdWx0ID0gbV9pbmxpbmVTdGFja1Rv
cC0+cmVtYXBPcGVyYW5kKHJlc3VsdCkudmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIHJlc3Vs
dCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHQpOwogCiAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAgaWYgKGNhbGxlZS5p
c0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4MjUsNyArMTgzMiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIENhCiAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gPSBzYXZlZEN1cnJlbnRJbnN0cnVjdGlv
bjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmly
dHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2lj
QmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkKK0J5dGVD
b2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
YWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJp
YW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
ZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dElu
ZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxv
Y2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgQ29u
c2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxuIik7CiAKQEAgLTE5MDIsNyArMTkwOSw3IEBA
IEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1
bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKK2Jvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3Rh
dHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAg
IFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zm
c2V0LAogICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCkBA
IC0yMDQ2LDcgKzIwNTMsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6Z2V0SW5saW5pbmdC
YWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cwogfQogCiBCeXRlQ29k
ZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKKyAgICBOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0
YXR1cywKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1l
bnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgIEJ5dGVjb2RlSW5k
ZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5k
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQpAQCAtMjIyMiw3ICsyMjI5LDcgQEAgQnl0ZUNv
ZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBl
IG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcykKIHsKICAgICBBU1NFUlQob3AgPT0gQXJpdGhNaW4gfHwgb3AgPT0gQXJp
dGhNYXgpOwogCkBAIC0yMjUyLDcgKzIyNTksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpcwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICAgICBUaGUgaW50cmluc2ljIGlzICIsIGludHJp
bnNpYywgIlxuIik7CiAKQEAgLTIzOTEsMjcgKzIzOTgsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIEkKICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzogewogICAgICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2luZDsKLSAgICAg
ICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7Ci0gICAgICAgICAgICBjYXNlIEFycmF5VmFsdWVz
SW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBUeXBlZEFycmF5VmFsdWVzSW50cmluc2ljOgot
ICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAg
ICAgICAgIGNhc2UgVHlwZWRBcnJheUtleXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAga2lu
ZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRB
cnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktp
bmQ6OkVudHJpZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBPcHRpb25hbDxJdGVy
YXRpb25LaW5kPiBraW5kID0gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoaW50cmluc2ljKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEha2luZCk7CiAKICAgICAgICAgICAgIC8vIEFk
ZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5
IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1cC4KLSAgICAg
ICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oa2luZCkpKTsKKyAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFu
dChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oKmtpbmQpKSk7CiAKICAgICAgICAgICAg
IC8vIFdlIGRvbid0IGhhdmUgYW4gZXhpc3RpbmcgZXJyb3Igc3RyaW5nLgogICAgICAgICAgICAg
dW5zaWduZWQgZXJyb3JTdHJpbmdJbmRleCA9IFVJTlQzMl9NQVg7CkBAIC0zNzExLDcgKzM3MDIs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxl
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcykKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGlj
X2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzczMCw3ICszNzIxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
RE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNO
b2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9k
ZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIHN3aXRjaCAodmFy
aWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5z
aWM6IHsKQEAgLTM4NDQsNyArMzgzNSw3IEBAIHN0YXRpYyB2b2lkIGJsZXNzQ2FsbERPTUdldHRl
cihOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNO
b2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYg
KCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTIz
LDcgKzM5MTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhY2VM
b2FkKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNv
bnN0cnVjdG9yKAotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24q
IGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgT3BlcmFuZCByZXN1bHQsIEludGVy
bmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSB0eXBlLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlKSkKQEAg
LTM5ODAsNyArMzk3MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlD
b25zdHJ1Y3RvcigKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKLSAgICBOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiog
ZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
T3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBWRVJCT1NFX0xPRygiICAgIEhhbmRsaW5nIGNv
bnN0YW50IGludGVybmFsIGZ1bmN0aW9uICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiXG4iKTsKQEAg
LTY2NjgsMjAgKzY2NTksNDIwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTEFTVF9PUENP
REUob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKTsKICAgICAgICAgfQotICAgICAgICAg
ICAgCisKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczogewogICAgICAgICAgICAg
aGFuZGxlVmFyYXJnc0NhbGw8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24s
IENvbnN0cnVjdFZhcmFyZ3MsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOwogICAgICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rp
b24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVl
LCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAg
ICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAgICAgICAgICAgaW50IHJlZ2lz
dGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKICAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNv
ZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGdldChieXRl
Y29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGdldFByZWRp
Y3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxsX2V2YWwpOwogICAgICAg
ICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0
b3JPcGVuPigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spOworICAgICAgICAgICAgdWludDMyX3Qgc2Vlbk1vZGVzID0gbWV0YWRhdGEu
bV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXM7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mUmVtYWluaW5nTW9kZXMgPSBXVEY6OmJpdENvdW50KHNlZW5Nb2Rlcyk7CisgICAgICAg
ICAgICBBU1NFUlQobnVtYmVyT2ZSZW1haW5pbmdNb2RlcyA8PSBudW1iZXJPZkl0ZXJhdGlvbk1v
ZGVzKTsKKyAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ2FzZSA9IGZhbHNlOworCisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAg
ICAgICAgICAgIEJ5dGVjb2RlSW5kZXggc3RhcnRJbmRleCA9IG1fY3VycmVudEluZGV4OworCisg
ICAgICAgICAgICBOb2RlKiBzeW1ib2xJdGVyYXRvciA9IGdldERpcmVjdChieXRlY29kZS5tX3N5
bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKTsKKworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkZh
c3RBcnJheSAmJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxp
ZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3Qgc2V0IHVwIHRoZSB3YXRjaHBvaW50IGNv
bmRpdGlvbnMgd2UgbmVlZCBmb3IgY29ycmVjdG5lc3MuCisgICAgICAgICAgICAgICAgbV9ncmFw
aC53YXRjaHBvaW50cygpLmFkZExhemlseShhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0KTsKKworICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZ2xvYmFsT2JqZWN0
LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb25Db25jdXJyZW50bHkoKSwgIlRoZSBvbmx5IHdheSB3
ZSBjb3VsZCBoYXZlIHNlZW4gRmFzdEFycmF5IGlzIGlmIHdlIHNhdyB0aGlzIGZ1bmN0aW9uIGlu
IHRoZSBMTEludC9CYXNlbGluZSBzbyB0aGUgaXRlcmF0b3IgZnVuY3Rpb24gc2hvdWxkIGJlIGFs
bG9jYXRlZC4iKTsKKyAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuU3ltYm9sSXRl
cmF0b3JGdW5jdGlvbiA9IG1fZ3JhcGguZnJlZXplKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uQ29uY3VycmVudGx5KCkpOworICAgICAgICAgICAgICAgIGlmIChudW1iZXJP
ZlJlbWFpbmluZ01vZGVzID09IDEpCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hl
Y2tDZWxsLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0ZXJh
dG9yKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogZmFzdEFycmF5QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgICAgIGdlbmVyaWNCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2so
KTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBrbm93bkl0ZXJGdW5jdGlvbiA9IGFkZFRv
R3JhcGgoQ29tcGFyZUVxUHRyLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiks
IHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNBcnJheSA9IGFk
ZFRvR3JhcGgoSXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhBcnJheVR5cGUpLCBnZXQoYnl0ZWNvZGUu
bV9pdGVyYWJsZSkpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERh
dGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJh
bmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2spOworICAgICAgICAg
ICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChnZW5lcmljQmxv
Y2spOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFuZFJlc3VsdCA9IGFkZFRvR3JhcGgo
QXJpdGhCaXRBbmQsIGlzQXJyYXksIGtub3duSXRlckZ1bmN0aW9uKTsKKworICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBrbm93IHRoZSBiaXQgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMgc28gaXQn
cyBvayB0byBleGl0IGhlcmUuCisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFuZFJlc3VsdCk7
CisgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKworICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZhc3RBcnJheUJsb2NrOworICAgICAgICAgICAgICAg
ICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIFRoZSBicmFuY2ggYWJvdmUgbWF5IGhhdmUgbWFkZSBleGl0IGludmFsaWQgYnV0IGl0J3Mg
YWN0dWFsbHkgb2suCisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBraW5kTm9k
ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbktp
bmQ6OlZhbHVlcykpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGFkZFRvR3Jh
cGgoTmV3SW50ZXJuYWxGaWVsZE9iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkpKSk7CisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJhdG9y
LCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRl
cmF0b3I6OkZpZWxkOjpLaW5kKSksIGl0ZXJhdG9yLCBraW5kTm9kZSk7CisgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIGl0ZXJhdG9yKTsKKworICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX25leHQsIGpzQ29uc3RhbnQoSlNWYWx1ZSgpKSk7CisKKyAgICAgICAg
ICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdl
dEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAg
ICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNl
dCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAg
ICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGdlbmVy
YXRlZENhc2UgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRp
b25Nb2RlOjpHZW5lcmljKSB7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNCbG9jaykgewor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAgICAgICAgICAgICAg
ICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAgICAgVGVybWluYWxp
dHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JPcGVuPihjdXJyZW50SW5zdHJ1
Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCk7CisgICAgICAg
ICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBO
b2RlKiBpdGVyYXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2so
KTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2NrID0gYWxsb2NhdGVV
bnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERh
dGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICBicmFuY2hE
YXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAgICAgICAgICAgICAg
ICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7Cisg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgYWRk
VG9HcmFwaChJc09iamVjdCwgaXRlcmF0b3IpKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3RPYmplY3RCbG9jazsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFs
dWUgZXJyb3JTdHJpbmcgPSBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsICJJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVlcy5hZGQoZXJy
b3JTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJyb3JNZXNzYWdlID0gYWRk
VG9HcmFwaChMYXp5SlNDb25zdGFudCwgaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoVGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6VHlwZUVycm9yKSwgZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVh
ckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
ID0gZ2V0UHJlZGljdGlvbigpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBn
ZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIG5leHRJ
bXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5z
dXJlKG5leHRJbXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBB
Y2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVM
ZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAgICAgICAgICAg
ICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwg
bV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3Jp
Z2luKCkpOworCisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5t
X25leHQsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIobmV4dEltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1
cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIg
c2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldCBieSBpZCBhZ2FpbiBzbyB3
ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50
SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSog
cmVzdWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9pdGVyYXRv
ciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCByZXN1bHQp
OworCisgICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQg
dG8gcnVuIG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29k
ZS4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJy
ZW50SW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhp
dE9LKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7CisgICAgICAg
ICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVp
bnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVz
OworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01vZGVzID0gV1RGOjpi
aXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJlck9mUmVtYWluaW5n
TW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAgICBib29sIGdlbmVy
YXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBzdGFydEluZGV4
ID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJy
ZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQoKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNCbG9jayA9IG51bGxw
dHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBhbGxvY2F0ZVVudGFy
Z2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25N
b2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5pc1N0
aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgd2F0Y2hw
b2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAgICAg
IG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZSZW1haW5pbmdNb2Rl
cyAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGhhc05leHQgPSBhZGRUb0dyYXBo
KElzRW1wdHksIGdldChieXRlY29kZS5tX25leHQpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxv
Y2soKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9n
cmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEt
PnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJpY0Jsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwg
aGFzTmV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmYXN0QXJy
YXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdldChieXRlY29kZS5t
X2l0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBP
cEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9y
U3RydWN0dXJlKCkpKSwgaXRlcmF0b3IpOworCisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
aXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygp
OworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGRvTG9hZEJsb2NrID0gYWxsb2NhdGVVbnRh
cmdldGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBkb25lSW5kZXggPSBqc0NvbnN0YW50KGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcElu
Zm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSks
IE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgaXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBpc0RvbmUgPSBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcSwgaW5kZXgsIGRvbmVJbmRl
eCk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogaXNEb25lQnJhbmNoRGF0YSA9
IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICBpc0RvbmVC
cmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAgICAg
ICAgICAgICAgIGlzRG9uZUJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KG5vdERv
bmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8o
aXNEb25lQnJhbmNoRGF0YSksIGlzRG9uZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2l0
ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIGF1dG8gcHJlZGlj
dGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVu
dEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUpKTsKKworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3REb25lQmxv
Y2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogaW5kZXggPSBhZGRUb0dyYXBoKEdldEludGVybmFsRmllbGQsIE9wSW5mbyhz
dGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSwgT3BJ
bmZvKFNwZWNJbnQzMk9ubHkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcikpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpdGVyYWJsZSA9IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKTsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogYnV0dGVyZmx5ID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJm
bHksIGl0ZXJhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gYWRkVG9H
cmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGl0ZXJhYmxl
LCBidXR0ZXJmbHkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0RvbmUgPSBhZGRUb0dy
YXBoKENvbXBhcmVHcmVhdGVyRXEsIGluZGV4LCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7IC8vIFRoZSBhYm92ZSBjb21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBl
ZmZlY3RzIHNpbmNlIHdlIGtub3cgaW5kZXggYW5kIGxlbmd0aCBhcmUgaW50MzJzLgorICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgICAgICAgICAg
QnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAg
ICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc0RvbmVC
bG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNo
VGFyZ2V0KGRvTG9hZEJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFu
Y2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgaXNEb25lKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZG9M
b2FkQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcElu
Zm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSks
IE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogb25lID0ganNDb25zdGFudChqc051bWJlcigxKSk7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0
aEFkZCwgaW5kZXgsIG9uZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBmYWxzZU5vZGUg
PSBqc0NvbnN0YW50KGpzQm9vbGVhbihmYWxzZSkpOworCisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIGNvdWxkIGNvbnNpZGVyIG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNl
IGl0IG9ubHkgdXNlcyB0aHJlZSBjaGlsZAorICAgICAgICAgICAgICAgICAgICAvLyBzbG90cy4K
KyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NDE5MgorICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0
ZWNvZGUubV9pdGVyYWJsZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChp
bmRleCk7CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSBy
b29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRC
eVZhbCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9k
ZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX3ZhbHVlLCBnZXRCeVZhbCk7CisgICAgICAgICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX2RvbmUsIGZhbHNlTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5
SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIG5ld0lu
ZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9u
J3Qgd2FudCB0byBydW4gb3VyIGdldEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQg
Ynl0ZWNvZGUuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJ
bmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRM
b2NhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcElu
Zm8oY29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Ly8gUm9sbCBiYWNrIHRoZSBjaGVja3BvaW50LgorICAgICAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2sgPSBpc0RvbmVCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogdHJ1ZU5vZGUgPSBqc0NvbnN0
YW50KGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGRvbmVJbmRl
eCA9IGpzQ29uc3RhbnQoanNOdW1iZXIoLTEpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
Ym90dG9tTm9kZSA9IGpzQ29uc3RhbnQobV9ncmFwaC5ib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpOworCisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5t
X3ZhbHVlLCBib3R0b21Ob2RlKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZG9uZSwgdHJ1ZU5vZGUpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVy
bmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpG
aWVsZDo6SW5kZXgpKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpLCBkb25lSW5kZXgpOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLgorICAgICAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0
KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwor
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRl
eDsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChnZW5lcmF0ZWRDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBnZW5lcmljQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJh
dGVkQ2FzZSk7CisKKyAgICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhh
bmRsZUNhbGw8T3BJdGVyYXRvck5leHQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1v
ZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHks
IHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1Rv
TmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVj
dEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGlzT2JqZWN0QmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdl
dGFibGVCbG9jaygpOworCisgICAgICAgICAgICAgICAgT3BlcmFuZCBuZXh0UmVzdWx0ID0gT3Bl
cmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yUmVzdWx0ID0gZ2V0KG5leHRSZXN1
bHQpOworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFw
aC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRh
a2VuID0gQnJhbmNoVGFyZ2V0KGlzT2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBi
cmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFk
ZFRvR3JhcGgoSXNPYmplY3QsIGl0ZXJhdG9yUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IG5vdE9iamVjdEJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAg
ICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpu
ZXdTdHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iX3MpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dy
YXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOworICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8o
RXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAg
ICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgYXV0byB2YWx1ZVByZWRpY2l0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5
dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZSkpOworCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2V4aXRP
SyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RC
bG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYm90dG9tVmFsdWUgPSBqc0NvbnN0YW50KG1fZ3JhcGguYm90
dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKHZhbHVlUHJlZGljaXRpb24pKTsKKworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAg
ICAgICAgICBhdXRvKiBkb25lSW1wbCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgp
OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFw
aC5pZGVudGlmaWVycygpLmVuc3VyZShkb25lSW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAg
QWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgR2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1
czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVH
ZXRCeUlkKGJ5dGVjb2RlLm1fZG9uZSwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihkb25lSW1wbCksIGlkZW50aWZpZXJO
dW1iZXIsIGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAg
ICAgICAvLyBTZXQgYSB2YWx1ZSBmb3IgbV92YWx1ZSBzbyB3ZSBkb24ndCB0aGluaworICAgICAg
ICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgYm90dG9tVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAg
ICAgICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRk
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0
KGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2Vu
ID0gQnJhbmNoVGFyZ2V0KG5vdERvbmVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGdldChieXRlY29kZS5tX2RvbmUpKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrID0gbm90RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBj
bGVhckNhY2hlcygpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQobmV4
dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHZhbHVlSW1wbCA9IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodmFsdWVJbXBs
KTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpH
ZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAgICAgICAgICAgICAgICBHZXRCeVN0YXR1
cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRT
dGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisg
ICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVQ
cmVkaWNpdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcih2YWx1ZUltcGwpLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywgdHlw
ZSwgb3Bjb2RlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVj
a3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8o
Y29udGludWF0aW9uKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZ2Vu
ZXJhdGVkQ2FzZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3RhbnQo
SlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Cisg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fdmFsdWUsIHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fZG9uZSwgcmVzdWx0KTsKKworICAgICAgICAgICAgICAgIC8v
IERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIHJ1biBvdXIgZ2V0IGJ5IGlkIGFn
YWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAgICAgICAgbV9j
dXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgY3Vy
cmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisgICAgICAgICAgICAgICAg
cHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVt
cCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWlu
YWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFy
dEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pdGVy
YXRvcl9uZXh0KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0
cj4oKTsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5m
cmVlemVTdHJvbmcobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5
dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIpKTsKQEAgLTcxNzEsNyArNzU2Miw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAvLyBs
b2FkcyBmcm9tIHRoZSBzY29wZSByZWdpc3RlciBsYXRlciwgYXMgdGhhdCB3b3VsZCBwcmV2ZW50
IHRoZSBERkcgZnJvbSB0cmFja2luZyB0aGUKICAgICAgICAgICAgIC8vIGJ5dGVjb2RlLWxldmVs
IGxpdmVuZXNzIG9mIHRoZSBzY29wZSByZWdpc3Rlci4KICAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0U2NvcGU+KCk7Ci0gICAgICAgICAgICBO
b2RlKiBjYWxsZWUgPSBnZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAgICAgICAgICAgIE5v
ZGUqIGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7
CiAgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KCptX3Zt
KSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSB3ZWFrSlNDb25zdGFudChmdW5jdGlvbi0+c2Nv
cGUoKSk7CkBAIC03NTUwLDcgKzc5NDEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKICAgICBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCAvLyBOdWxs
IGlmIHRoaXMgaXMgYSBjbG9zdXJlIGNhbGwuCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJldHVyblZh
bHVlVlIsCisgICAgT3BlcmFuZCByZXR1cm5WYWx1ZSwKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5s
aW5lQ2FsbEZyYW1lU3RhcnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAog
ICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLApAQCAtNzU1OSw3ICs3OTUwLDcgQEAgQnl0
ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgLCBt
X2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2socHJvZmlsZWRCbG9j
aykKICAgICAsIG1fY29udGludWF0aW9uQmxvY2soY29udGludWF0aW9uQmxvY2spCi0gICAgLCBt
X3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIpCisgICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZh
bHVlKQogICAgICwgbV9jYWxsZXIoYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tUb3ApCiB7
CiAgICAgewpAQCAtNzYyNSw3ICs4MDE2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNr
RW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIC8vIE1hY2hpbmUgY29kZSBibG9jayBj
YXNlLgogICAgICAgICBBU1NFUlQoY29kZUJsb2NrID09IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVC
bG9jayk7CiAgICAgICAgIEFTU0VSVCghY2FsbGVlKTsKLSAgICAgICAgQVNTRVJUKCFyZXR1cm5W
YWx1ZVZSLmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVCghcmV0dXJuVmFsdWUuaXNWYWxpZCgp
KTsKICAgICAgICAgQVNTRVJUKCFpbmxpbmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOwogCiAg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gMDsKQEAgLTgwNDAsNyArODQzMSw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhl
Y3V0ZShibG9jayk7CiAKICAgICAgICAgICAgICAgICBhdXRvIG5vZGVBbmRJbmRleCA9IGJsb2Nr
LT5maW5kVGVybWluYWwoKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlQW5k
SW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CisgICAgICAgICAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBub2RlQW5kSW5kZXgubm9kZSwgbm9kZUFuZEluZGV4Lm5vZGUtPm9wKCkg
PT0gVW5yZWFjaGFibGUpOwogICAgICAgICAgICAgICAgIGJsb2NrLT5yZXNpemUobm9kZUFuZElu
ZGV4LmluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcAppbmRleCBlN2Y2ZTc2MjQ2NjliMzAxZjVhMDIwNDhjMjVkNDgxNWMzYTEzMzlk
Li42MTBkN2QyMGVmNjUzNWY3YThlOTViY2VhMTIxZWYzYjhhYjQwMmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5j
cHAKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayog
amV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kKQorICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFz
aWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIE9wZXJhbmQg
b3BlcmFuZCkKICAgICB7CiAgICAgICAgIE5vZGUqIGxpdmVuZXNzTm9kZSA9IGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgIGlmICghbGl2
ZW5lc3NOb2RlKQpAQCAtMzAyLDExICszMDIsOSBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
amV0dGlzb25CbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJs
b2NrLCBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbikKICAgICB7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywg
amV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
amV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQot
ICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3Vu
ZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKLSAgICAgICAgCisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNB
dEhlYWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBq
ZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJsb2NrLT52YXJp
YWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpKTsKKwogICAgICAgICBmaXhKZXR0aXNvbmVk
UHJlZGVjZXNzb3JzKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2spOwogICAgIH0KICAgICAKQEAgLTM1
MiwxMSArMzUwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRpbWUgdG8gaW5zZXJ0IGdo
b3N0aWVzIGZvciB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGtlcHQgYWxpdmUgaW4gY2FzZSB3ZSBP
U1IKICAgICAgICAgICAgIC8vIGV4aXQgcHJpb3IgdG8gaGl0dGluZyB0aGUgZmlyc3RCbG9jaydz
IHRlcm1pbmFsLCBhbmQgZW5kIHVwIGdvaW5nIGRvd24gYQogICAgICAgICAgICAgLy8gZGlmZmVy
ZW50IHBhdGggdGhhbiBzZWNvbmRCbG9jay4KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShm
aXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZM
b2NhbHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9j
aywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGkpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25l
ZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAga2Vl
cE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9y
aWdpbiwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkp
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
ZWNvbmRCbG9jay0+cGhpcy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4OGY4ZTFj
MmEwYjY3MGJmOTlmLi42MDAzMzJmMTkwZmY4YjQwNDJjZDU0MmFiOTViNTA1MzZhZDdhNzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0y
NzQsNiArMjc0LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2NhdGNo
OgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoK
ICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKICAgICBjYXNlIG9wX2xv
Z19zaGFkb3dfY2hpY2tlbl90YWlsOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgpAQCAtMzEx
LDYgKzMxMyw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBjaGVja3BvaW50
X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVja3Bv
aW50X29zcl9leGl0X3RyYW1wb2xpbmU6CiAgICAgY2FzZSBoYW5kbGVVbmNhdWdodEV4Y2VwdGlv
bjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ug
b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9jYWxsX3JldHVy
bl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF9yZXR1cm5fbG9jYXRpb246CiAgICAg
Y2FzZSBvcF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA4ZDdkZTI3MWRiMDk5NjE0YjVi
YzVhOTg3Y2FjYjJkOGU4ZWY4NjcwLi41YTNhYmQzOWE1NjQ4OWU5YTEzN2I2YTYyOWVlNDVjMTAz
MzQwZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTI0MTEsNyArMjQxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IElkZW50aXR5V2l0aFByb2ZpbGU6IHsKLSAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9k
ZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGb3JBbGxLaWxscy5oCmluZGV4IGJmNDM1MGM0Y2QxN2UzZDUwMDY2MzhmNTVhYWMzNWE1
NjUyOTk0YTEuLmQ5Yzk3NDI4ZmQ2YWU1ZWE1MDZkMDU3MjY3MzAyMGRkMWFmZjExNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc3LDcgKzc3LDcg
QEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZv
cmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihiZWZvcmVJbmxpbmVDYWxsRnJhbWUpOwogICAg
ICAgICBpZiAoYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSkgewogICAgICAgICAg
ICAgQVNTRVJUKGJlZm9yZS5ieXRlY29kZUluZGV4KCkuY2hlY2twb2ludCgpICE9IGFmdGVyLmJ5
dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpOwotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVjb2RlSW5k
ZXgoKS5vZmZzZXQoKSwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNob3VsZCBj
aGFuZ2UgdGhlIGZvckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBieXRlY29k
ZXMuIik7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUlu
ZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpIHx8IG5vZGVB
ZnRlci0+b3AoKSA9PSBFeGl0T0sgfHwgbm9kZUFmdGVyLT5vcCgpID09IEludmFsaWRhdGlvblBv
aW50LCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUg
Zm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKIAog
ICAgICAgICAgICAgYXV0byBsaXZlQmVmb3JlID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpj
b2RlQmxvY2ssIGJlZm9yZS5ieXRlY29kZUluZGV4KCkpOwogICAgICAgICAgICAgYXV0byBsaXZl
QWZ0ZXIgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYWZ0ZXIuYnl0ZWNv
ZGVJbmRleCgpKTsKQEAgLTEwMiw4ICsxMDIsNiBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRz
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYWZ0ZXIu
Ynl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSwgIlRyYW5zaXRpb25pbmcgYWNyb3NzIGEgY2hl
Y2twb2ludCBidXQgYmVmb3JlIGFuZCBhZnRlciBkb24ndCBzaGFyZSBhbiBpbmxpbmVDYWxsRnJh
bWUuIik7Ci0KICAgICAvLyBEZXRlY3Qga2lsbHMgdGhlIHN1cGVyIGNvbnNlcnZhdGl2ZSB3YXk6
IGl0IGlzIGtpbGxlZCBpZiBpdCB3YXMgbGl2ZSBiZWZvcmUgYW5kIGRlYWQgYWZ0ZXIuCiAgICAg
Qml0VmVjdG9yIGxpdmVBZnRlciA9IGdyYXBoLmxvY2Fsc0FuZFRtcHNMaXZlSW5CeXRlY29kZShh
ZnRlcik7CiAgICAgdW5zaWduZWQgbnVtTG9jYWxzID0gZ3JhcGguYmxvY2soMCktPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAppbmRleCBiYjZkOGY1MjhiMTZjYjU4YTk1MjlmNTBiNThmYWEwMTBmNDZlMzQzLi45NDRk
MjU2YWY1ZGRkMzE3ZjlkZDU1Nzg1ZTFlMDJmMzE2N2FiYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTUyNCw2ICsxNTI0LDM0IEBAIHZvaWQgR3JhcGg6OmNv
bnZlcnRUb1N0cm9uZ0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgY29u
dmVydFRvQ29uc3RhbnQobm9kZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKK0Zyb3plblZh
bHVlKiBHcmFwaDo6Ym90dG9tVmFsdWVNYXRjaGluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24pCit7CisgICAgLy8gSXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgd2hhdCB3
ZSByZXR1cm4gaGVyZS4KKyAgICBpZiAocHJlZGljdGlvbiA9PSBTcGVjTm9uZSkKKyAgICAgICAg
cmV0dXJuIGZyZWV6ZShKU1ZhbHVlKCkpOworCisgICAgaWYgKHNwZWN1bGF0aW9uQ29udGFpbnMo
cHJlZGljdGlvbiwgU3BlY090aGVyKSkKKyAgICAgICAgcmV0dXJuIGZyZWV6ZShqc051bGwoKSk7
CisKKyAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhwcmVkaWN0aW9uLCBTcGVjQm9vbGVhbikp
CisgICAgICAgIHJldHVybiBmcmVlemUoanNCb29sZWFuKHRydWUpKTsKKworICAgIGlmIChzcGVj
dWxhdGlvbkNvbnRhaW5zKHByZWRpY3Rpb24sIFNwZWNGdWxsTnVtYmVyKSkKKyAgICAgICAgcmV0
dXJuIGZyZWV6ZShqc051bWJlcigwKSk7CisKKyAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhw
cmVkaWN0aW9uLCBTcGVjQmlnSW50KSkKKyAgICAgICAgcmV0dXJuIGZyZWV6ZShtX3ZtLmJpZ0lu
dENvbnN0YW50T25lLmdldCgpKTsKKworICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHByZWRp
Y3Rpb24sIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkKKyAgICAgICAgcmV0dXJuIGZyZWV6ZSht
X3ZtLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKKworICAgIGlmIChzcGVjdWxhdGlvbkNv
bnRhaW5zKHByZWRpY3Rpb24sIFNwZWNDZWxsT3RoZXIgfCBTcGVjT2JqZWN0KSkKKyAgICAgICAg
cmV0dXJuIGZyZWV6ZShqc051bGwoKSk7CisKKyAgICBBU1NFUlQoc3BlY3VsYXRpb25Db250YWlu
cyhwcmVkaWN0aW9uLCBTcGVjRW1wdHkpKTsKKyAgICByZXR1cm4gZnJlZXplKEpTVmFsdWUoKSk7
Cit9CisKIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgR3JhcGg6OnJlZ2lzdGVyU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25SZXN1bHQmIHJlc3VsdCkKIHsK
ICAgICBtX3BsYW4ud2Vha1JlZmVyZW5jZXMoKS5hZGRMYXppbHkoc3RydWN0dXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA3YmQxODgwNjZhZDA2ZDdiZThhZjI1ZjM4
YWIxNDg5N2VlZmRlZjIyLi4yOGJmMTUyMDQxZDMzODYzNzZhNjZkY2JiMWJlOTU1YjliM2Y0NDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0yNDQsNiArMjQ0LDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnRUb0NvbnN0YW50KE5vZGUqIG5vZGUsIEZyb3plblZh
bHVlKiB2YWx1ZSk7CiAgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudChOb2RlKiBub2RlLCBKU1Zh
bHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0cm9uZ0NvbnN0YW50KE5vZGUqIG5vZGUs
IEpTVmFsdWUgdmFsdWUpOworCisgICAgLy8gVXNlIHRoaXMgdG8gcHJvZHVjZSBhIHZhbHVlIHlv
dSBrbm93IHdvbid0IGJlIGFjY2Vzc2VkIGJ1dCB0aGUgY29tcGlsZXIKKyAgICAvLyBtaWdodCB0
aGluayBpcyBsaXZlLiBGb3IgZXhtYXBsZSwgaW4gb3VyIG9wX2l0ZXJhdG9yX25leHQgcGFyc2lu
ZworICAgIC8vIHZhbHVlIFZpcnR1YWxSZWdpc3RlciBpcyBvbmx5IHJlYWQgaWYgd2UgYXJlIG5v
dCAiZG9uZSIuIEJlY2F1c2UgdGhlCisgICAgLy8gZG9uZSBjb250cm9sIGZsb3cgaXMgbm90IGlu
IHRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2RlIHRoaXMgaXMgbm90CisgICAgLy8gb2J2aW91
cyB0byB0aGUgY29tcGlsZXIuCisgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgcXVpdGUgYSB0cnVl
IGJvdHRvbSB2YWx1ZS4gRm9yIGV4YW1wbGUsIGFueSBvYmplY3QKKyAgICAvLyBzcGVjdWxhdGlv
biB3aWxsIG5vdyBiZSBPYmplY3R8T3RoZXIgYXMgdGhpcyByZXR1cm5zIG51bGwuIFdlIHNob3Vs
ZAorICAgIC8vIGZpeCB0aGlzIHdoZW4gd2UgY2FuIGFsbG9jYXRlIG9uIHRoZSBDb21waWxlciB0
aHJlYWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MDYyNworICAgIEZyb3plblZhbHVlKiBib3R0b21WYWx1ZU1hdGNoaW5nU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUpOwogICAgIAogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgcmVnaXN0ZXJTdHJ1
Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAppbmRleCAyMDJkMjI1
MDUzZmE5ZGZiZTVjMjNjNjRiY2Y4YmUzODRlM2U3NjU0Li43Y2MzNGFlMmQwZDRlNWY4NDhlNjk1
NzMwMjQ5MmMxMjFkNzFmZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtNTksNiArNTksOSBAQCB2b2lkIElu
UGxhY2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2soQmFzaWNCbG9jayogYmFzaWNCbG9j
aykKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxz
KCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFT
U0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNp
Y0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNTRVJUKGJhc2lj
QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZh
cmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsKKyAgICBBU1NFUlQoYmFzaWNCbG9jay0+
dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0SGVh
ZC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFp
bC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBz
KCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBz
KCkgPT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mVG1wcygpKTsKIAogICAg
IG1fYWJzdHJhY3RWYWx1ZXMucmVzaXplKCk7CiAKQEAgLTE2MSw2ICsxNjQsMTAgQEAgdm9pZCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBlbnRyeXBvaW50
LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwogICAgICAgICB9CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mVG1wcygp
OyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC50bXAoaSkuY2xl
YXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC50bXAoaSkuY2xlYXIo
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dy
YXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKQEAgLTE3NSwxMyArMTgyLDkgQEAgdm9pZCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGJsb2NrLT5jZmFUaGlu
a3NTaG91bGRUcnlDb25zdGFudEZvbGRpbmcgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYVN0
cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwogICAgICAg
ICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdh
dGNoZWQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVh
ZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRh
aWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZFtpXS5jbGVhcigpOworICAgICAgICAgICAgYmxv
Y2stPnZhbHVlc0F0VGFpbFtpXS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzks
NyArMjQyLDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAg
ICAgICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsK
ICAgICAgICAgICAgICAgICAvLyBUaGUgYmxvY2sgdHJhbnNmZXJzIHRoZSB2YWx1ZSBmcm9tIGhl
YWQgdG8gdGFpbC4KLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHZhcmlhYmxlQXQoaW5k
ZXgpOworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gYXRJbmRleChpbmRleCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkBAIC0z
MDQsNyArMzA3LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0gPSB2YXJpYWJsZUF0KGkpOworICAg
ICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9IGF0SW5kZXgoaSk7CiAgICAgICAgIH0K
IAogICAgICAgICBmb3IgKE5vZGVBYnN0cmFjdFZhbHVlUGFpciYgdmFsdWVBdFRhaWwgOiBibG9j
ay0+c3NhLT52YWx1ZXNBdFRhaWwpCkBAIC0zNDMsNiArMzQ2LDcgQEAgYm9vbCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAg
ICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVyRHVtcChmcm9tKSwgIiB0byAi
LCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJn
dW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2Nh
bHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOworICAgIEFTU0VS
VChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkgPT0gdG8tPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZlRtcHMoKSk7CiAgICAgCiAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAg
ICAgCkBAIC0zNTIsMTQgKzM1Niw5IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdl
KEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgIAogICAgIHN3aXRjaCAobV9n
cmFwaC5tX2Zvcm0pIHsKICAgICBjYXNlIFRocmVhZGVkQ1BTOiB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewotICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
ZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKLSAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24s
IGZyb20tPnZhbHVlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCksIHRvLT52YXJpYWJsZXNBdEhl
YWQuYXJndW1lbnQoYXJndW1lbnQpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJn
dW1lbnQpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgbG9jYWwg
PSAwOyBsb2NhbCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyArK2xv
Y2FsKSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1
ZXNBdEhlYWQubG9jYWwobG9jYWwpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlh
YmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJvbS0+dmFsdWVzQXRUYWlsLmxvY2FsKGxv
Y2FsKSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCksIGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5sb2NhbChsb2NhbCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmF0KGluZGV4KTsK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoZGVzdGlu
YXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hdChpbmRleCksIHRvLT52YXJpYWJsZXNBdEhlYWQu
YXQoaW5kZXgpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwuYXQoaW5kZXgpKTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKaW5kZXggMTg2NWU2YTFlZmZjM2RhYWVmZTU4NGNh
ODYyYzQ5YmMzNjg1ODUwMC4uYzVkMDI2ODczZTAxMGQwN2YzODExYzZjNGZlZjU2NmUxY2E3MGY5
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaApAQCAtMTU4LDEwICsxNTgsMTIgQEAgcHVibGljOgogICAgIAogICAgIE9wZXJh
bmRzPEFic3RyYWN0VmFsdWU+JiB2YXJpYWJsZXNGb3JEZWJ1Z2dpbmcoKTsKIAorICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5zaXplKCk7IH0KICAgICB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJl
ck9mQXJndW1lbnRzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscygpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mTG9jYWxzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1i
ZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5udW1iZXJPZlRtcHMoKTsgfQog
ICAgIAotICAgIEFic3RyYWN0VmFsdWUmIHZhcmlhYmxlQXQoc2l6ZV90IGluZGV4KQorICAgIEFi
c3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHsKICAgICAgICAgYWN0aXZh
dGVWYXJpYWJsZUlmTmVjZXNzYXJ5KGluZGV4KTsKICAgICAgICAgcmV0dXJuIGZhc3RGb3J3YXJk
KG1fdmFyaWFibGVzW2luZGV4XSk7CkBAIC0xNjksMTcgKzE3MSwxNyBAQCBwdWJsaWM6CiAKICAg
ICBBYnN0cmFjdFZhbHVlJiBvcGVyYW5kKE9wZXJhbmQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLm9wZXJhbmRJbmRleChvcGVyYW5kKSk7Cisg
ICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLm9wZXJhbmRJbmRleChvcGVyYW5kKSk7
CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGxvY2FsKHNpemVfdCBpbmRleCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLmxvY2FsSW5kZXgoaW5k
ZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92YXJpYWJsZXMubG9jYWxJbmRleChpbmRl
eCkpOwogICAgIH0KICAgICAKICAgICBBYnN0cmFjdFZhbHVlJiBhcmd1bWVudChzaXplX3QgaW5k
ZXgpCiAgICAgewotICAgICAgICByZXR1cm4gdmFyaWFibGVBdChtX3ZhcmlhYmxlcy5hcmd1bWVu
dEluZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVzLmFyZ3Vt
ZW50SW5kZXgoaW5kZXgpKTsKICAgICB9CiAgICAgCiAgICAgLy8gQ2FsbCB0aGlzIGJlZm9yZSBi
ZWdpbm5pbmcgQ0ZBIHRvIGluaXRpYWxpemUgdGhlIGFic3RyYWN0IHZhbHVlcyBvZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCmluZGV4IGY1ZWVmMmYzZGY3MjEy
OWE4MzhjNzY4NmUyNmI5NjBiNTBmNTgxZWUuLjdhMzM2NjZhYTcxYTFmNjY2Yzk0YjI4YjY0NDc0
ODRkNjdiYmI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6
eUpTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVl
LmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBMYXp5SlNWYWx1ZSBuZXdT
dHJpbmcoR3JhcGgmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIExhemluZXNzS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRlZFR5
cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS25vd25WYWx1ZSA/IFNwZWNCeXRlY29kZVRv
cCA6IFNwZWNTdHJpbmc7IH0KICAgICAKICAgICBGcm96ZW5WYWx1ZSogdHJ5R2V0VmFsdWUoR3Jh
cGgmKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
CmluZGV4IGE4NTJkYmRkOWI5MzcwZDZkZTY1M2M1YTQ4ODcxMTcwMGU4Yjg3OWIuLjUyMjM0YjRh
NWQzZjY5NzZjMmZhOTk4MTZkY2UxMTA2ODEwNTRlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtNDgsMTEgKzQ4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAotT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1Zh
bHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFs
dWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5z
aWduZWQgcmVjb3ZlcnlJbmRleCkKK09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNW
YWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZh
bHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVu
c2lnbmVkIHJlY292ZXJ5SW5kZXgsIHVuc2lnbmVkIGRmZ0lSSW5kZXgpCiAgICAgOiBPU1JFeGl0
QmFzZShraW5kLCBqaXQtPm1fb3JpZ2luLmZvckV4aXQsIGppdC0+bV9vcmlnaW4uc2VtYW50aWMs
IGppdC0+bV9vcmlnaW4ud2FzSG9pc3RlZCkKICAgICAsIG1fanNWYWx1ZVNvdXJjZShqc1ZhbHVl
U291cmNlKQogICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQogICAgICwgbV9yZWNv
dmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCisgICAgLCBtX2RmZ0lSSW5kZXgoZGZnSVJJbmRleCkK
ICAgICAsIG1fc3RyZWFtSW5kZXgoc3RyZWFtSW5kZXgpCiB7CiAgICAgYm9vbCBjYW5FeGl0ID0g
aml0LT5tX29yaWdpbi5leGl0T0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5o
CmluZGV4IDllOWJjZWE0ODFjMWQ2ODc3OTcyZjI1OWQ2MmMxYTIzMDBiMmIxNjEuLjhjZThiOTIw
NzlhZjc1Mjk5NzAzZjE3ZmRkYWUyZmVjM2I5YzI4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoQ2FsbEZyYW1lKiwgdm9pZCosIHZv
aWQKIC8vIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBob3cgdG8gZXhpdCB0aGUgc3BlY3VsYXRp
dmUgcGF0aCBieQogLy8gZ29pbmcgaW50byBiYXNlbGluZSBjb2RlLgogc3RydWN0IE9TUkV4aXQg
OiBwdWJsaWMgT1NSRXhpdEJhc2UgewotICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3Vy
Y2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWdu
ZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01BWCk7CisgICAg
T1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVj
b3ZlcnlJbmRleCA9IFVJTlRfTUFYLCB1bnNpZ25lZCBkZmdJUkluZGV4ID0gVUlOVF9NQVgpOwog
CiAgICAgZnJpZW5kIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChD
YWxsRnJhbWUqKTsKIApAQCAtMTU5LDYgKzE1OSw3IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGlj
IE9TUkV4aXRCYXNlIHsKICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1fdmFsdWVQ
cm9maWxlOwogICAgIAogICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJbmRleDsKKyAgICB1bnNpZ25l
ZCBtX2RmZ0lSSW5kZXg7CiAKICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
IGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDFkZjM5
NDMyNDFkNWFmNzkzMTk4ZWY5YzcxMjczZTc1OGEwYTIyNmEuLjA4NWRjNTMwYjNiYzM3OWZiNGYz
ZTYwOTFjYjVjNjUyMDI3NTg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTE1OSw5ICsxNTksMTUgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5h
bWUpIChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMTYoKSA/IExMSW50OjpnZXRXaWRlMTZDb2RlUHRy
PEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pIDogKGNhbGxJbnN0cnVjdGlv
bi5pc1dpZGUzMigpID8gTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFt
ZSMjX3JldHVybl9sb2NhdGlvbikgOiBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihu
YW1lIyNfcmV0dXJuX2xvY2F0aW9uKSkpCiAKICAgICAgICAgc3dpdGNoICh0cnVlQ2FsbGVyQ2Fs
bEtpbmQpIHsKLSAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6Ci0gICAgICAgICAg
ICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAgICBj
YXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogeworICAgICAgICAgICAgaWYgKGNhbGxJbnN0cnVj
dGlvbi5vcGNvZGVJRCgpID09IG9wX2NhbGwpCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9
IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNh
bGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgICAg
ICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVu
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9w
X2l0ZXJhdG9yX25leHQpCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVS
Tl9MT0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CiAgICAgICAgICAg
ICBqdW1wVGFyZ2V0ID0gTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTIzOSw2ICsyNDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
awogICAgICAgICB9CiAgICAgfQogCisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOwogICAgIHJldHVy
biBqdW1wVGFyZ2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGZlNDljMzEzMDM2
OTFiNmJmMjRjYTllYWI4NTJhZTEzOGJlNjZmMTIuLmRjMGUxZmY4NzMxZTI3MGFkZjM4OGJiZTQy
ZGE5YWJmMTYwNWIwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMTA0LDYgKzExMDQs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNoaWxkMSgpLT5tZXJn
ZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTGF6eUpTQ29u
c3RhbnQ6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+bGF6eUpT
VmFsdWUoKS5zcGVjdWxhdGVkVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yOgogICAgICAgICBjYXNlIFRvU3RyaW5nOgpAQCAtMTMwOCw3ICsxMzE0LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAg
IGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFJlY29yZFJlZ0V4
cENhY2hlZFJlc3VsdDoKLSAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKICAgICAgICAgY2Fz
ZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZp
c2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4KICAgICAgICAgICAgIERGR19DUkFT
SChtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBwcmVkaWN0
aW9uIHByb3BhZ2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCmluZGV4IDBkNjVkOGY4OWFlYzNkNTk0MmQyY2Y4M2Q2Y2VkOGExYmZmMzk4Y2IuLjlhZTk4
MDRjNzViOTVlYzU2MWVkMmYxYTUyYjlkZWM5OGM4NDVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGRhdGFMb2dGKCIpID09ICglcyA9ICIsICNyaWdodCk7IFwKICAgICAgICAgICAgIGRh
dGFMb2cocmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRhTG9nRigiKSAoJXM6JWQpLlxuIiwgX19G
SUxFX18sIF9fTElORV9fKTsgXAorICAgICAgICAgICAgZGF0YUxvZygiXG5cblxuIik7IFwKKyAg
ICAgICAgICAgIG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobnVsbHB0ciktPmR1bXBCeXRl
Y29kZSgpOyBcCiAgICAgICAgICAgICBkdW1wR3JhcGhJZkFwcHJvcHJpYXRlKCk7IFwKICAgICAg
ICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZf
UFJFVFRZX0ZVTkNUSU9OLCAjbGVmdCAiID09ICIgI3JpZ2h0KTsgXAogICAgICAgICAgICAgQ1JB
U0goKTsgXApAQCAtNTY4LDYgKzU3MCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgT3BlcmFu
ZHM8c2l6ZV90PiBnZXRMb2NhbFBvc2l0aW9ucyhPcGVyYW5kc0xpa2UsIGJsb2NrLT52YXJpYWJs
ZXNBdEhlYWQpOwogICAgICAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiBzZXRMb2NhbFBvc2l0aW9u
cyhPcGVyYW5kc0xpa2UsIGJsb2NrLT52YXJpYWJsZXNBdEhlYWQpOwogICAgICAgICAgICAgCisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
bnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIFZBTElEQVRFKChPcGVyYW5k
Ojp0bXAoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQudG1wKGkpIHx8IGJsb2Nr
LT52YXJpYWJsZXNBdEhlYWQudG1wKGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKKyAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpCisgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChPcGVyYW5kOjp0bXAoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJp
YWJsZXNBdFRhaWwudG1wKGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwudG1wKGkpLT5hY2Nl
c3Nlc1N0YWNrKG1fZ3JhcGgpKTsKKworICAgICAgICAgICAgICAgIGdldExvY2FsUG9zaXRpb25z
LnRtcChpKSA9IG5vdFNldDsKKyAgICAgICAgICAgICAgICBzZXRMb2NhbFBvc2l0aW9ucy50bXAo
aSkgPSBub3RTZXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5j
bHVkaW5nVGhpcyhpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChp
KSB8fCBibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpLT5hY2Nlc3Nlc1N0YWNrKG1f
Z3JhcGgpKTsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRD
UFMpCkBAIC03MTYsNiArNzI2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV9ncmFw
aC5tX2Zvcm0gPT0gTG9hZFN0b3JlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJs
ZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNoZWNrT3Bl
cmFuZCgKKyAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRM
b2NhbFBvc2l0aW9ucywgT3BlcmFuZDo6dG1wKGkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mQXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICAgICAgICAgIGNoZWNrT3BlcmFuZCgKICAg
ICAgICAgICAgICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRMb2NhbFBvc2l0
aW9ucywgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKQEAgLTk0
NCw3ICs5NTksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjaGVja09wZXJhbmQoCiAgICAgICAg
IEJhc2ljQmxvY2sqIGJsb2NrLCBPcGVyYW5kczxzaXplX3Q+JiBnZXRMb2NhbFBvc2l0aW9ucywK
LSAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKQorICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRMb2NhbFBvc2l0aW9u
cywgT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgaWYgKGdldExvY2FsUG9zaXRpb25z
Lm9wZXJhbmQob3BlcmFuZCkgPT0gbm90U2V0KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NDFmZGE2ODc2ZTY1
MmM5ODQ2MDFhMmIzYjc5ZDM0Li45NGRlMzhjYjcxNjc4YWQ4NmFiYWM2YjdjNjI4NzljMTZiMTBj
ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM3LDYgKzEz
Nyw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJHZXRCeUlkTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJHZXRCeVZhbEhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUg
Ikl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUg
IlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCmluZGV4IDdjZDE1ZDMxNWQ2MzkwYWJh
MjYzNWU5NjM1OWY4OTBlMmViNzFhOTUuLmMwNzc1ZDhlMWIxMDUwMmRmMDFhNzRhZjBjNmRlYjRh
ODc1Y2M2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0
YWRhdGEucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5y
YgpAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBNZXRhZGF0YQogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNZXRhZGF0YSk7CiAKICAgICBwdWJsaWM6CisgICAgICAgICN7b3Aub3Bjb2RlSUR9
CiAgICAgICAgIE1ldGFkYXRhKGNvbnN0ICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0mI3siIF9fb3Ai
IGlmIGluaXRzfSkje2luaXRzfSB7IH0KIAogI3tmaWVsZHN9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXggOWI1ZWU5MDk2ZWU3MWIxYjBkM2VkN2Y3Y2Qx
OGRiMDZmY2IzNWZjZi4uZjgzODBlZDU3NWQzMTNjNmVhMDZhYjVkNzJjMjVhODY3NzZkOWNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgpAQCAtNTMsNyAr
NTMsMTcgQEAgY2xhc3MgU2VjdGlvbgogICBlbmQKIAogICBkZWYgc29ydCEKLSAgICAgIEBvcGNv
ZGVzID0gQG9wY29kZXMuc29ydCB7IHxhLCBifCBhLm1ldGFkYXRhLmVtcHR5PyA/IGIubWV0YWRh
dGEuZW1wdHk/ID8gMCA6IDEgOiAtMSB9CisgICAgICBAb3Bjb2RlcyA9IEBvcGNvZGVzLnNvcnQg
eyB8YSwgYnwKKyAgICAgICAgICByZXN1bHQgPSBuaWwKKyAgICAgICAgICBpZiBhLmNoZWNrcG9p
bnRzIG9yIGIuY2hlY2twb2ludHMKKyAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2RlcyB3aXRo
IGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2EubmFtZX0iIGlmIGEuY2hlY2tw
b2ludHMgYW5kIGEubWV0YWRhdGEuZW1wdHk/CisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29k
ZXMgd2l0aCBjaGVja3BvaW50cyBzaG91bGQgaGF2ZSBtZXRhZGF0YTogI3tiLm5hbWV9IiBpZiBi
LmNoZWNrcG9pbnRzIGFuZCBiLm1ldGFkYXRhLmVtcHR5PworICAgICAgICAgICAgICByZXN1bHQg
PSBhLmNoZWNrcG9pbnRzID8gYi5jaGVja3BvaW50cyA/IDAgOiAtMSA6IDEKKyAgICAgICAgICBl
bHNpZgorICAgICAgICAgICAgICByZXN1bHQgPSBhLm1ldGFkYXRhLmVtcHR5PyA/IGIubWV0YWRh
dGEuZW1wdHk/ID8gMCA6IDEgOiAtMSAKKyAgICAgICAgICBlbmQKKyAgICAgICAgICByZXN1bHQK
KyAgICAgIH0KICAgICAgIEBvcGNvZGVzLmVhY2goJjpjcmVhdGVfaWQhKQogICBlbmQKIApAQCAt
NzMsNiArODMsMTggQEAgY2xhc3MgU2VjdGlvbgogICAgICAgZW5kCiAKICAgICAgIGlmIGNvbmZp
Z1s6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdCisgICAgICAgICAgaSA9IDAKKyAgICAgICAgICB3aGls
ZSB0cnVlCisgICAgICAgICAgICAgIGlmICFvcGNvZGVzW2ldLmNoZWNrcG9pbnRzCisgICAgICAg
ICAgICAgICAgICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5l
IE5VTUJFUl9PRl8je2NvbmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9XSVRIX0NIRUNLUE9J
TlRTICN7aX1cbiIKKyAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVuZAor
CisgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgIGVuZAorICAgICAgICAgIG91dCA8PCAi
XG4iCisKICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUgRk9SX0VBQ0hfI3tjb25maWdbOm1h
Y3JvX25hbWVfY29tcG9uZW50XX1fTUVUQURBVEFfU0laRShtYWNybykgXFxcbiIpCiAgICAgICAg
ICAgaSA9IDAKICAgICAgICAgICB3aGlsZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZi4uOGIzYTIzOGE0
ZGFmMWZjNjc5MTQwZDhiYmVjNzcwOWI4NTY4YmI5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgbV9sYWJlbHNbbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpXSA9IGxhYmVsKCk7
CiAKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxv
Z0xuKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBv
ZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkJh
c2VsaW5lIEpJVCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zm
c2V0ICIsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwogCiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCkBAIC00MzgsNiArNDM4LDkgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X2ludGVybmFsX2ZpZWxkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2ludGVybmFsX2Zp
ZWxkKQogCisgICAgICAgIERFRklORV9PUChvcF9pdGVyYXRvcl9vcGVuKQorICAgICAgICBERUZJ
TkVfT1Aob3BfaXRlcmF0b3JfbmV4dCkKKwogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAg
ICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQogICAgICAgICBERUZJTkVfT1Aob3BfdW5zaWduZWQp
CkBAIC01MjUsNyArNTI4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkK
ICAgICAgICAgICAgIHJhcmVDYXNlUHJvZmlsZSA9ICZyYXJlQ2FzZVByb2ZpbGVzLmF0KGJ5dGVj
b2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CiAKICAgICAgICAgaWYgKEpJVEludGVybmFsOjp2ZXJi
b3NlKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0aW5nIHNsb3cgY29kZSBm
b3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNldCgp
KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIHNsb3cgY29k
ZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1Z09mZnNl
dCgpKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rpc2Fz
c2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVTbG93UGF0aChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCks
IGxhYmVsKCkpOwpAQCAtNTg5LDYgKzU5Miw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29wZSkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF90b19zY29wZSkKIAorICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2l0ZXJhdG9yX25leHQpCisKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1df
T1AodW5zaWduZWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGluYykKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZGVjKQpAQCAtNjI2LDggKzYzMiw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIsIGZpcnN0VG8sICIgc2xvdzogIiwg
aXRlciAtIG1fc2xvd0Nhc2VzLmJlZ2luKCksICJcbiIpOwogCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xvd0Nhc2VzLmVuZCgpIHx8IGZpcnN0VG8gIT0g
aXRlci0+dG8sICJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4i
KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8gPT0gKGl0ZXIg
LSAxKS0+dG8sICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyID09IG1fc2xvd0Nhc2Vz
LmVuZCgpIHx8IGZpcnN0VG8ub2Zmc2V0KCkgIT0gaXRlci0+dG8ub2Zmc2V0KCksICJOb3QgZW5v
dWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKGZpcnN0VG8ub2Zmc2V0KCkgPT0gKGl0ZXIgLSAxKS0+dG8u
b2Zmc2V0KCksICJUb28gbWFueSBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7
CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAg
ICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoJnJhcmVDYXNlUHJvZmls
ZS0+bV9jb3VudGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MDczNTVjNmQ3MTE4
MmFhMDcyOWEyNzQ5MTAwNGY0NWUxZWE2YWMxLi44M2FlMWE3YjY5OGQ2OTMzZGJiOGEwMzcxOTA0
OWVjMjI1ODE4Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI5Nyw2ICsyOTcsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlRXhjZXB0aW9u
SGFuZGxlcnMoKTsKIAorICAgICAgICB2b2lkIGNoZWNrcG9pbnRSZWFjaGVkKCk7CisgICAgICAg
IHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXApOworCiAgICAgICAgIHZv
aWQgYWRkU2xvd0Nhc2UoSnVtcCk7CiAgICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoY29uc3QgSnVt
cExpc3QmKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZSgpOwpAQCAtNjc2LDYgKzY3OSwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhG
dW5jdGlvbik7CiAKKyAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisKICAgICAgICAgdm9pZCBlbWl0UmlnaHRT
aGlmdChjb25zdCBJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQg
ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCkBAIC05MTEsNiArOTE5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVmVjdG9yPENhbGxSZWNvcmQ+IG1fY2FsbHM7
CiAgICAgICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7CisgICAgICAgIEhhc2hNYXA8Qnl0ZWNv
ZGVJbmRleCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsKICAgICAgICAgVmVjdG9yPEpJVEdl
dEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeVZhbEdl
bmVyYXRvcj4gbV9nZXRCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCmluZGV4IGUxZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3MWZmY2IyMGI4NjYuLjc4
NzVjOTk2MGZiYjdhMDA5NTcyNWM2ODE5YjhmYjhmNGI2MTAxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2tw
b2ludC5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCkBAIC00Miw4ICs0NCw4IEBACiAjaW5jbHVkZSAiU2V0dXBWYXJhcmdz
RnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRodW5rR2Vu
ZXJhdG9ycy5oIgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCisjaW5jbHVk
ZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSw3
ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVz
dWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2RzdCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlv
bkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lz
dGVyKCksIHJlZ1QwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC02MSwyMCArNjMs
MjEgQEAgc3RkOjplbmFibGVfaWZfdDwKICwgdm9pZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUo
Y29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogeworICAgIHVuc2lnbmVkIGNoZWNr
cG9pbnQgPSBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOwogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBhcmdDb3VudCA9IGJ5
dGVjb2RlLm1fYXJnYzsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50
PihieXRlY29kZS5tX2FyZ3YpOworICAgIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPSBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludCk7CisgICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVy
c0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAgIGlmIChPcDo6b3Bjb2RlSUQg
PT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6
OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSksIHJlZ1QwKTsKICAgICAgICAgSnVtcCBk
b25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAgc3RvcmUz
MihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09m
TGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQcm9m
aWxlRm9yKG1ldGFkYXRhLCBjaGVja3BvaW50KS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlE
KCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQogCiAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwot
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50SW5j
bHVkaW5nVGhpcyksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIH0K
IAogCkBAIC0yMDcsNyArMjEwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIHsKICAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29k
ZS5tX2NhbGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5dGVj
b2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKIAogICAgIC8qIENhbGxlciBhbHdh
eXM6CiAgICAgICAgIC0gVXBkYXRlcyBjYWxsRnJhbWVSZWdpc3RlciB0byBjYWxsZWUgY2FsbEZy
YW1lLgpAQCAtMjM0LDkgKzIzNyw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVl
LgogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAotICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0
ZWNvZGUpKSB7CisgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25D
aGVjazsKICAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBy
ZWdUMCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRy
KSk7CkBAIC0zODAsNiArMzgyLDE4NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGNv
bXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVy
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRv
cl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVj
b2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1dG8qIHRyeUZhc3RG
dW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53aWR0aCgp
KSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9u
YXJyb3c7CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFz
dF93aWRlMTY7CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlf
ZmFzdF93aWRlMzI7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICB9KSgpOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRy
eUZhc3RGdW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0g
YnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAg
Y29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZv
SW5kZXgrKyk7CisgICAgY2hlY2twb2ludFJlYWNoZWQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAo
aXRlcmF0b3IpIGlzIGluIHJlZ1QwCisKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZ2
bSgpLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAgCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QwKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5
dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQpOworCisgICAgZmFzdENhc2UubGluayh0aGlzKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNl
PE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsr
KTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKworCisgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5
dGVjb2RlLm1fbmV4dDsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3Bl
cnR5TmFtZXMtPm5leHQuaW1wbCgpOworCisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlG
YXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lk
dGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zh
c3RfbmFycm93OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5
X2Zhc3Rfd2lkZTE2OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRf
dHJ5X2Zhc3Rfd2lkZTMyOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9uZXh0LCByZWdUMCk7CisgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5j
aElmTm90RW1wdHkocmVnVDApOworICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyeUZhc3RG
dW5jdGlvbik+KGluc3RydWN0aW9uLCAmbWV0YWRhdGEpOworICAgIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sodHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNo
MzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgZ2VuZXJp
Y0Nhc2UubGluayh0aGlzKTsKKyAgICBvcjgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5t
X2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcykpOworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVy
YXRvck5leHQ+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNoZWNr
cG9pbnRSZWFjaGVkKCk7CisgICAgLy8gY2FsbCByZXN1bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09i
amVjdCkgaW4gcmVnVDAKKworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJl
ZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgR1BSUmVnIGRvbmVHUFIgPSByZWdUMTsKKyAg
ICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0IGdldCBieSBp
ZCBiZWxvdy4KKyAgICBtb3ZlKHZhbHVlR1BSLCBpdGVyUmVzdWx0R1BSKTsKKworICAgIHsKKyAg
ICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXJSZXN1bHRHUFIpOworCisgICAg
ICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCk7CisgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKKyAg
ICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJv
cGVydHlOYW1lcy0+bmV4dC5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNW
YWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kb25lLCBkb25lR1BSKTsKKyAgICAgICAgY2hlY2twb2ludFJlYWNoZWQo
KTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7Cisg
ICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOworICAgICAgICBjb25zdCBib29sIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGZhbHNlOworICAgICAgICBKdW1wTGlzdCBp
dGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiks
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7
CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOworCisgICAg
ICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsKKyAgICB9CisKKyAgICBmYXN0Q2FzZS5saW5r
KHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxs
U2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5m
b0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwor
CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsK
KyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9u
ZTsKKyAgICAgICAgR1BSUmVnIGl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKworICAgICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CisgICAgICAg
IG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKKyAgICAg
ICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CisK
KyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5k
b25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlk
c1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJv
ZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOworICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBT
bG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2JqZWN0Lmxpbmso
dGhpcyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3Vs
dElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkp
OworICAgIH0KKworICAgIHsgICAKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9IGJ5dGVjb2RlLm1fdmFsdWU7CisgICAg
ICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107
CisKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1
bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CisKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9CisKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCmluZGV4IDkwNjk2Y2JlYzEwZTM5M2I5OTcwZjBlYjIwMTE4ZDIxOTc0YzM1MjUu
LmQxNDBhYWM5YmUyZDU0MDNkMWJjMGQ5OTEyYWU5ZTEwNWY4MGQ0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQor
eworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQor
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKK3sK
KyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA3ZGNiZThmYTNhZTU2OGNiYWE2NWNh
NDFlNWUxYmEyNzU2NTUzM2Y0Li40Yjk0YWI4NDFmZDE1MTQ4ZDRhMzIzZTEzODFkMjM1OTdmMzBh
OWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjYsNyArMjYs
OSBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkJ5dGVjb2Rl
T3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0xMDUsNyArMTA3LDcgQEAgQUxXQVlTX0lOTElORSBKSVQ6OkNhbGwgSklU
OjplbWl0TmFrZWRUYWlsQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiB0YXJnZXQpCiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSgpCiB7Ci0gICAgdWludDMyX3QgbG9j
YXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLmJpdHMoKTsKKyAgICB1
aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKSkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIAog
ICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGF0IHRoaXMgaXMgbmVlZGVkLiBKSVRPcGVy
YXRpb25zIHRlbmQgdG8gdXBkYXRlIHRoZSB0b3AgY2FsbCBmcmFtZSBvbgpAQCAtMTgzLDYgKzE4
NSwyNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjpoYXNBbnlTbG93Q2FzZXMoVmVjdG9yPFNs
b3dDYXNlRW50cnk+JiBzbG93Q2FzZXMsIFZlY3RvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
aW5saW5lIHZvaWQgSklUOjpjaGVja3BvaW50UmVhY2hlZCgpCit7CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxs
ZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5k
ZXggaXMgc2V0Iik7CisgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCksIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgKyAxKTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gbV9jaGVja3BvaW50TGFiZWxzLmFkZChtX2J5dGVjb2RlSW5kZXgs
IGxhYmVsKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1
bXAganVtcCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwgIlRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5l
cmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICBtX2J5dGVjb2Rl
SW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9ieXRlY29k
ZUluZGV4LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0byBpdGVyID0gbV9jaGVja3BvaW50
TGFiZWxzLmZpbmQobV9ieXRlY29kZUluZGV4KTsKKyAgICBBU1NFUlQoaXRlciAhPSBtX2NoZWNr
cG9pbnRMYWJlbHMuZW5kKCkpOworICAgIGp1bXAubGlua1RvKGl0ZXItPnZhbHVlLCB0aGlzKTsK
K30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YWRkU2xvd0Nhc2UoSnVtcCBqdW1wKQogewog
ICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBi
ZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVj
b2RlSW5kZXggaXMgc2V0LgpAQCAtMzE5LDcgKzM0MCw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKG1ldGFkYXRhLm1fcHJvZmlsZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh2
YWx1ZVByb2ZpbGVGb3IobWV0YWRhdGEsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpKTsK
IH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoUmVn
aXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCA3YWUxNTBjYzY2MTA3NjJiYWNjOGJlNDIyMDczYWFkNjRhYjMxMTkxLi5hNWUyYTI0N2Nm
MTU0ZGE0NmViMzNkZmJiZjBlMzM2MGQzNmY1NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzNCw2ICsxMzQsMTYgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFs
T2JqZWN0KiBnbG8KICAgICBBU1NFUlQodm0udGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogfQog
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworfQorCiBpbnQzMl90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhlZmI1YjVhYzk4MGFlZTZjNTUyMzQ0
MzdjOTAyODk1ODkwMjI2NjUuLjlmY2M0MWRlYzQ1ODJjOTY1MjkyMzY1NWRhOGYzMDI2OTVkZjcw
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTUs
NiArMTU1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXIoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9v
a3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZShWTSopIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbihWTSopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJv
ckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5U
RVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCA4ZGVhN2YyNzhlNzY2MmU1MDMxNGNlYjliMDgzMzlmODdiZmRhNDk3Li43OWZhNjAy
MTcyYjExYTQ4NGM0NGI0YThlNGJmYzZhNTJlM2JiZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKICNp
bmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgiCkBAIC04Miw2ICs4Myw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJs
b2NrLT52bSgpOyBcCiAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7IFwKKyAgICBkYXRhTG9nTG5JZihMTElOVF9UUkFDSU5HICYmIE9wdGlvbnM6OnRyYWNlTExJ
bnRTbG93UGF0aCgpLCAiQ2FsbGluZyBzbG93IHBhdGggIiwgV1RGX1BSRVRUWV9GVU5DVElPTik7
IFwKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKQogCiAjaWZu
ZGVmIE5ERUJVRwpAQCAtNjkzLDcgKzY5NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfYnlfaWRfZGlyZWN0KQogfQogCiAKLXN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFBy
b3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgT3BHZXRCeUlkOjpNZXRhZGF0
YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCitzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNo
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRh
LCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVy
ZSh2bSk7CiAKQEAgLTc0MSw0NCArNzQzLDM5IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFBy
b3RvdHlwZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kCiAg
ICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgpKQotICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuc2V0VW5zZXRNb2RlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBtZXRhZGF0
YS5zZXRVbnNldE1vZGUoc3RydWN0dXJlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlQoc2xvdC5pc1ZhbHVlKCkpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuc2V0UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsK
KyAgICAgICAgICAgIG1ldGFkYXRhLnNldFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQs
IHNsb3Quc2xvdEJhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIoY29kZUJsb2NrKTsKIH0KIAotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Z2V0X2J5X2lkKQorc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0
cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5
SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwotICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIAog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGlkZW50LCBz
bG90KTsKLSAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIoYnl0ZWNvZGUubV9kc3QpID0gcmVzdWx0OwotICAgIAorICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKKwogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19T
TE9XCiAgICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90LmlzQ2Fj
aGVhYmxlKCkKICAgICAgICAgJiYgIXNsb3QuaXNVbnNldCgpKSB7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgc3dpdGNoICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1ldGFk
YXRhLm1vZGUpIHsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OkRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6VW5zZXQ6Ci0gICAgICAgICAgICAgICAgb2xk
U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJl
SUQ7CisgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS51bnNldE1vZGUu
c3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdl
dEJ5SWRNb2RlOjpQcm90b0xvYWQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOworICAgICAg
ICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1
cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSAwOwpAQCAtNzk5LDM1ICs3OTYsMTAzIEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgIGlmIChzbG90
LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAg
ICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNo
ZSgpOworICAgICAgICAgICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hl
KCk7CiAKICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2
ZXIgaGFwcGVuaW5nLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291
bnRGb3JMTEludENhY2hpbmcgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEuaGl0Q291bnRGb3JM
TEludENhY2hpbmcgPSAwOwogICAgICAgICAKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnBy
b3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJv
cGVydHlXYXRjaHBvaW50KCkpIHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQg
PSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlZmF1bHRN
b2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgIG1ldGFk
YXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAg
ICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5o
aXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiBzbG90LmlzVmFsdWUoKSkpIHsKKyAgICAgICAgfSBl
bHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiBzbG90
LmlzVmFsdWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkgIT0gYmFz
ZVZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5o
aXRDb3VudEZvckxMSW50Q2FjaGluZykpCisgICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLmhp
dENvdW50Rm9yTExJbnRDYWNoaW5nKSkKICAgICAgICAgICAgICAgICBzZXR1cEdldEJ5SWRQcm90
b3R5cGVDYWNoZShnbG9iYWxPYmplY3QsIHZtLCBjb2RlQmxvY2ssIHBjLCBtZXRhZGF0YSwgYmFz
ZUNlbGwsIHNsb3QsIGlkZW50KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FM
V0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0
cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAgICAg
bWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5hcnJh
eUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihjb2RlQmxvY2spOwogICAgIH0KIAotICAgIExMSU5UX1BST0ZJTEVfVkFMVUUocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcEdldEJ5SWQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spOworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0
LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJTlRf
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCk7CitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1
ZSBpdGVyYXRvciA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2l0ZXJhdG9yKTsK
KyAgICBSZWdpc3RlciYgbmV4dFJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVj
b2RlLm1fbmV4dCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQo
cGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+
bmV4dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSk7CitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgLy8gV2Ug
dXNlIG1fdmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVlIHNpbmNlIGl0J3Mg
ZWl0aGVyIG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZp
bGxlZCBsYXRlci4KKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIFJlZ2lzdGVyJiBkb25lUmVnaXN0ZXIgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsKKworICAgIGlmICghaXRlcmF0
b3JSZXR1cm4uaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVz
LT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOworICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpOworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0Pigp
OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAg
ICAvLyBXZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgdG1w
IHNpbmNlIGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdv
aW5nIHRvIGJlIGZpbGxlZCBsYXRlci4KKyAgICBSZWdpc3RlciYgdmFsdWVSZWdpc3RlciA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBKU1ZhbHVlIGl0ZXJh
dG9yUmV0dXJuID0gdmFsdWVSZWdpc3Rlci5qc1ZhbHVlKCk7CisKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVy
YXRvclJldHVybiwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2Rl
TWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIHZhbHVlUmVnaXN0
ZXIgPSByZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJv
ZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQog
ewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xNTYzLDcgKzE2MjgsNyBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHNldFVwQ2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBDb2RlU3BlY2lh
bGl6YXRpb25LaQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxp
bmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgT3AmJiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSAwKQogewogICAgIC8vIFRoaXMgbmVl
ZHMgdG86CiAgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgpAQCAtMTU3MSwxNiArMTYzNiwx
NiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29k
ZUJsb2NrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZQogICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsg
dGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNo
aW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCiAgICAgCi0g
ICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fY2FsbGVlKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgY2FsbGVlRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsKICAgICAKLSAgICBD
YWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gYnl0ZWNvZGUubV9hcmd2OworICAg
IENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBzdGFja09mZnNldEluUmVnaXN0
ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hlY2twb2ludEluZGV4KTsKICAgICAKLSAgICBjYWxsZWVG
cmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNvZGUubV9hcmdjKTsKKyAg
ICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIGNhbGxl
ZUZyYW1lLT51bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUp
KSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxG
cmFtZSk7CiAgICAgCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOwotICAgIHJldHVybiBzZXRVcENhbGwoY2FsbGVlRnJhbWUsIGtpbmQsIGNhbGxlZUFz
VmFsdWUsICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChj
YWxsZWVGcmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJmNhbGxMaW5rSW5mb0ZvcihtZXRhZGF0
YSwgY2hlY2twb2ludEluZGV4KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jYWxsKQpAQCAtMTYwNCw2ICsxNjY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jb25zdHJ1Y3QpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVy
aWNDYWxsKGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BDb25zdHJ1Y3Q+KCksIENvZGVG
b3JDb25zdHJ1Y3QpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9pdGVyYXRvcl9vcGVuX2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0
ZXJhdG9yX29wZW5fY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBvcGVuX2Nh
bGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChj
b2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpLCBDb2RlRm9yQ2Fs
bCwgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwpOworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNh
bGxpbmcgc2xvdyBuZXh0X2NhbGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBnZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JO
ZXh0PigpLCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KSk7Cit9CisK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKQog
ewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xOTkwLDYgKzIwNzcsNDQgQEAgc3RhdGljIHZvaWQg
aGFuZGxlVmFyYXJnc0NoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNH
bG9iYWxPYmplY3QKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kc3QpID0g
cmVzdWx0OwogfQogCitzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IE9wSXRlcmF0b3JPcGVuJiBieXRlY29kZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkUihieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFpdGVy
YXRvci5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3Mp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSlNWYWx1ZSBuZXh0ID0gaXRlcmF0b3Iu
Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0
ZWNvZGUubV9uZXh0KSA9IG5leHQ7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yTmV4
dENoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck5leHQmIGJ5dGVjb2RlLCBDaGVja3BvaW50
T1NSRXhpdFNpZGVTdGF0ZSYgc2lkZVN0YXRlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSBzaWRlU3Rh
dGUuYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCk7CisKKyAgICBhdXRvJiB2YWx1ZVJlZ2lzdGVy
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIGF1dG8gaXRl
cmF0b3JSZXN1bHRPYmplY3QgPSBzaWRlU3RhdGUudG1wc1tPcEl0ZXJhdG9yTmV4dDo6bmV4dFJl
c3VsdF07CisgICAgYXV0byBuZXh0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1f
bmV4dCkuanNWYWx1ZSgpOyAgICAKKworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShu
ZXh0LCAiV2Ugc2hvdWxkIG5vdCBPU1IgZXhpdCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2Fz
ZXMuIik7CisKKyAgICBhdXRvJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
Ynl0ZWNvZGUubV9kb25lKTsKKyAgICBpZiAoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JO
ZXh0OjpnZXREb25lKSB7CisgICAgICAgIGRvbmVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2Jq
ZWN0LmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICBpZiAoZG9uZVJlZ2lzdGVyLmpzVmFsdWUoKS50b0Jvb2xlYW4oZ2xvYmFs
T2JqZWN0KSkKKyAgICAgICAgdmFsdWVSZWdpc3RlciA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxz
ZQorICAgICAgICB2YWx1ZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUpOworfQorCiBpbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWN0aW9uU3RyZWFtOjpSZWYgcGMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWNvZGVC
bG9jay0+dm0oKS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkpOwpAQCAtMjA2Niw2ICsyMTkxLDE1
IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29z
cl9leGl0KENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgICAgIGhhbmRsZVZhcmFyZ3NDaGVja3Bv
aW50KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wVGFpbENhbGxWYXJhcmdz
PigpLCAqc2lkZVN0YXRlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIG9wX2l0
ZXJhdG9yX29wZW46IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCh2bSwg
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAg
aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKSwgKnNpZGVTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwMyw2ICsyMjM3LDEyIEBAIGV4dGVybiAi
QyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
Q2VsbCogY2VsbCkKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCit7CisgICAg
ZGF0YUxvZ0xuKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworfQorCiBleHRlcm4gIkMiIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludF9jcmFzaCgpCiB7CiAgICAgQ1JBU0goKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCBiNTY5OWMzMGQyY2RhZmE0ZjkzYzNhOWYwOTgwNTcxYzgxNzY3YzFhLi5mOWEzNGRh
YjM2ZDlmYTUyNzU2YTE5OGIyZDc0Zjc1MmM1MzhhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMDMyLDcgKzEw
MzIsNyBAQCBtYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkK
ICAgICBzaXplKGRlZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3Jv
IChmKSBmKCkgZW5kKQogZW5kCiAKLW1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCittYWNy
byBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQ
dHJUYWcpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNG
dW5jdGlvbiBjYWxsZWUKICAgICBlbHNlCkBAIC0xMDQ1LDExICsxMDQ1LDExIEBAIG1hY3JvIGNh
bGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNo
LCBjYWxsZWUsIGNhbGxQCiAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRp
b24sIHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCiAgICAgICAgICMgY3Jhc2hlcy4KICAgICAgICAg
cmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVy
LCBkaXNwYXRjaCkKICAgICBlbmQKICAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2Rl
TmFtZSwgc2l6ZSkKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBkaXNw
YXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgIGRpc3BhdGNo
QWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVh
bFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCiBtYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwo
Y2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQpAQCAtMTExNyw3ICsxMTE3
LDExIEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVt
cDMsIGNhbGxQdHJUYWcpCiAgICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZwogZW5kCiAKLW1hY3Jv
IHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNo
LCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCittYWNybyBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVD
YWxsKQorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQK
KworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgs
IHByZXBhcmVDYWxsKQogICAgIGNhbGxDYWxsU2xvd1BhdGgoCiAgICAgICAgIHNsb3dQYXRoLAog
ICAgICAgICAjIFRob3NlIGFyZSByMCBhbmQgcjEKQEAgLTExMjYsNyArMTEzMCw3IEBAIG1hY3Jv
IHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNo
LCBzbG93UGF0aCwgcHJlcGFyCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAog
ICAgICAgICAgICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRh
ZykKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlv
biglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVl
LCBTbG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2Rl
TmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBl
bmQpCiBlbmQKIApAQCAtMjAxNiw3ICsyMDIwLDcgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBmcmFtZVNsb3dQYXRoLCBzbG8K
ICAgICAgICAgICAgIHN1YnAgcjEsIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgICAgICBl
bmQKICAgICBlbmQKLSAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9y
Q29tbW9uQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKIAogCkBAIC0yMDc5LDcgKzIwODMsNyBAQCBlbmQpCiAj
IHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCiAKIF9sbGludF9v
cF9jYWxsX2V2YWw6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9u
Q2FsbCgKICAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKICAgICAgICAgbmFycm93LAogICAg
ICAgICBPcENhbGxFdmFsLApAQCAtMjA4OCw3ICsyMDkyLDcgQEAgX2xsaW50X29wX2NhbGxfZXZh
bDoKICAgICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFs
X3dpZGUxNjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxs
KAogICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTE2LAogICAgICAgICB3aWRlMTYsCiAgICAgICAg
IE9wQ2FsbEV2YWwsCkBAIC0yMDk3LDcgKzIxMDEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dp
ZGUxNjoKICAgICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9l
dmFsX3dpZGUzMjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25D
YWxsKAogICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTMyLAogICAgICAgICB3aWRlMzIsCiAgICAg
ICAgIE9wQ2FsbEV2YWwsCkBAIC0yMTA3LDcgKzIxMTEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFs
X3dpZGUzMjoKIAogCiBjb21tb25PcChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCwgbWFjcm8g
KCkgZW5kLCBtYWNybyAoc2l6ZSkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxF
dmFsLCBtYWNybyAoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1f
cHJvZmlsZSwgbV9kc3QsIG1hY3JvICgpCiAgICAgICAgIGRpc3BhdGNoT3Aoc2l6ZSwgb3BfY2Fs
bF9ldmFsKQogICAgIGVuZCkKIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjE4
M2M4MDQyYWJkZmNlOGQ0MzkxMWFmNDFmNjU0YS4uNzRjNDgwZGYyMTIxNzE2NTUwYzVmZDRmMDg0
NGFiMTEwOGZkYzgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8g
bWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gs
IGZuKQogICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQy
KQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0NSwgdDEsIHQwKQorICAgICAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDApCiAgICAg
ICAgIGdldChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdCiAgICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQpAQCAtNzcs
MTYgKzc3LDE3IEBAIGVuZAogCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBp
cyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hB
ZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAr
IFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxv
YWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQo
c2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2RzdCwgdDMpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVj
dCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0MykKICAgICBzdG9yZWkgcjEsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQogICAgIHN0b3JlaSByMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIG1l
dGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHIxLCByMCkKICAgICBkaXNwYXRjaCgpCisKIGVuZAogCiBtYWNy
byBjQ2FsbDIoZnVuY3Rpb24pCkBAIC02MzIsOSArNjMzLDkgQEAgbWFjcm8gd3JpdGVCYXJyaWVy
T25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1ZUZpZWxkTmFtZSkKICAg
ICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFk
YXRhLCB0YWcsIHBheWxvYWQpCittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9m
aWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKICAgICBzdG9yZWkgdGFnLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0YWRh
dGFdCi0gICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9m
aWxlLm1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCisgICAgc3RvcmVpIHBheWxv
YWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQ
YXlsb2FkT2Zmc2V0W21ldGFkYXRhXQogZW5kCiAKIApAQCAtMTM3OCw3ICsxMzc5LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRh
OjptX29mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0NSwg
dDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUs
IHQwLCB0MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAg
LTE0MDAsNyArMTQwMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdl
dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgYmluZXEgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90
W3Q1XSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQx
KQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEp
CiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0aDoKQEAgLTE0MTMsNyArMTQxNCw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAK
ICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDApCiAgICAgcmV0
dXJuKEludDMyVGFnLCB0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgpAQCAtMTQyMSw3ICsxNDIyLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIFVuZGVmaW5lZFRhZywgMCkK
KyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcs
IDApCiAgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBA
IC0xNDMwLDcgKzE0MzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpcyBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZz
ZXRbdDVdLCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BH
ZXRCeUlkU2xvdwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwg
dDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0
MSkKIAogLm9wR2V0QnlJZFNsb3c6CkBAIC0xNDQwLDcgKzE0NDEsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1
cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkK
QEAgLTE1MTgsNyArMTUxOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwg
T3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGdl
dChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCBzY3JhdGNoLCA4XQogICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwg
SW50MzJUYWcsIHJlc3VsdFBheWxvYWQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKICAgICAgICAgZGlzcGF0
Y2goKQogICAgIGVuZAogCkBAIC0xNTI3LDcgKzE1MjgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZAogICAgICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBz
dG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9y
ZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIp
CiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU3Miw3ICsxNTczLDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vcEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyLCB0MSkKKyAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQogICAgIGRpc3Bh
dGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1ODUsNyArMTU4Niw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVy
U2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRh
dGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0MiwgcjEsIHIwKQorICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0
dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTk1NywxMCArMTk1OCwxMCBAQCBtYWNybyBjb21tb25D
YWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHBy
b2xvZ3VlKQogICAgICAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQog
ICAgICAgICBtb3ZlIHQzLCBzcAogICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMs
IHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykK
KyAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAK
ICAgICAub3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAg
ICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9m
aWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBlbmQpCiBl
bmQKIApAQCAtMjI4OCw3ICsyMjg5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJv
bV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBt
YWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0
YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MywgdDAsIHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0
NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmls
ZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjI5
Nyw3ICsyMjk4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BH
ZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgVGFn
T2Zmc2V0W3QwXSwgdDEKICAgICAgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0MF0sIHQyCiAgICAg
ICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDEpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3Bl
LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5k
CiAKQEAgLTIzMDUsNyArMjMwNiw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAg
ICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0
MywgOF0sIHQxCiAgICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyAr
IFBheWxvYWRPZmZzZXRbdDAsIHQzLCA4XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2Nv
cGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBl
bmQKIApAQCAtMjU5NCw2ICsyNTk1LDE1IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0
X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAg
cmV0dXJuKEludDMyVGFnLCB0MCkKIGVuZCkKIAorbGxpbnRPcChvcF9pdGVyYXRvcl9vcGVuLCBP
cEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NS
RXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9yX29wZW4sIHNpemUpCisgICAgYnJlYWsKK2VuZCkK
KworbGxpbnRPcChvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9y
X25leHQsIHNpemUpCisgICAgYnJlYWsKK2VuZCkKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dl
dF9pbnRlcm5hbF9maWVsZCwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX2Jhc2UsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhZTJl
Mzc3M2ZmZGNjNDA2NzRjN2FhYzBjMWQ0ZmU2Y2QwZmI3ODU5Li44NjEzNmU4NTdjOWY3ODIyYjI0
NDZjNjI2YmZkYzdhM2RmYmIyZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNjgsMjYgKzY4LDI2IEBAIG1h
Y3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3Bh
dGNoLCBmbikKICAgICBmbihtYWNybyAodmFsdWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQzCiAg
ICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVj
dCwgdDEsIHQzKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUs
IHQxLCB0MykKICAgICAgICAgZ2V0KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2Zy
LCB0MSwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdmFsdWUpCi0gICAgc3RvcmVxIHZhbHVl
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0YWRhdGFd
CittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEs
IHZhbHVlKQorICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJv
ZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRhZGF0YV0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNh
bGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4K
LW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCitt
YWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAgICAgbG9hZFBDKCkKICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25z
UmF3UG9pbnRlcltQQl0sIFBCCi0gICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgbV9kc3QsIHQx
KQorICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAg
ICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1
Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MiwgcjApCisgICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwKQogICAg
IGRpc3BhdGNoKCkKIGVuZAogCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcAogICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2Fk
aSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5SWREaXJlY3QsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBt
X3Byb2ZpbGUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93
OgpAQCAtMTM0OCw1MyArMTM0OCw1OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9p
ZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGRp
c3BhdGNoKCkKIGVuZCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisjIFRo
ZSBiYXNlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MworbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxw
ZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93
TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDIsIHQxKQotICAg
IGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJdLCB0MQot
ICAgIGdldChtX2Jhc2UsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUs
IHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKIC5vcEdldEJ5SWREZWZhdWx0
OgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkRlZmF1bHQsIC5vcEdldEJ5
SWRQcm90b0xvYWQKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAg
IGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0
cnVjdHVyZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAg
bG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNh
Y2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
bW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJp
bmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJv
dG9Mb2FkOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwg
Lm9wR2V0QnlJZEFycmF5TGVuZ3RoCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90
b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKLSAgICBiaW5lcSB0MywgdDEsIC5vcEdldEJ5
SWRTbG93Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnBy
b3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKLSAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1l
dGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0Mwor
ICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnBy
b3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xh
YmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5h
bWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hl
ZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0
MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkK
IAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJ
ZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBtb3ZlIHQzLCB0MAotICAg
IGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxl
bmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElzQXJyYXks
IC5vcEdldEJ5SWRTbG93Ci0gICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5
SWRTbG93CisgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVN
ZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisg
ICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFw
ZU1hc2ssIHNsb3dMYWJlbAogICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVy
Zmx5W3QzXSwgdDAsIHQxKQogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRl
eGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwg
MCwgLm9wR2V0QnlJZFNsb3cKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVt
YmVyVGFnLCB0MAotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0
dXJuKHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0
YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0
QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgVmFsdWVVbmRlZmluZWQp
CisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUu
dW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJl
bAorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBW
YWx1ZVVuZGVmaW5lZCkKICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKK2VuZAorCitsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MCkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQor
ICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJv
ZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisKIC5vcEdldEJ5
SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKICAg
ICBkaXNwYXRjaCgpCkBAIC0xNDAyLDcgKzE0MDgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChv
cF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2Zp
bGUsIHQyLCByMCkKICAgICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE0OTcsNyArMTUwMyw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0
LCBzY3JhdGNoKQogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSBy
ZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCB0NSwgcmVzdWx0KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxl
LCB0NSwgcmVzdWx0KQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NTgsNyAr
MTU2NCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdldEJ5VmFsRG9uZToKICAg
ICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0
NSwgdDIpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQog
ICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1NzEs
NyArMTU3Nyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAg
ICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAg
ICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcjAp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQogICAgIHJl
dHVybihyMCkKIAogZW5kKQpAQCAtMTk0OCw2ICsxOTU0LDMwIEBAIG1hY3JvIGFycmF5UHJvZmls
ZUZvckNhbGwob3Bjb2RlU3RydWN0LCBnZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8gY2FsbEhl
bHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRh
dGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpCisgICAgbWV0YWRhdGEodDUsIHQwKQorICAgIGdldENhbGxlZSh0MCkKKworICAgIGxv
YWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxh
c3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDAsIHQzKQorICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKworICAgIGdl
dEFyZ3VtZW50U3RhcnQodDMpCisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ3AgdDMKKyAgICBh
ZGRwIGNmciwgdDMKKyAgICBzdG9yZXEgdDIsIENhbGxlZVt0M10KKyAgICBnZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyh0MikKKyAgICBzdG9yZVBDKCkKKyAgICBzdG9yZWkgdDIsIEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBz
cAorICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNF
bnRyeVB0clRhZykKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorZW5kCisKIG1hY3JvIGNvbW1v
bkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwg
cHJvbG9ndWUpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAg
ICBtZXRhZGF0YSh0NSwgdDApCkBAIC0xOTU2LDI0ICsxOTg2LDE5IEBAIG1hY3JvIGNvbW1vbkNh
bGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJv
bG9ndWUpCiAgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBk
c3QpCiAgICAgICAgIGVuZCwgbWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkK
LSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQotICAgICAgICBicW5lcSB0MywgdDIsIC5v
cENhbGxTbG93Ci0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQot
ICAgICAgICBsc2hpZnRpIDMsIHQzCi0gICAgICAgIG5lZ3AgdDMKLSAgICAgICAgYWRkcCBjZnIs
IHQzCi0gICAgICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQotICAgICAgICBnZXR1KHNpemUsIG9w
Y29kZVN0cnVjdCwgbV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVQQygpCi0gICAgICAgIHN0b3Jl
aSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAg
ICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0
LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQot
ICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAg
ICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKKyAg
ICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFydChkc3QpCisgICAgICAg
ICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCBkc3QpCisgICAgICAgIGVuZAor
CisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50Q291bnQoZHN0KQorICAgICAgICAgICAgZ2V0dShz
aXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBj
YWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwg
bV9kc3QsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwg
Z2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQKIApAQCAt
MjI3Niw3ICsyMzAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwg
T3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQ
cm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVy
YW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAs
IHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MikKKyAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAgICAg
ICAgcmV0dXJuKHQyKQogICAgIGVuZAogCkBAIC0yMjg0LDE0ICsyMzA5LDE0IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6
bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAgICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAgdGR6Q2hl
Y2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0
NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0
NSwgdDApCiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1
cmVWYXIoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFu
ZFt0NV0sIHQxCiAgICAgICAgIGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0
MCwgdDEsIDhdLCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0
MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0
MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCkBAIC0yNTUxLDcgKzI1NzYsNiBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCBPcFByb2ZpbGVDb250
cm9sRmxvdywgbWFjcm8gKHNpemUsCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi0KIGxsaW50T3BX
aXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKQEAgLTI1Njcs
NiArMjU5MSwxNDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdl
dFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIGVuZCkKIAogCitsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YShhMiwgdDUp
CisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jf
b3Blbl90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisg
ICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAg
ZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBm
YXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAg
ICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBp
dCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9k
ZTo6R2VuZXJpYywgLml0ZXJhdG9yT3BlbkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVy
YXRvck9wZW5HZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAg
ICAgIGptcCAuZ2V0QnlJZFN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0
KQorICAgICAgICBnZXQobV9zeW1ib2xJdGVyYXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFj
cm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUs
IE9wSXRlcmF0b3JPcGVuLCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNy
byBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0
CisgICAgZW5kCisKKworICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xsaW50X3Ns
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJhdG9yUHJv
ZmlsZSwgbV9pdGVyYXRvciwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0QnlJ
ZENoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhp
c1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldEJ5SWRTdGFydDoK
KyAgICBtYWNybyBzdG9yZU5leHRBbmREaXNwYXRjaCh2YWx1ZSkKKyAgICAgICAgbW92ZSB2YWx1
ZSwgdDIKKyAgICAgICAgZ2V0KG1fbmV4dCwgdDEpCisgICAgICAgIHN0b3JlcSB0MiwgW2Nmciwg
dDEsIDhdCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgIGxvYWRWYXJpYWJsZShn
ZXQsIG1faXRlcmF0b3IsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJhdG9y
T3BlbkdlbmVyaWNHZXROZXh0U2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0
b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVy
aWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoKQorCisu
aXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCisgICAgZGlzcGF0Y2goKQorCitlbmQp
CisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorCisgICAgbG9h
ZFZhcmlhYmxlKGdldCwgbV9uZXh0LCB0MCkKKyAgICBidHFueiB0MCwgdDAsIC5pdGVyYXRvck5l
eHRHZW5lcmljCisgICAgbWV0YWRhdGEoYTIsIHQ1KQorICAgIG1hY3JvIGZhc3ROYXJyb3coKQor
ICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KQorICAg
IGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMTYoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJh
dG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMzIo
KQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKQor
ICAgIGVuZAorICAgIHNpemUoZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwgZmFzdFdpZGUzMiwgbWFj
cm8gKGNhbGxPcCkgY2FsbE9wKCkgZW5kKQorCisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRo
aXMgd2l0aCBpbmxpbmUgYXNzZW1ibHkgc2luY2UgaXQncyB0aGUgImZhc3QiIGNhc2UuCisgICAg
YmJlcSByMSwgY29uc3RleHByIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMsIC5pdGVyYXRvck5leHRH
ZW5lcmljCisgICAgZGlzcGF0Y2goKQorCisuaXRlcmF0b3JOZXh0R2VuZXJpYzoKKyAgICBtYWNy
byBnb3RvR2V0RG9uZUNoZWNrcG9pbnQoKQorICAgICAgICBqbXAgLmdldERvbmVTdGFydAorICAg
IGVuZAorCisgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgZ2V0KG1fbmV4dCwgZHN0
KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0
KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JOZXh0LCBtX3N0YWNrT2Zmc2V0LCBkc3Qp
CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3Qp
CisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKyAgICAjIFVzZSBtX3ZhbHVlIHNsb3Qg
YXMgYSB0bXAgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIHdyaXRlIHRvIGl0IGxhdGVyLgorICAgIGNh
bGxIZWxwZXIob3BfaXRlcmF0b3JfbmV4dCwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0
X2NhbGwsIE9wSXRlcmF0b3JOZXh0LCBtX25leHRSZXN1bHRQcm9maWxlLCBtX3ZhbHVlLCBwcmVw
YXJlRm9yUmVndWxhckNhbGwsIHNpemUsIGdvdG9HZXREb25lQ2hlY2twb2ludCwgbWV0YWRhdGEs
IGdldENhbGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5j
bHVkaW5nVGhpc0NvdW50KQorCisuZ2V0RG9uZVN0YXJ0OgorICAgIG1hY3JvIHN0b3JlRG9uZUFu
ZEptcFRvR2V0VmFsdWUoZG9uZVZhbHVlKQorICAgICAgICAjIHVzZSB0MCBiZWNhdXNlIHBlcmZv
cm1HZXRCeUlESGVscGVyIHVzdWFsbHkgcHV0cyB0aGUgZG9uZVZhbHVlIHRoZXJlIGFuZCBvZmZs
aW5lYXNtIHdpbGwgZWxpZGUgdGhlIHNlbGYgbW92ZS4KKyAgICAgICAgbW92ZSBkb25lVmFsdWUs
IHQwCisgICAgICAgIGdldChtX2RvbmUsIHQxKQorICAgICAgICBzdG9yZXEgdDAsIFtjZnIsIHQx
LCA4XQorICAgICAgICBqbXAgLmdldFZhbHVlU3RhcnQKKyAgICBlbmQKKworCisgICAgbG9hZFZh
cmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0
RG9uZVNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25l
TW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRh
LCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKQorCisuZ2V0RG9uZVNsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAgICBicmFu
Y2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKKyAg
ICBsb2FkVmFyaWFibGUoZ2V0LCBtX2RvbmUsIHQwKQorCisgICAgIyBzdG9yZURvbmVBbmRKbXBU
b0dldFZhbHVlIHB1dHMgdGhlIGRvbmVWYWx1ZSBpbnRvIHQwCisuZ2V0VmFsdWVTdGFydDoKKyAg
ICAjIEJyYW5jaCB0byBzbG93IGlmIG5vdCBtaXNjIHByaW1pdGl2ZS4KKyAgICBidHFueiB0MCwg
fjB4ZiwgLmdldFZhbHVlU2xvdworICAgIGJ0aXogdDAsIDB4MSwgLm5vdERvbmUKKyAgICBkaXNw
YXRjaCgpCisKKy5ub3REb25lOgorICAgIG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRjaCh2KQor
ICAgICAgICBtb3ZlIHYsIHQyCisgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICAgICAgc3Rv
cmVxIHQyLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
dDAsIDB4YmFkZGIwMWUpCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgICMgUmVs
b2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2
ZSBjbG9iYmVyZWQgdDMuCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAg
IyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMgYSBjZWxs
IGhlcmUgc2luY2Ugd2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUuCisgICAgcGVy
Zm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1f
dmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFu
ZERpc3BhdGNoKQorCisuZ2V0VmFsdWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwor
CiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFs
RmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZFZhcmlh
YmxlKGdldCwgbV9iYXNlLCB0MSkKICAgICBnZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxGaWVsZCwg
bV9pbmRleCwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS90cmFuc2Zvcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zv
cm0ucmIKaW5kZXggOGQ3NjcxMTZjMDU0ZTVlYTY2NGVmNDA2MmM1NmYyNjA1ZTBkOGI0NS4uNTg5
YWUwZTBmM2VkMzRiNjYxZTg1NjJiY2EyOTgwMmVjMTBlNWI2MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgpAQCAtNjI5LDcgKzYyOSw3IEBAIGVu
ZAogCiBjbGFzcyBOb2RlCiAgICAgZGVmIHZhbGlkYXRlCi0gICAgICAgIHJhaXNlICJVbnJlc29s
dmVkICN7ZHVtcH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgcmFpc2UgIlVucmVz
b2x2ZWQgJyN7ZHVtcH0nIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCiAgICAgZW5kCiAgICAgCiAg
ICAgZGVmIHZhbGlkYXRlQ2hpbGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGI4ZGU5NjU1ODJmN2Q5MTI3MTMzN2Q1NDMx
OTAzZTgzMThjMjZmNDcuLmRkNWU5MGM0MmM4MmRiZjA2NzFkNTgzMmUxYzNjNmQxMDk2YmY1NDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNTMsOCArMTU0
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBSRVRVUk5fUFJPRklMRUQodmFsdWVfXykg
XAogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyh2YWx1ZV9fLCBQUk9GSUxFX1ZBTFVFKHJldHVy
blZhbHVlX18pKQogCi0jZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAg
ICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisjZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWVfXykg
XAorICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQorCisjZGVmaW5lIFBS
T0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKKyAgICAgICAgYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRo
cm93QXJpdHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKQEAgLTk2NSw2ICs5NjksMTMwIEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9pbl9ieV9pZCkKICAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJh
c2VWYWx1ZSktPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKSkpOwogfQogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRo
PgorU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRh
UHRyKQoreworICAgIC8vIERvbid0IHNldCBQQzsgd2UgY2FuJ3QgdGhyb3cgYW5kIGl0J3MgcmVs
YXRpdmVseSBzbG93LgorICAgIEJFR0lOX05PX1NFVF9QQygpOworCisgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck9wZW4sIHdpZHRoPigpOworICAgIGF1dG8m
IG1ldGFkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck9wZW46Ok1ldGFkYXRhKj4o
bWV0YWRhdGFQdHIpOworICAgIEpTVmFsdWUgaXRlcmFibGUgPSBHRVRfQyhieXRlY29kZS5tX2l0
ZXJhYmxlKS5qc1ZhbHVlKCk7CisgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYWJsZSwgbV9pdGVy
YWJsZVByb2ZpbGUpOworICAgIEpTVmFsdWUgc3ltYm9sSXRlcmF0b3IgPSBHRVRfQyhieXRlY29k
ZS5tX3N5bWJvbEl0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgYXV0byYgaXRlcmF0b3IgPSBHRVQo
Ynl0ZWNvZGUubV9pdGVyYXRvcik7CisKKyAgICBhdXRvIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVy
YXRpb24gPSBbJl0geworICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGJl
Y2F1c2Ugd2UganVzdCBjaGVja2VkIHRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlkLgorICAg
ICAgICBKU0Z1bmN0aW9uKiBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4odm0sIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFzeW1ib2xJdGVy
YXRvckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7
IAorCisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYWxsb2NhdGUgdGhlIHZhbHVlcyBmdW5j
dGlvbiBqdXN0IHRvIGNoZWNrIGlmIGl0J3MgdGhlIHNhbWUgYXMgb3VyIGZ1bmN0aW9uIGF0IHNv
IHdlIHVzZSB0aGUgY29uY3VycmVudCBhY2Nlc3Nvci4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
b25seSB3b3JrcyBmb3IgYXJyYXlzIGZyb20gdGhlIHNhbWUgZ2xvYmFsIG9iamVjdCBhcyBvdXJz
ZWx2ZXMgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHN1cHBvcnQgYW55IHBhaXJpbmcuCisgICAg
ICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNvbmN1cnJlbnRs
eSgpICE9IHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uTW9kZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBXZSBzaG91bGQgYmUgZ29vZCB0byBnby4K
KyAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJh
eTsKKyAgICAgICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkgPSBKU1ZhbHVlKCk7CisgICAgICAgIGF1
dG8qIGl0ZXJhdGVkT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oaXRlcmFibGUpOworICAgICAg
ICB7CisgICAgICAgICAgICBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaXRlcmF0ZWRPYmplY3QsIEl0
ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CisgICAgICAgIH0KKyAgICAgICAgUFJPRklMRV9WQUxVRV9J
TihpdGVyYXRvci5qc1ZhbHVlKCksIG1faXRlcmF0b3JQcm9maWxlKTsKKyAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAgICB9OworCisgICAgaWYgKGl0ZXJhYmxlLmlu
aGVyaXRzPEpTQXJyYXk+KHZtKSkgeworICAgICAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0
ZXJhdGlvbigpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkKKyAgICAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6
OkZhc3RBcnJheSkpOworICAgIH0KKworICAgIC8vIFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8g
dHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNl
ZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0
aW9uTW9kZTo6R2VuZXJpYzsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0
dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7
CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8TmFycm93PihjYWxsRnJhbWUsIHBj
LCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3Q8V2lkZTE2PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Ns
b3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRh
dGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Q8V2lkZTMyPihjYWxs
RnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK3RlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+
CitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3QoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQ
dHIpCit7CisgICAgQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXNLbm93bldp
ZHRoPE9wSXRlcmF0b3JOZXh0LCB3aWR0aD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9ICpyZWlu
dGVycHJldF9jYXN0PE9wSXRlcmF0b3JOZXh0OjpNZXRhZGF0YSo+KG1ldGFkYXRhUHRyKTsKKwor
ICAgIEFTU0VSVCghR0VUKGJ5dGVjb2RlLm1fbmV4dCkuanNWYWx1ZSgpKTsKKyAgICBKU09iamVj
dCogaXRlcmF0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihHRVQoYnl0ZWNvZGUubV9pdGVyYXRvciku
anNWYWx1ZSgpKTs7CisgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJh
YmxlKS5qc1ZhbHVlKCkuYXNDZWxsKCk7CisgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpz
RHluYW1pY0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgeworICAgICAgICBp
ZiAoYXV0byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJ
RChhcnJheS0+c3RydWN0dXJlSUQoKSk7CisKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0
aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVu
TW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAgICAgICAgICBhdXRvJiBpbmRl
eFNsb3QgPSBhcnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6Rmll
bGQ6OkluZGV4KTsKKyAgICAgICAgICAgIGludDY0X3QgaW5kZXggPSBpbmRleFNsb3QuZ2V0KCku
YXNBbnlJbnQoKTsKKyAgICAgICAgICAgIEFTU0VSVCgwIDw9IGluZGV4ICYmIGluZGV4IDw9IG1h
eFNhZmVJbnRlZ2VyKCkpOworCisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICAg
ICAgYm9vbCBkb25lID0gaW5kZXggPT0gLTEgfHwgaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpOwor
ICAgICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fZG9uZSkgPSBqc0Jvb2xlYW4oZG9uZSk7CisgICAg
ICAgICAgICBpZiAoIWRvbmUpIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBhIGJh
cnJpZXIgaGVyZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAgICAg
ICAgICAgICBpbmRleFNsb3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCAr
IDEpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluZGV4KSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgICAg
ICBDSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZh
bHVlLCBtX3ZhbHVlUHJvZmlsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIE5vIG5lZWQgZm9yIGEgYmFycmllciBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGlzIGlz
IGEgcHJpbWl0aXZlLgorICAgICAgICAgICAgICAgIGluZGV4U2xvdC5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdFVChi
eXRlY29kZS5tX3ZhbHVlKSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKwor
ICAgIC8vIFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KKyAg
ICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRl
cmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKyAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25N
b2RlOjpHZW5lcmljKSk7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0
b3JfbmV4dF90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3Q8TmFycm93PihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Ns
b3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRh
dGFQdHIpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTE2PihjYWxs
RnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7Cit9CisKK1Nsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BB
VEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGFQdHIpCit7CisgICAgcmV0dXJuIGl0
ZXJhdG9yX25leHRfdHJ5X2Zhc3Q8V2lkZTMyPihjYWxsRnJhbWUsIHBjLCBtZXRhZGF0YVB0cik7
Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIEJFR0lO
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CmluZGV4IGI3MTM1ZTJiNzg0YWI2OGRiNWY1NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjdhYjA4YTJm
YWQ2OWE0YjBkNDU5MjM3NzkzNzVkY2Q4YjJlZTBhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDYsNiArMjQ2LDggQEAgU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfaW5fYnlfaWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9pbl9ieV92YWwpOworLy8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX29wZW5fdHJ5
X2Zhc3QpOworLy8gU0xPV19QQVRIX0hJRERFTl9ERUNMKGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Qp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfc3RyY2F0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfdG9fcHJpbWl0aXZlKTsKQEAgLTI4Myw2ICsyODUsMTggQEAgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfc3ByZWFkKTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0
ZXJuIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3Jfb3Blbl90cnlfZmFzdChD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X25hcnJvdyhDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRh
KTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVu
X3RyeV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQq
IG1ldGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMsIHZvaWQqIG1ldGFkYXRhKTsKKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorZXh0ZXJu
IFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggaXRlcmF0b3JfbmV4dF90cnlfZmFzdChDYWxs
RnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsKK2V4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25h
cnJvdyhDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhKTsK
K2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0X3dpZGUxNihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1l
dGFkYXRhKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogcGMs
IHZvaWQqIG1ldGFkYXRhKTsKKwogdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0
dXJuVHlwZShTTE9XX1BBVEggKikoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmNwcAppbmRleCAyZTFiNWYyOTZlMzMyMDNlOTg0ZmU5NjdhNzgxMTE4YjBkNjk2MWM5Li5l
NGU1NzdmZmE1MmQ3NjUyOTlhMzM2NmY5NGQxYTZiYjRhYjRiOGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTM0MCw2ICszNDAsMjQgQEAgY29u
c3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvcklu
dHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQoreworICAgIHN3aXRjaCAoaW50cmluc2ljKSB7
CisgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICBjYXNlIFR5cGVkQXJyYXlWYWx1
ZXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7CisgICAg
Y2FzZSBBcnJheUtleXNJbnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5S2V5c0ludHJpbnNp
YzoKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OktleXM7CisgICAgY2FzZSBBcnJheUVu
dHJpZXNJbnRyaW5zaWM6CisgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuaAppbmRleCAzM2VjYWJjODFmYzgxODQwYjRkZjdhNjk2NjJkYjEzZjU2NjJjYjlkLi4xMTlj
MDRmYjQyZjNmMGNlMzI5OTkwNmQyN2JmNGJjZWE5MDc5ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtMTkyLDYgKzE5Miw4IEBAIGVudW0gSW50cmlu
c2ljIDogdWludDhfdCB7CiAgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAorT3B0aW9uYWw8
SXRlcmF0aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKKwog
Y29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgK
aW5kZXggYWZkOWViMmU1ZDY2Yjg1M2EwYzc3MDQyYWNhZTQ5OWQwNjczZjE4Zi4uYmNmZDMxYjNk
NmNmM2EwOTI0Y2RlMzdlZGIxZDQ1ODhhNGUzOGRmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHB1Ymxp
YzoKICAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9
CiAKICAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBK
U09iamVjdCogaXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CisgICAgc3RhdGljIEpTQXJy
YXlJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0
KiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGtpbmQpKSk7CisgICAgfQogICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0
b3IqIGNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQy
YzUzNzc3Y2NkZWM1ZmNkNGRiODEwZDE4NTRmYTYwYzlmNDgxZWQuLmQzMDJiMTg2NTNlMzg0OTc4
OTJiNjA1ZmExMjhhOTljMGY5NGYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKQEAgLTIyNSw2ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gUXVlcnlp
bmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0
aW9uKFZNJikgY29uc3Q7CisgICAgYm9vbCBpc0NhbGxhYmxlKFZNJikgY29uc3Q7CiAgICAgYm9v
bCBpc0NhbGxhYmxlKFZNJiwgQ2FsbFR5cGUmLCBDYWxsRGF0YSYpIGNvbnN0OwogICAgIGJvb2wg
aXNDb25zdHJ1Y3RvcihWTSYpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYsIENv
bnN0cnVjdFR5cGUmLCBDb25zdHJ1Y3REYXRhJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZTY1
NzhhZWVmZjY5YzFjZmRiZWJlYWJhZDgwYWY3Li42MmY5ZDI0ZjE1ZDA3MjQ1YWQ3NzZjNDg3OWQy
MDdmMTU1N2NhYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKQEAgLTgyNyw2ICs4MjcsMTMgQEAgaW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNGdW5jdGlvbihWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGFzQ2VsbCgpLT5pc0Z1bmN0
aW9uKHZtKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNv
bnN0Cit7CisgICAgQ2FsbFR5cGUgdW51c2VkVHlwZTsKKyAgICBDYWxsRGF0YSB1bnVzZWREYXRh
OworICAgIHJldHVybiBpc0NhbGxhYmxlKHZtLCB1bnVzZWRUeXBlLCB1bnVzZWREYXRhKTsKK30K
KwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0sIENhbGxUeXBlJiBjYWxs
VHlwZSwgQ2FsbERhdGEmIGNhbGxEYXRhKSBjb25zdAogewogICAgIGlmICghaXNDZWxsKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGU4YjIzY2U1OTlkMzYyZGM2
NWYzM2Y4ZWYyM2FkOGY1ZDZkOTcxMWIuLmIyNTAzNTY5Yzg0MjI1NjAxMTQxYTgwY2Y1OTg0OGY1
ZDY3M2I3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Fz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC02MCwx
MyArNjAsMTMgQEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAvLyBTcGVjaWZpYyB0
eXBlIG92ZXJsb2Fkcy4KICNkZWZpbmUgRk9SX0VBQ0hfSlNfRFlOQU1JQ19DQVNUX0pTX1RZUEVf
T1ZFUkxPQUQobWFjcm8pIFwKICAgICBtYWNybyhKU0ltbXV0YWJsZUJ1dHRlcmZseSwgSlNUeXBl
OjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUsIEpTVHlwZTo6SlNJbW11dGFibGVCdXR0ZXJmbHlU
eXBlKSBcCi0gICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJyYXlJdGVyYXRv
clR5cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTU3RyaW5n
SXRlcmF0b3IsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJ
dGVyYXRvclR5cGUpIFwKICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0
T2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxPYmpl
Y3RUeXBlLCBKU1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb24s
IEpTVHlwZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKICAgICBt
YWNybyhJbnRlcm5hbEZ1bmN0aW9uLCBKU1R5cGU6OkludGVybmFsRnVuY3Rpb25UeXBlLCBKU1R5
cGU6OkludGVybmFsRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwgSlNUeXBlOjpB
cnJheVR5cGUsIEpTVHlwZTo6RGVyaXZlZEFycmF5VHlwZSkgXAorICAgIG1hY3JvKEpTQXJyYXlJ
dGVyYXRvciwgSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTQXJyYXlJdGVy
YXRvclR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBKU1R5cGU6OkFycmF5QnVmZmVy
VHlwZSwgSlNUeXBlOjpBcnJheUJ1ZmZlclR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVy
VmlldywgRmlyc3RUeXBlZEFycmF5VHlwZSwgTGFzdFR5cGVkQXJyYXlUeXBlKSBcCiAgICAgbWFj
cm8oSlNQcm9taXNlLCBKU1R5cGU6OkpTUHJvbWlzZVR5cGUsIEpTVHlwZTo6SlNQcm9taXNlVHlw
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggMGUxODk2MGU0ODFhMzI0YWRjMjU2OGVmZGJiMjRjZWFmMTRhMGYzNy4uZjk1M2Y3Nzhi
MzE5YmMyMTYyZjI4MGQ2ODA2NGU4MmU1MDRmZDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02MTUsNiArNjE1LDcgQEAgcHVibGlj
OgogICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdDsKICAgICBK
U0Z1bmN0aW9uKiBhcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiog
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFs
dWVzRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CisgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uQ29uY3VycmVudGx5KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb24uZ2V0Q29uY3VycmVudGx5KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0
aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGMyOGJmYzM0YmZl
ODBmNzYzNGE0MGUxZjM4ZDAyOTdiNmE3MGQ3MWUuLmJkZmJmNGM3ZTFjOTk4MTk4ODlhODdhMDg0
YWY1MTcxZTcxZDg1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaApAQCAtMTE5LDYgKzExOSw4IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbkxv
Z1NpemUsIDEwMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoVW5zaWduZWQsIHNoYWRvd0No
aWNrZW5NYXhUYWlsRGVsZXRlZEZyYW1lc1NpemUsIDEyOCwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgXAorICAgIHYoQm9vbCwgdXNlSXRlcmF0aW9uSW50cmluc2ljcywgdHJ1ZSwgTm9ybWFsLCBu
dWxscHRyKSBcCisgICAgXAogICAgIHYoQm9vbCwgdXNlT1NMb2csIGZhbHNlLCBOb3JtYWwsICJM
b2cgZGF0YUxvZygpcyB0byBvc19sb2cgaW5zdGVhZCBvZiBzdGRlcnIiKSBcCiAgICAgLyogZHVt
cERpc2Fzc2VtYmx5IGltcGxpZXMgZHVtcERGR0Rpc2Fzc2VtYmx5LiAqLyBcCiAgICAgdihCb29s
LCBkdW1wRGlzYXNzZW1ibHksIGZhbHNlLCBOb3JtYWwsICJkdW1wcyBkaXNhc3NlbWJseSBvZiBh
bGwgSklUIGNvbXBpbGVkIGNvZGUgdXBvbiBjb21waWxhdGlvbiIpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDc2NGFkMDY1YWMwMTFlMzNjMzIz
OGNkOWRhOTUzOWMxNTgzOTIzZTUuLjljMmNlN2FmYWU2ZTM4ZTdhNjA4MDI2ZjUxNzcxMTBlM2M4
NTU2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApA
QCAtMTI2OCw2ICsxMjY4LDggQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBJbkNvbnRleHQoUHJpbnRT
dHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB2b2lkIFN0cnVjdHVyZTo6
ZHVtcEJyaWVmKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IENTdHJpbmcmIHN0cmluZykgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoIiUiLCBzdHJpbmcsICI6IiwgY2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSk7CisgICAgaWYgKGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spCisgICAgICAg
IG91dC5wcmludCgiLCIsIEluZGV4aW5nVHlwZUR1bXAoaW5kZXhpbmdUeXBlKCkpKTsKIH0KIAog
dm9pZCBTdHJ1Y3R1cmU6OmR1bXBDb250ZXh0SGVhZGVyKFByaW50U3RyZWFtJiBvdXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oIGIvU291
cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAppbmRleCAzNTdiYTJmYTJm
NzkyOWE2YTk5OGE5YTRlZjE0ZDJiZTU3NTQ2MzcxLi41NmFiYzRiNTNlYzlmYWI2MDc1YmY2ZDJl
YmJiZWQxZjMzY2RmOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NPcGVy
YXRvck92ZXJsb2Fkcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3Zl
cmxvYWRzLmgKQEAgLTU5LDMgKzU5LDkgQEAKIAogI2RlZmluZSBPVkVSTE9BRF9SRUxBVElPTkFM
X09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVHUkFMUyhlbnVtTmFtZSkgT1ZFUkxP
QURfUkVMQVRJT05BTF9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgc3Rk
Ojppc19pbnRlZ3JhbF92PFQ+KQogCisjZGVmaW5lIE9WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JT
X0ZPUl9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBP
VkVSTE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCB8LCBlbmFibGVF
eHByZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihl
bnVtTmFtZSwgJiwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZP
Ul9FTlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIF4sIGVuYWJsZUV4cHJlc3Npb24pIFwKKworI2Rl
ZmluZSBPVkVSTE9BRF9CSVRXSVNFX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVS
R1JBTFMoZW51bU5hbWUpIE9WRVJMT0FEX0JJVFdJU0VfT1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNT
X1dIRU4oZW51bU5hbWUsIHN0ZDo6aXNfaW50ZWdyYWxfdjxUPikKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTQyY2JlYmQ5Y2FmODI0OTFj
NDljMTUzZmU0MjZhMTM4OTg0MzFlYy4uMjQ2ZTk5NDIwZTFiYTViY2U0OWRmMDY0NDNiZmE4NzM2
NDI3MmZjYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMjAtMDQtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBp
dGVyYXRpb24gZm9yIEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4K
KworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVz
LmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5q
czoKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKGl0ZXIucmV0dXJuKToKKyAgICAgICAgKGl0
ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlRXJy
b3JUZXN0UmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlQnJlYWtUZXN0UmV0dXJu
KToKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChhcnJheS5TeW1ib2wuaXRlcmF0b3IuX19w
cm90b19fLm5leHQpOgorICAgICAgICAqIHN0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFsdWVz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
Y29udGFpbmluZy1mb3Itb2Ytb24tbWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpbmQpOgorICAg
ICAgICAoaS5sZXQudi5vZi5maW5kKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWNvbnRh
aW5pbmctZm9yLW9mLW9uLXNldC5qczogQWRkZWQuCisgICAgICAgIChmaW5kKToKKyAgICAgICAg
KHNldCBhZGQpOgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9uZS1nZXR0ZXIu
anM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IGRvbmUp
OgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJs
ZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAg
ICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qczogQWRkZWQuCisg
ICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0LnJldHVybi5nZXQgdmFsdWUpOgorICAgICAgICAo
aS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKiBzdHJl
c3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9s
Lml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChp
LmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3It
b2YtaGVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAg
ICAgICAoaS5sZXQuaXRlcmFibGUuZ2V0IGRvbmUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
U3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAg
ICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1v
Zi1oZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQuaXRl
cmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90aHJv
dy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAg
KGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuZ2V0IHZhbHVl
KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChp
LmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisKKzIwMjAtMDQtMTUg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkZXNp
Z24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJl
c3MvY3VzdG9tLWl0ZXJhdG9ycy5qczoKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKGl0ZXIu
cmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0KToKKyAgICAgICAg
KGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKToKKyAgICAgICAgKGl0ZXJhdG9ySW50
ZXJmYWNlQnJlYWtUZXN0UmV0dXJuKToKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWFycmF5LW1p
eGVkLXZhbHVlcy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mv
Z2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qczogQWRkZWQuCisgICAgICAgIChm
aW5kKToKKyAgICAgICAgKGkubGV0LnYub2YuZmluZCk6CisgICAgICAgICogc3RyZXNzL2dlbmVy
YXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanM6IEFkZGVkLgorICAgICAgICAoZmluZCk6
CisgICAgICAgIChzZXQgYWRkKToKKyAgICAgICAgKiBzdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRv
bmUtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQucmV0dXJu
LmdldCBkb25lKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5s
ZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJl
dHVybik6CisgICAgICAgICogc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanM6
IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dC5yZXR1cm4uZ2V0IHZhbHVlKToK
KyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
U3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAg
ICAgICogc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVjdC5qczogQWRk
ZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJh
YmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgor
ICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tZG9uZS1nZXR0
ZXItaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLmdldCBkb25lKToKKyAgICAgICAgKGkubGV0
Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1
cm4pOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tbmV4
dC1pbi1mb3Itb2YtaGVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5l
eHQpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAg
KGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAgICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBz
dHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQu
CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxl
LmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgor
ICAgICAgICAoaS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorCiAy
MDIwLTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3IvSlNTZXRJdGVyYXRvciB3aXRoIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zv
ci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9m
b3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzLmpzCmluZGV4IDU1ZWNjMGJmY2Y5MTljYWNhZTdm
ZDE1ZGRiNDBiMTRmZGNhOTRlZGEuLjIwMTJiOTEyODUwZjU4MTE2N2ZiZDMxMDUwNTliNzZkNzY2
M2I2ZDggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRl
LWFycmF5LWVudHJpZXMuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0
ZXJhdGUtYXJyYXktZW50cmllcy5qcwpAQCAtMywxMCArMywxMiBAQCBmdW5jdGlvbiBmb28oKSB7
CiAgICAgdmFyIGFycmF5ID0gW107CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTAwMDsgaSsr
KQogICAgICAgICBhcnJheS5wdXNoKGkpOwotICAgIAorCiAgICAgdmFyIHJlc3VsdCA9IDA7Ci0g
ICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGFycmF5LmVudHJpZXMoKSkKKyAgICBmb3IgKHZh
ciBba2V5LCB2YWx1ZV0gb2YgYXJyYXkuZW50cmllcygpKSB7CisgICAgICAgIHByaW50KGtleSAr
ICIgIiArICR2bS5pbmRleGluZ01vZGUoYXJyYXkpKTsKICAgICAgICAgcmVzdWx0ICs9IGtleSAr
IHZhbHVlICsgYXJyYXlba2V5XTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCmluZGV4IGZkNjQxM2ZlM2I1ZTkwM2FmZmUzODAz
ZmQwMDRjMGNiMWYxYzY0ZjMuLmQzZDFiZDdlODU4ZTg3NGZiZDExM2Q4MmY5MjExZWE0YmQ1ZWY3
YjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKKysrIGIv
SlNUZXN0cy9zdHJlc3MvY3VzdG9tLWl0ZXJhdG9ycy5qcwpAQCAtMjIsNyArMjIsNyBAQCBmb3Ig
KHZhciB2YWx1ZSBvZiBpdGVyKSB7CiAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAi
ICsgdmFsdWU7CiB9CiBpZiAocmV0dXJuQ2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJu
IGlzIGNhbGxlZC4iOworICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsK
IAogCiAKQEAgLTUzLDcgKzUzLDcgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAg
aWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRlcmF0aW9uLiIpCi0gICAgICAg
IHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7
CiB9CiBpZiAoIXJldHVybkNhbGxlZCkKICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3Qg
Y2FsbGVkLiI7CkBAIC0xMDgsMTAgKzEwOCwxMCBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUp
IHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IGxvb2tpbmcgdXAgbmV4dC4iKQotICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJv
dyBlOwogfQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBj
YWxsZWQuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAog
CkBAIC0xMzYsNyArMTM2LDcgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYg
KFN0cmluZyhlKSAhPT0gIkVycm9yOiBsb29raW5nIHVwIHJldHVybi4iKQotICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQog
CiAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAg
IGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogbmV4dCBpcyBjYWxsZWQuIikKLSAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0K
IGlmIChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7
CisgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtMTgz
LDcgKzE4Myw3IEBAIHZhciBpdGVyID0gewogICAgIH0sCiAgICAgcmV0dXJuOiBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7Ci0gICAgICAgIHRocm93ICJFcnJvcjog
cmV0dXJuIGlzIGNhbGxlZC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMg
Y2FsbGVkIik7CiAgICAgfQogfTsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIHRyeSB7CiAgICAgfQog
fSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0
ZXJhdGlvbi4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBl
OworICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhyb3cgIkVy
cm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZhciBpdGVy
ID0gewogICAgIH0sCiAgICAgcmV0dXJuOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHJldHVybkNh
bGxlZCA9IHRydWU7Ci0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOwor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAgICAgfQogfTsK
IHRyeSB7CkBAIC0yMTgsOCArMjE4LDggQEAgdHJ5IHsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
fSBjYXRjaCAoZSkgewotICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogcmV0dXJuIGlzIGNh
bGxlZC4iKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOwor
ICAgIGlmIChTdHJpbmcoZSkgIT09ICJFcnJvcjogcmV0dXJuIHdhcyBjYWxsZWQiKQorICAgICAg
ICB0aHJvdyBlOwogfQogaWYgKCFyZXR1cm5DYWxsZWQpCiAgICAgdGhyb3cgIkVycm9yOiByZXR1
cm4gaXMgbm90IGNhbGxlZC4iOwpAQCAtMjU1LDEwICsyNTUsMTAgQEAgZnVuY3Rpb24gaXRlcmF0
b3JJbnRlcmZhY2VFcnJvclRlc3Qobm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAg
IH0gY2F0Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIlR5cGVFcnJvcjogSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCi0gICAgICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICAgICAgdGhyb3cg
ZTsKICAgICB9CiAgICAgaWYgKHJldHVybkNhbGxlZCkKLSAgICAgICAgdGhyb3cgIkVycm9yOiBy
ZXR1cm4gaXMgY2FsbGVkLiI7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigicmV0dXJuIHdhcyBj
YWxsZWQiKTsKIH0KIAogZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VFcnJvclRlc3RSZXR1cm4o
bm90SXRlcmF0b3JSZXN1bHQpIHsKQEAgLTI4Miw3ICsyODIsNyBAQCBmdW5jdGlvbiBpdGVyYXRv
ckludGVyZmFjZUVycm9yVGVzdFJldHVybihub3RJdGVyYXRvclJlc3VsdCkgewogICAgICAgICB9
CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRl
cm1pbmF0ZSBpdGVyYXRpb24uIikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9y
IHRocm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAoIXJl
dHVybkNhbGxlZCkKICAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4i
OwpAQCAtMzEzLDcgKzMxMyw3IEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlQnJlYWtUZXN0
UmV0dXJuKG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7
CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBp
bnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQogICAg
IGlmICghcmV0dXJuQ2FsbGVkKQogICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBub3Qg
Y2FsbGVkLiI7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVy
ZW50LWdsb2JhbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWds
b2JhbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3N2NmODhhYjYwMmNlNGQzODdiNzFkY2NmYmYxZGFmMjBm
OGUyZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZm
ZXJlbnQtZ2xvYmFscy5qcwpAQCAtMCwwICsxLDIyIEBACitsZXQgY291bnQgPSAwOworCitmdW5j
dGlvbiBmb28oYXJyYXkpIHsKKyAgICBmb3IgKGxldCB2IG9mIGFycmF5KQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBvdGhlckdsb2JhbCA9IGNy
ZWF0ZUdsb2JhbE9iamVjdCgpOworbGV0IGFycmF5ID0gb3RoZXJHbG9iYWwuQXJyYXkoKTsKK2Fy
cmF5W1N5bWJvbC5pdGVyYXRvcl0oKS5fX3Byb3RvX18ubmV4dCA9IGZ1bmN0aW9uICgpIHsKKyAg
ICBjb3VudCsrOworICAgIHJldHVybiB7IGRvbmU6IHRydWUgfTsKK30KK2FycmF5WzBdID0gMTsK
KworY29uc3QgaXRlckNvdW50ID0gMWU1OworZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyQ291bnQ7
ICsraSkKKyAgICBmb28oYXJyYXkpOworCitpZiAoaXRlckNvdW50ICE9PSBjb3VudCkKKyAgICB0
aHJvdyBuZXcgRXJyb3IoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJh
eS1taXhlZC12YWx1ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFs
dWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI0OThhNjA0MzNkZjJkYzE3NTNhOWQ3Yjg4Yjk2YmQzMjQwMDZm
ODEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQt
dmFsdWVzLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIHRlc3QoYXJyYXkpIHsKKyAgICBs
ZXQgc3VtID0gMDsKKyAgICBmb3IgKGxldCB2IG9mIGFycmF5KSB7CisgICAgICAgIGlmICh0eXBl
b2YgdiA9PT0gIm51bWJlciIpCisgICAgICAgICAgICBzdW0gKz0gdjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIHN1bTsKKyAgICB9Cit9Citub0lubGluZSh0ZXN0KTsKKworbGV0
IGFycmF5ID0gWzEsMiwzLDQsInN0cmluZyJdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsr
aSkgeworICAgIGlmICh0ZXN0KGFycmF5KSAhPT0gMTApCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworfQorCisKK2FycmF5ID0gWzEsMiwzLDQse31dCitmb3IgKGxldCBpID0gMDsgaSA8IDFl
NTsgKytpKSB7CisgICAgaWYgKHRlc3QoYXJyYXkpICE9PSAxMCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFp
bmluZy1mb3Itb2Ytb24tbWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5p
bmctZm9yLW9mLW9uLW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzhiN2VlODE0MjRhMmQyZjUzOGNlN2Iy
MDU5ZDhkNmU0NThlNGJhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLW1hcC5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlv
biAqZmluZChub2RlcywgcCkKK3sKKyAgICBmb3IgKGxldCBbYXJyYXldIG9mIG5vZGVzKSB7Cisg
ICAgICAgIGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9JbmxpbmUoZmluZCk7CisK
K2xldCBtYXAgPSBuZXcgTWFwKCk7Citub0lubGluZShtYXBbU3ltYm9sLml0ZXJhdG9yXSgpLm5l
eHQpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBtYXAuc2V0KFsxLDIsNCw1
LDVdLCB7fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmb3IgKGxl
dCB2IG9mIGZpbmQobWFwLCBpICUgMikpIHsgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWNvbnRhaW5pbmctZm9yLW9mLW9uLXNldC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJmMzI3
MzkwZDczNzVhMjIwMmFlNTlhMTEyNDY1Njk4Y2I2ZWFiNgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMKQEAgLTAs
MCArMSwyMyBAQAorZnVuY3Rpb24gKmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgYXJy
YXkgb2Ygbm9kZXMpIHsKKyAgICAgICAgaWYgKCFhcnJheS5maW5kKCh2KSA9PiB2ID09PSBwKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB5aWVsZCBhcnJheTsKKyAgICB9Cit9Citu
b0lubGluZShmaW5kKTsKKworbGV0IHNldCA9IG5ldyBTZXQoKTsKK25vSW5saW5lKHNldFtTeW1i
b2wuaXRlcmF0b3JdKCkubmV4dCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKQorICAg
IHNldC5hZGQoWzEsMiw0LDUsNV0sIHt9KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsr
aSkgeworICAgIGZvciAobGV0IHYgb2YgZmluZChzZXQsIGkgJSAyKSkgeworICAgICAgICBpZiAo
aSAlIDIgIT09IDEpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vIHJlc3VsdCBzaG91
bGQgaGF2ZSBiZWVuIHByb2R1Y2VkIGhlcmUiKTsKKyAgICAgICAgaWYgKCEodiBpbnN0YW5jZW9m
IEFycmF5KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigicmVzdWx0IHdhcyBub3QgYW4g
YXJyYXkiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1m
b3Itb2YtZG9uZS1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtZG9u
ZS1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI0YzQ5YzkzYjI5ZmNiMGY3MTBjNmM4MmQxZmQ4ODAw
MWEyMmUyNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1v
Zi1kb25lLWdldHRlci5qcwpAQCAtMCwwICsxLDIzIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFl
NTsgKytpKSB7CisgICAgbGV0IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJs
ZSA9IHsKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICAgICAgZ2V0IGRvbmUoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbmFsVGllcigp
KQorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VPU1IoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9LAorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAg
ICAgICAgcmV0dXJuKCkgeyByZXR1cm5DYWxsZWQgPSB0cnVlOyB9LAorICAgIH07CisgICAgdHJ5
IHsKKyAgICAgICAgZm9yIChfIG9mIGl0ZXJhYmxlKSB7IH0KKyAgICB9IGNhdGNoIHsKKyAgICB9
CisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2YtdmFsdWUtZ2V0dGVyLmpz
IGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NzA5NmVlMDNlMTUyNTczYWVkYzY0ZDA0MzlmYjJiZjIyYzY0MTViCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcwpA
QCAtMCwwICsxLDIxIEBACitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgbGV0
IHJldHVybkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBpdGVyYWJsZSA9IHsKKyAgICAgICAgZG9u
ZTogMCwKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICAgICAgZG9uZTogdGhpcy5kb25lKyssCisgICAgICAgICAgICAgICAgZ2V0IHZhbHVlKCkgeyBp
ZiAoaXNGaW5hbFRpZXIoKSkgRm9yY2VPU1IoKTsgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAg
ICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7
CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQor
ICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2Jq
ZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0dXJucy1ub24tb2Jq
ZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyYmQzMmFkZDdjYzNiYTM0MzI1NGRhNzEwOGU1MTlmZjc1YjMy
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1y
ZXR1cm5zLW5vbi1vYmplY3QuanMKQEAgLTAsMCArMSwxNiBAQAorZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTU7ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRl
cmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7IHJldHVybiAxOyB9LAorICAgICAgICBbU3ltYm9s
Lml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsgcmV0dXJu
Q2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBvZiBp
dGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPSAiVHlwZUVy
cm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikKKyAgICAg
ICAgICAgIHRocm93IGU7CisgICAgfQorICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJv
bS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ct
ZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YTE0MmM4
YTZjNTRmNDc2ZWMwMzlhMTRlOWUyZDNlN2I5NmRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy90aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanMKQEAg
LTAsMCArMSwyNCBAQAorZm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQg
ZXJyb3I7CisgICAgbGV0IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAg
ICAgIG5leHQoKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBnZXQgZG9uZSgpIHsKKyAgICAg
ICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgIH0sCisgICAgICAgIFtT
eW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgcmV0dXJuKCkgewor
ICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAg
dHJ5IHsKKyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisg
ICAgICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGhy
b3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1m
cm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjE5NGZkN2NhNWFjNTlh
ZDY5NjE5NDJmODYyN2I2MGE1YWEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdGhyb3ctZnJvbS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKQEAgLTAsMCArMSwyNCBAQAor
Zm9yIChsZXQgaSA9IDA7IGkgPD0gMWU1OyArK2kpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgbGV0
IHJldHVybkNhbGxlZDsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5leHQoKSB7Cisg
ICAgICAgICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAg
ICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigp
IHsKKyAgICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Owor
ICAgIG5vSW5saW5lKGl0ZXJhYmxlLm5leHQpOworICAgIHRyeSB7CisgICAgICAgIGZvciAoXyBv
ZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcm9ycigpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAg
ICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWlu
LWZvci1vZi1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRl
ci1pbi1mb3Itb2YtaGVhZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwODc4ODM1OGU0ZWQzMDYxMmFjYzZm
MmVmM2EzMGQ4ZDU2NjY3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90aHJv
dy1mcm9tLXZhbHVlLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjcgQEAK
K2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxl
dCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIG5l
eHQoKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICBkb25lOiBmYWxzZSwKKyAgICAgICAgZ2V0
IHZhbHVlKCkgeworICAgICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAg
ICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAg
ICB9CisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKGEgb2YgaXRlcmFibGUpIHsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgICAg
IH0KKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAg
ICAgIHRocm93IGU7CisgICAgfQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396863</attachid>
            <date>2020-04-18 14:34:33 -0700</date>
            <delta_ts>2020-04-19 08:17:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175454-20200418143432.patch</filename>
            <type>text/plain</type>
            <size>410362</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDI5MTBmMjUzY2UyYzRkYjQwNzUwZWJiZjFkYTIyYjZmNGY2YmM3Li4zNjVhYjY0MDg1N2YwZGNl
MTVkMGY3NTUwMWZiNjBkNTA1ZDhkNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMjAtMDQtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkZXNpZ24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsbyBhbmQgU2FhbSBCYXJh
dGkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyaW5zaWNzIGZvci1vZiBpdGVyYXRpb24gZm9y
IEpTQXJyYXlzIHdoZW4gdGhleSBhcmUKKyAgICAgICAgYmVpbmcgaXRlcmF0ZWQgd2l0aCB0aGUg
YnVpbHQtaW4gU3ltYm9sLml0ZXJhdG9yLiBXZSBkbyB0aGlzIGJ5CisgICAgICAgIGFkZGluZyB0
d28gbmV3IGJ5dGVjb2RlcyBvcF9pdGVyYXRvcl9vcGVuIGFuZAorICAgICAgICBvcF9pdGVyYXRv
cl9uZXh0LiBUaGVzZSBieXRlY29kZXMgYXJlIGVzc2VudGlhbGx5IGEgZnVzZWQgc2V0IG9mCisg
ICAgICAgIGV4aXN0aW5nIGJ5dGVjb2RlcyB3aXRoIGEgc3BlY2lhbCBjYXNlIGZvciBvdXIgaW50
cmluc2ljZWQgSlNBcnJheQorICAgICAgICBjYXNlLiBUaGlzIHBhdGNoIG9ubHkgYWRkcyBzdXBw
b3J0IGZvciB0aGVzZSBpbnN0cnVjdGlvbnMgb24KKyAgICAgICAgNjQtYml0LgorCisKKyAgICAg
ICAgVGhlIG9wX2l0ZXJhdG9yX29wZW4gYnl0ZWNvZGUgaXMgc2VtYW50aWNhbGx5IHRoZSBzYW1l
IGFzOgorICAgICAgICBpdGVyYXRvciA9IHN5bWJvbEl0ZXJhdG9yLkBjYWxsKGl0ZXJhYmxlKTsK
KyAgICAgICAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7CisKKyAgICAgICAgd2hlcmUgaXRlcmFibGUg
aXMgdGhlIHJocyBvZiB0aGUgZm9yLW9mIGFuZCBzeW1ib2xJdGVyYXRvciBpcyB0aGUKKyAgICAg
ICAgcmVzdWx0IG9mIHJ1bm5pbmcgaXRlcmFibGUuc3ltYm9sSXRlcmF0b3I7CisKKworICAgICAg
ICBUaGUgb3BfaXRlcmF0b3JfbmV4dCBieXRlY29kZSBpcyBzZW1hbnRpY2FsbHkgdGhlIHNhbWUg
YXM6CisgICAgICAgIG5leHRSZXN1bHQgPSBuZXh0LkBjYWxsKGl0ZXJhdG9yKTsKKyAgICAgICAg
ZG9uZSA9IG5leHRSZXN1bHQuZG9uZTsKKyAgICAgICAgdmFsdWUgPSBkb25lID8gKHVuZGVmaW5l
ZCAvIGJvdHRvbSkgOiBuZXh0UmVzdWx0LnZhbHVlOworCisgICAgICAgIHdoZXJlIG5leHRSZXN1
bHQgaXMgYSB0ZW1wb3JhcnkgKHRoZSB2YWx1ZSBWaXJ0dWFsUmVnaXN0ZXIgaW4gdGhlCisgICAg
ICAgIExMSW50L0Jhc2VsaW5lIGFuZCBhIHRtcCBpbiB0aGUgREZHKS4KKworICAgICAgICBJbiBv
cmRlciB0byBtYWtlIHN1cmUgdGhlc2UgYnl0ZWNvZGVzIGhhdmUgdGhlIHNhbWUgcGVyZm9tYW5j
ZSBhcworICAgICAgICB0aGUgZXhpc3RpbmcgYnl0ZWNvZGUgc2VxdWVuY2UsIHdlIG5lZWQgdG8g
bWFrZSBzdXJlIHdlIGhhdmUgdGhlCisgICAgICAgIHNhbWUgcHJvZmlsaW5nIGRhdGEgYW5kIGlu
bGluZSBjYWNoaW5nLiBNb3N0IG9mIHRoZSBleGlzdGluZworICAgICAgICBnZXRfYnlfaWQgY29k
ZSBhc3N1bWVkIGEgcGFydGljdWxhciBieXRlY29kZSBtZW1iZXIgbmFtZSB3YXMgdGhlCisgICAg
ICAgIHNhbWUgaW4gZWFjaCBmbGF2b3IgZ2V0X2J5X2lkIGFjY2Vzcy4gVGhpcyBwYXRjaCBhZGRz
IHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyB0aGF0IHZlbmQgdGhlIGNv
cnJlY3QKKyAgICAgICAgUHJvZmlsZS9WaXJ0dWFsUmVnaXN0ZXIgZm9yIHRoZSBjdXJyZW50IGJ5
dGVjb2RlL2NoZWNrcG9pbnQuIFRoaXMKKyAgICAgICAgbWVhbnMgd2UgY2FuIGhhdmUgbWVhbmlu
Z2Z1bCBuYW1lcyBmb3Igb3VyIEJ5dGVjb2RlIHN0cnVjdHMgYW5kCisgICAgICAgIHN0aWxsIHVz
ZSB0aGUgZ2VuZXJpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgSW4gdGhlIExMSW50IG1vc3Qgb2Yg
dGhlIGxvZ2ljIGZvciBjYWxscy9nZXRfYnlfaWQgaGFkIHRvIGJlCisgICAgICAgIGZhY3RvcmVk
IGludG8gaGVscGVyIG1hY3Jvcywgc28gd2UgY291bGQgaGF2ZSBieXRlY29kZXMgdGhhdCBhcmUK
KyAgICAgICAgc29tZSBjb21iaW5hdGlvbiBvZiB0aG9zZS4KKworICAgICAgICBUaGUgdHJpY2tp
ZXN0IHBhcnQgb2YgdGhpcyBwYXRjaCB3YXMgZ2V0dGluZyB0aGUgaGFuZCByb2xsZWQgREZHCisg
ICAgICAgIElSIHRvIHdvcmsgY29ycmVjdGx5LiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2
ZSBhIGdyZWF0IHdheSB0bworICAgICAgICBleHByZXNzIGxhcmdlIGNodWNrcyBvZiBERkcgZ3Jh
cGggdGhhdCBkb2Vzbid0IGludm9sdmUgbWFudWFsbHkKKyAgICAgICAgdHJhY2tpbmcgYWxsIHRo
ZSBERkcncyBpbnZhcmlhbnRzLiBTdWNoIGFzOgorCisgICAgICAgIDEpIEZsdXNoaW5nL1BoYW50
b21pbmcgdmFsdWVzIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jay4KKyAgICAgICAgMikgUm9sbGlu
ZyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIHRoZSBCeXRlY29kZUluZGV4IHdoZW4gc3dpdGNoaW5n
CisgICAgICAgICAgIGJsb2Nrcy4KKyAgICAgICAgMykgUmVtZW1iZXJpbmcgdG8gR2V0TG9jYWwg
ZWFjaCB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IGJsb2NrLgorICAgICAgICA0KSBFbnN1
cmluZyB0aGF0IHRoZSBKU1ZhbHVlIHN0b3JlZCB0byB0aGUgb3BfaXRlcmF0b3JfbmV4dC5tX3Zh
bHVlCisgICAgICAgICAgIGxvY2FsIGRvZXMgbm90IGNhdXNlIHVzIHRvIE9TUiBleGl0IGF0IHRo
ZSBzZXQgbG9jYWwuCisKKyAgICAgICAgKDQpIGlzIGhhbmRsZWQgYnkgYSBuZXcgZnVuY3Rpb24s
IGJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbiwKKyAgICAgICAgb24gREZHR3JhcGggdGhh
dCBwcm9kdWNlcyBhIEZyb3plblZhbHVlIHRoYXQgaXMgcm91Z2hseSB0aGUgYm90dG9tCisgICAg
ICAgIGZvciBhIGdpdmVuIHNwZWN1bGF0ZWQgdHlwZS4gSW4gYSBmdXR1cmUgcGF0Y2ggd2Ugc2hv
dWxkIG1ha2UgdGhpcworICAgICAgICBtb3JlIGNvbXBsZXRlLCBwcm9iYWJseSBieSBhZGRpbmcg
YSBWTTo6Ym90dG9tQ2VsbEZvclNldExvY2FsIHRoYXQKKyAgICAgICAgcHJlZGljdGlvbiBwcm9w
YWdhdGlvbiBhbmQgQUkga25vdyBob3cgdHJlYXQgYXMgYSB0cnVlIGJvdHRvbQorICAgICAgICB2
YWx1ZS4gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjk0
CisKKyAgICAgICAgTGFzdGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIERGRyBOb2RlVHlwZSwg
Q2hlY2tDZWxsIHRvIGJlCisgICAgICAgIENoZWNrSXNDb25zdGFudC4gIENoZWNrSXNDb25zdGFu
dCBpcyBlcXVpdmFsZW50IHRvIHRoZSA9PSBvcGVyYXRvcgorICAgICAgICBvbiBKU1ZhbHVlIHdo
ZXJlIGl0IGp1c3QgY2hlY2tzIHRoZSByZWdpc3RlciB2YWx1ZXMgYXJlIHRoZQorICAgICAgICBz
YW1lLiBJbiBvcmRlciB0byBrZWVwIHRoZSBzYW1lIHBlcmYgdGhhdCB3ZSBoYWQgZm9yIENoZWNr
Q2VsbCwKKyAgICAgICAgQ2hlY2tJc0NvbnN0YW50IHN1cHBvcnRzIENlbGxVc2UuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yOCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0
OjpvcjgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlND
OjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6
CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OmFycmF5UHJvZmlsZUZvckltcGwpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVByb2ZpbGVG
b3IpOgorICAgICAgICAoSlNDOjphcnJheVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjp2YWx1
ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKEpTQzo6aGFzVmFsdWVQcm9maWxlRm9yKToKKyAg
ICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6ZGVzdGluYXRpb25G
b3IpOgorICAgICAgICAoSlNDOjpjYWxsZWVGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpc0Zvcik6CisgICAgICAgIChKU0M6OnN0YWNrT2Zmc2V0SW5SZWdpc3Rl
cnNGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6Y2FsbExpbmtJbmZvRm9yKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp0
cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlvbkF0IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Zm9yRWFjaEFycmF5UHJvZmlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0
aW9uOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6aGFzQ2hl
Y2twb2ludHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlSW5zdHJ1Y3Rpb246OmFzS25vd25X
aWR0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VJbnN0cnVjdGlvbjo6d2lkZTE2IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QmFzZUluc3RydWN0aW9uOjp3aWRlMzIgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmg6CisgICAgICAgICogYnl0ZWNvZGUvSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdXBlclNhbXBsZXIuaC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAg
ICAgICAgKEpTQzo6aXNTdWJ0eXBlU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkNvbnRhaW5zKToKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuaDoKKyAgICAg
ICAgKEpTQzo6U3VwZXJTYW1wbGVyU2NvcGU6OnJlbGVhc2UpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXNFbXB0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JPcGVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ck5leHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJ
dGVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JH
ZW5lcmljTmV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JHZW5lcmljTmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpi
aW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcyk6CisgICAgICAgICog
ZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxB
YnN0cmFjdFN0YXRlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0
cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFp
bEFic3RyYWN0U3RhdGU6OmF0SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3Ry
YWN0U3RhdGU6OnRtcCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJvZ3Jlc3NUb05leHRDaGVja3BvaW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6anNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OndlYWtKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRk
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
YWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hl
Y2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVzcGFjZUxvYWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50
cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmtlZXBP
cGVyYW5kQWxpdmUpOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6
OmpldHRpc29uQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhh
c2U6Om1lcmdlQmxvY2tzKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphZGRTdHJpbmdSZXBsYWNlUHJpbW9yZGlhbENo
ZWNrcyk6CisgICAgICAgICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Zm9yQWxsS2lsbGVkT3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbik6
CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6
OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
OjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OnNpemUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpudW1iZXJPZlRtcHMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjphdEluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6b3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmxvY2FsKToKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6YXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjp2YXJpYWJsZUF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3BlY3Vs
YXRlZFR5cGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0Nl
bGxPcGVyYW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJS
ZXR1cm5QQyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lzQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tDZWxsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q2hlY2tJc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNoZWNrQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoK
KyAgICAgICAgKiBnZW5lcmF0b3IvTWV0YWRhdGEucmI6CisgICAgICAgICogZ2VuZXJhdG9yL1Nl
Y3Rpb24ucmI6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENhbGxSZXN1bHQpOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BD
YWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjphZHZhbmNlVG9OZXh0Q2hl
Y2twb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3Bv
aW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgIChKU0M6OkxMSW50Ojpw
ZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6CisgICAgICAgIChKU0M6OkxMSW50Ojps
bGludF9kdW1wX3ZhbHVlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2ZmbGluZWFz
bS90cmFuc2Zvcm0ucmI6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVuX3RyeV9mYXN0KToKKyAgICAgICAgKEpTQzo6aXRl
cmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9vcGVu
X3RyeV9mYXN0X3dpZGUxNik6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rf
d2lkZTMyKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JfbmV4dF90cnlfZmFzdCk6CisgICAgICAg
IChKU0M6Oml0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KToKKyAgICAgICAgKEpTQzo6aXRl
cmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOgorICAgICAgICAoSlNDOjppdGVyYXRvcl9uZXh0
X3RyeV9mYXN0X3dpZGUzMik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6OmludGVyYXRp
b25LaW5kRm9ySW50cmluc2ljKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2FzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNvbmN1cnJlbnRseSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wQnJpZWYgY29u
c3QpOgorCiAyMDIwLTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3IvSlNTZXRJdGVyYXRvciB3aXRo
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDMyMGFiMGUzMThhMDYxZTYwYjkzNGZm
MjExYzE3ZmI4MTY1ZDNmNi4uZDEzNzUxNmQzMjY1NWIzMjBiM2Y0YTQxMWIzYmQxZjk0OTMyZTc3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNC0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWRlc2lnbiBob3cgd2UgZG8gZm9yLW9mIGl0
ZXJhdGlvbiBmb3IgSlNBcnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgor
CisgICAgICAgICogd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmg6CisKIDIwMjAtMDQt
MTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgLV9y
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlm
eSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGJh
NjIwMTkwMjMyNWZmZDA0MjYwMjI5YWM0Yzc0MDgxZjhlOTRmYWQuLjk1OTUzZGI0OTMwMjJhYzFl
YzQwZTM5ZjEyNDc5NmY4MDU3MTU4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTEzNTMsNiArMTM1Myw3IEBAIFdFQktJVF9DT1BZX0ZJTEVTKEphdmFTY3JpcHRDb3Jl
X0NvcHlQcml2YXRlSGVhZGVycwogICAgIEZJTEVTICR7SmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSU30KICAgICBGTEFUVEVORUQKICkKK2FkZF9kZXBlbmRlbmNpZXMoSmF2
YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIEJ5dGVjb2RlcyBKU0NCdWlsdGlucykKICMg
SmF2YVNjcmlwdENvcmVfQ29weVByaXZhdGVIZWFkZXJzIG5lZWRzIHRvIGhhdmUgYSBkaXJlY3Qg
b3IgaW5kaXJlY3QKICMgZGVwZW5kZW5jeSBvZiBKYXZhU2NyaXB0Q29yZSBmb3IgQ01ha2UgVmlz
dWFsIFN0dWRpbyBnZW5lcmF0b3IgdG8KICMgZWxpbWluYXRlIGR1cGxpY2F0ZWQgY3VzdG9tIGNv
bW1hbmRzLiBPdGhlcndpc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNTAx
OWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0YjhlMTgxY2MyOGUuLjVmNjNhZjMwYTc1MzQ3ZWU2Y2Vi
ZTg5Yjg0YzA3OTg3YzA4ODJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MTAzLDYgKzExMDMsOCBAQAogCQk1M0M0RjY2QjIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9i
YWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUdsb2JhbE9iamVjdC5oICovOyB9Owog
CQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDNkZFRUUxRThBREZBOTAw
QjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCAqLzsgfTsKIAkJNTNDQTczMEExRUE1MzNEODAw
NzYwNDlEIC8qIFdhc21CQlFQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAq
LzsgfTsKKwkJNTNEMzU0OTkyNDBEODhCRDAwODk1MEREIC8qIEJ5dGVjb2RlT3BlcmFuZHNGb3JD
aGVja3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9p
bnQuaCAqLzsgfTsKKwkJNTNENDFFQzkyM0MwMDgxQTAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVN
ZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTNENDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRDQ0NERDMURB
RjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBC
M1dhc21BZGRyZXNzVmFsdWUuaCAqLzsgfTsKIAkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8q
IEpTVmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0UxRjhGNzIxNTQ3MTQ5MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0U3NzdFNDFF
OTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQg
LyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CkBAIC0zODE0LDYgKzM4MTYsOSBAQAog
CQk1M0M2RkVGMDFFOEFGRTBDMDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bjb2RlT3JpZ2luLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlEIC8qIFdh
c21CQlFQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21C
QlFQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQTczMDgxRUE1MzNE
ODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21CQlFQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk3
MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0QzNTQ5ODI0MEQ4OEFEMDA4OTUw
REQgLyogQnl0ZWNvZGVVc2VEZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnl0ZWNvZGVVc2VEZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
M0Q0MUVDODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Q0NDREQjFEQUYwOEFCMDBCOTI3ODQgLyogQjNX
YXNtQWRkcmVzc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2Fz
bUFkZHJlc3NWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRDQ0NEREMURBRjA5QTAwMEI5Mjc4NCAvKiBCM1dhc21B
ZGRyZXNzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNX
YXNtQWRkcmVzc1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUFkZHJlc3NWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRTFGOEY3MjE1NDcxNDkwMDAxRERCQyAvKiBK
U1ZhbHVlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVl
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyMCw4ICs4MjI1LDEw
IEBACiAJCQkJQzJGQ0FFMEUxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5jcHAgKi8sCiAJCQkJQzJGQ0FFMEYxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oICovLAogCQkJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCisJCQkJNTNEMzU0OTcyNDBEODhBRDAw
ODk1MEREIC8qIEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmggKi8sCiAJCQkJRTNEMjY0
MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAogCQkJCUUzRDI2
NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCisJCQkJNTNEMzU0
OTgyNDBEODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlVXNlRGVmLmNwcCAqLywKIAkJCQkwRjg4NUUx
MDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQlFMzVCQTJDMDI0
MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCkBAIC04MzE1LDYgKzgzMjIsNyBAQAogCQkJCTE0
Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCiAJCQkJ
MTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmggKi8sCiAJCQkJ
NTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZS5oICovLAorCQkJCTUzRDQxRUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2Rl
TWV0YWRhdGEuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxl
LmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8s
CiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
LmNwcCAqLywKQEAgLTkxMjcsNiArOTEzNSw3IEBACiAJCQkJMEYyREQ4MEIxQUIzRDg1ODAwQkJC
OEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMy
NEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyog
Qnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjhE
QUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTcxMSw2ICs5NzIwLDcgQEAKIAkJCQkwRkQyRkQ5NTIwQjUyQkUyMDBG
MDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVFMEZF
NzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzRDQxRUM5MjNDMDA4MUEwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVy
YXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhD
NCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwREMzRTBBMUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCmluZGV4IGM4NDdmYzdkZjU4NmFhZDZmODUwNzA4MzNjYmY1YmE1ZWJlZjBlYzguLjE1Mzk3
ZThiN2Y0OGE4NGZiMjdmMTFkMmYxMzcxZTBlMmEzMDFjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC02ODYs
NiArNjg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNh
bEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMyKGltbS5tX3ZhbHVlKTsKKyAgICAgICAg
aWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzLm1f
cHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lz
dGVyLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQ4KGFkZHJl
c3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
KyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lk
IG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG9y
NjQoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTE2MDMsNyArMTYxNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVy
KTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVz
cykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykK
ICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgZ2V0Q2FjaGVkTWVt
b3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5z
dHJiKHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCAwKTsKQEAgLTE2MTgsNyArMTYzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5
VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1t
LCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0
IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgaW1tOChzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAgICAgICAgIGlmICghaW1tOC5tX3ZhbHVlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgKaW5kZXggOGM2OTc5YmI5YjJmZGViMDRjYTAyNmU3NjZkMjA4YjczYTA2M2Yy
ZS4uMmExZGRlZGVlMzZkYmUzY2RlNTcyZjQ4NjA1YTQ2NGM4MGI2ZTc4NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpv
cjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjE2OworICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjg7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2Fk
ODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDMyOwpAQCAtOTYsNiAr
OTcsMTIgQEAgcHVibGljOgogICAgICAgICBvcjE2KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG9yOChpbW0sIEFkZHJlc3Mo
c2NyYXRjaFJlZ2lzdGVyKCkpKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0z
MiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggZmIzNDhiOTJkZDI2
MjNjMDY1MWVmZDJlNGE4YzBlOGRlMjM3YjIwMS4uOTQyNjU3YzYyZjA3NDljYTA1YzRlZWU0ZDY3
Yjk1ZmU2NDU1ZDllNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjA3LDEwICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPdXRP
ZkJvdW5kcygpIHsgbV9vdXRPZkJvdW5kcyA9IHRydWU7IH0KICAgICBib29sKiBhZGRyZXNzT2ZP
dXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCi0gICAgdm9pZCBv
YnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgbV9s
YXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwotICAgIH0KKyAgICB2b2lkIG9i
c2VydmVTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyBtX2xhc3RTZWVuU3Ry
dWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsgfQorICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlk
KCk7IH0KIAogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFz
dFNlZW5TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKaW5kZXggMWY1NjY5NGNlNzAwZmRlYmUxZmRjYmQwNDRmMmE4N2QwODhmN2Vh
Mi4uMGZmMmJmNjAzOTJjZTExYzRhYjc3ZmFiYWIwMGJmOGJhOWY5YjNhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zNCw2ICszNCw3
IEBAIHR5cGVzIFsKICAgICA6R2V0QnlWYWxIaXN0b3J5LAogICAgIDpHZXRQdXRJbmZvLAogICAg
IDpJbmRleGluZ1R5cGUsCisgICAgOkl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKICAgICA6SlNDZWxs
LAogICAgIDpKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCwKICAgICA6SlNHbG9iYWxPYmplY3Qs
CkBAIC0xMTYyLDYgKzExNjMsNjAgQEAgb3AgOmdldF9yZXN0X2xlbmd0aCwKICAgICAgICAgbnVt
UGFyYW1ldGVyc1RvU2tpcDogdW5zaWduZWQsCiAgICAgfQogCisjIFNlbWFudGljYWxseSwgdGhp
cyBpcyBpdGVyYXRvciA9IHN5bWJvbEl0ZXJhdG9yLkBjYWxsKGl0ZXJhYmxlKTsgbmV4dCA9IGl0
ZXJhdG9yLm5leHQ7CisjIHdoZXJlIHN5bWJvbEl0ZXJhdG9yIHRoZSByZXN1bHQgb2YgaXRlcmFi
bGVbU3ltYm9sLml0ZXJhdG9yXSAod2hpY2ggaXMgZG9uZSBpbiBhIGRpZmZlcmVudCBieXRlY29k
ZSkuCisjIEZvciBidWlsdGluIGl0ZXJhdG9ycywgaG93ZXZlciwgdGhpcyBoYXMgc3BlY2lhbCBi
ZWhhdmlvciB3aGVyZSBuZXh0IGJlY29tZXMgdGhlIGVtcHR5IHZhbHVlLCB3aGljaAorIyBpbmRp
Y2F0ZXMgdGhhdCB3ZSBhcmUgaW4gYSBrbm93biBpdGVyYXRpb24gbW9kZSB0byBvcF9pdGVyYXRv
cl9uZXh0Lgorb3AgOml0ZXJhdG9yX29wZW4sCisgICAgYXJnczogeworICAgICAgICBpdGVyYXRv
cjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBuZXh0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIHN5bWJvbEl0ZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGl0ZXJhYmxlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICB9LAor
ICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRpb25Nb2Rl
TWV0YWRhdGEsCisgICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAorICAgICAgICBpdGVyYXRvclByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFk
YXRhLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgIH0sCisgICAgY2hl
Y2twb2ludHM6IHsKKyAgICAgICAgc3ltYm9sQ2FsbDogbmlsLAorICAgICAgICBnZXROZXh0OiBu
aWwsCisgICAgfQorCisjIFNlbWFudGljYWxseSwgdGhpcyBpcyBuZXh0UmVzdWx0ID0gbmV4dC5A
Y2FsbChpdGVyYXRvcik7IGRvbmUgPSBuZXh0UmVzdWx0LmRvbmU7IHZhbHVlID0gZG9uZSA/IHVu
ZGVmaW5lZCA6IG5leHRSZXN1bHQudmFsdWU7CitvcCA6aXRlcmF0b3JfbmV4dCwKKyAgICBhcmdz
OiB7CisgICAgICAgIGRvbmU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgaXRlcmFibGU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
bmV4dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpdGVyYXRvcjogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgfSwKKyAgICBtZXRhZGF0YTog
eworICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAorICAg
ICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgbmV4dFJlc3VsdFByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKKyAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKKyAg
ICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgdmFsdWVNb2RlTWV0YWRh
dGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgIH0sCisgICAgdG1wczogeworICAgICAgICBuZXh0UmVzdWx0OiBKU1ZhbHVlLAor
ICAgIH0sCisgICAgY2hlY2twb2ludHM6IHsKKyAgICAgICAgY29tcHV0ZU5leHQ6IG5pbCwKKyAg
ICAgICAgZ2V0RG9uZTogbmlsLAorICAgICAgICBnZXRWYWx1ZTogbmlsLAorICAgIH0KKwogb3Ag
OnlpZWxkLAogICAgIGFyZ3M6IHsKICAgICAgICAgZ2VuZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIs
CkBAIC0xMjkwLDYgKzEzNDUsOCBAQCBvcCA6b3BfZ2V0X2J5X2lkX3JldHVybl9sb2NhdGlvbgog
b3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfcHV0X2J5X2lkX3JldHVy
bl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRl
cmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9s
b2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3YXNtX2Z1bmN0aW9uX3By
b2xvZ3VlX25vX3RscwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IGM2ZWZlMGQ4ZmY2Yzc5
ODk2YWZkMDBlMjBjYzQyNzc5ZDNhNGIwYzcuLmQ1ODdlZTAzZjI2ZDhkZmI5NGQwOGQ0NDIwNDA4
Y2FjNTBhMzhlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0yMzEsNiArMjMxLDEzIEBA
IEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KGNv
bnN0IENvZGVCbG9jayYgY29kZUJsb2NrCiAgICAgICAgICAgICByZXN1bHQuc2V0KE9wQ2FsbFZh
cmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgcmVzdWx0LnNl
dChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JD
aGVja3BvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFhY2FjZjNiZmVkMTVjNmMxN2NhYTZjYjFlOTU4MTI4
ZDVkMmYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oCkBAIC0wLDAgKzEsMTY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIK
KyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZUZv
ckltcGwoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRl
eCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICByZXR1cm4gJm1l
dGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBCeXRlY29kZU1ldGFkYXRhPgorYm9vbCBoYXNBcnJheVByb2ZpbGVGb3IoQnl0ZWNvZGVN
ZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICByZXR1
cm4gYXJyYXlQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hlY2twb2ludEluZGV4KTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0FycmF5UHJvZmlsZSYgYXJyYXlQ
cm9maWxlRm9yKEJ5dGVjb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50
SW5kZXgpCit7CisgICAgQVNTRVJUKGhhc0FycmF5UHJvZmlsZUZvcihtZXRhZGF0YSwgY2hlY2tw
b2ludEluZGV4KSk7CisgICAgcmV0dXJuICphcnJheVByb2ZpbGVGb3JJbXBsKG1ldGFkYXRhLCBj
aGVja3BvaW50SW5kZXgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRh
PgorVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JJbXBsKEJ5dGVjb2RlTWV0YWRhdGEmIG1l
dGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNo
ZWNrcG9pbnRJbmRleCk7CisgICAgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNv
ZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludElu
ZGV4KSB7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAm
bWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46
OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKKyAgICAgICAgZGVmYXVs
dDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgfSBlbHNl
IGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jf
bmV4dCkgeworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRSZXN1
bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1cm4g
Jm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6Omdl
dFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBkZWZhdWx0
OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIAor
ICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGVNZXRhZGF0YT4KK2Jvb2wgaGFzVmFsdWVQcm9maWxlRm9yKEJ5dGVjb2RlTWV0
YWRhdGEmIG1ldGFkYXRhLCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgcmV0dXJu
IHZhbHVlUHJvZmlsZUZvckltcGwobWV0YWRhdGEsIGNoZWNrcG9pbnRJbmRleCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+CitWYWx1ZVByb2ZpbGUmIHZhbHVlUHJv
ZmlsZUZvcihCeXRlY29kZU1ldGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2ludElu
ZGV4KQoreworICAgIEFTU0VSVChoYXNWYWx1ZVByb2ZpbGVGb3IobWV0YWRhdGEsIGNoZWNrcG9p
bnRJbmRleCkpOworICAgIHJldHVybiAqdmFsdWVQcm9maWxlRm9ySW1wbChtZXRhZGF0YSwgY2hl
Y2twb2ludEluZGV4KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitPcGVyYW5k
IGRlc3RpbmF0aW9uRm9yKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgdW5zaWduZWQgY2hlY2tw
b2ludEluZGV4LCBKSVRUeXBlIHR5cGUgPSBKSVRUeXBlOjpOb25lKQoreworICAgIFVOVVNFRF9Q
QVJBTShjaGVja3BvaW50SW5kZXgpOworICAgIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGU6Om9wY29k
ZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKKyAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5k
ZXgpIHsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuIGJ5
dGVjb2RlLm1faXRlcmF0b3I7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6
IHJldHVybiBieXRlY29kZS5tX25leHQ7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9IGVs
c2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkg
eworICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgeworICAgICAgICBjYXNlIE9wSXRl
cmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogeworICAgICAgICAgICAgaWYgKHR5cGUgPT0gSklUVHlw
ZTo6REZHSklUIHx8IHR5cGUgPT0gSklUVHlwZTo6REZHSklUKQorICAgICAgICAgICAgICAgIHJl
dHVybiBPcGVyYW5kOjp0bXAoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQpOworICAgICAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlLm1fdmFsdWU7IC8vIFdlIHJldXNlIHZhbHVlIGFzIGEgdGVtcCBi
ZWNhdXNlIGl0cyBlaXRoZXIgbm90IHVzZWQgaW4gc3Vic2VxdWVudCBieXRlY29kZXMgb3Igd3Jp
dHRlbiBhcyB0aGUgdGVtcCBvYmplY3QgLgorICAgICAgICB9CisgICAgICAgIGNhc2UgT3BJdGVy
YXRvck5leHQ6OmdldERvbmU6IHJldHVybiBieXRlY29kZS5tX2RvbmU7CisgICAgICAgIGNhc2Ug
T3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAg
ICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4geyB9OworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9k
c3Q7Cit9CisKKy8vIENhbGwtbGlrZSBvcGNvZGUgbG9jYXRpb25zCisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJ5dGVjb2RlPgorVmlydHVhbFJlZ2lzdGVyIGNhbGxlZUZvcihjb25zdCBCeXRlY29kZSYg
Ynl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
Y2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9
PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0g
T3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOworICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9z
eW1ib2xJdGVyYXRvcjsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZTo6b3Bjb2Rl
SUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4
ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7CisgICAgICAgIHJldHVybiBieXRlY29k
ZS5tX25leHQ7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBieXRlY29kZS5tX2NhbGxlZTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+Cit1bnNpZ25lZCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpc0Zvcihjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNr
cG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBp
ZiBjb25zdGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7Cisg
ICAgICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENh
bGwpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29k
ZTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgeworICAgICAgICBBU1NFUlQoY2hlY2tw
b2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCk7CisgICAgICAgIHJldHVy
biAxOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gYnl0ZWNvZGUubV9hcmdjOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK3B0cmRpZmZfdCBzdGFja09mZnNldEluUmVnaXN0
ZXJzRm9yQ2FsbChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIHVuc2lnbmVkIGNoZWNrcG9pbnRJ
bmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAgICBpZiBjb25z
dGV4cHIgKEJ5dGVjb2RlOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CisgICAgICAg
IEFTU0VSVChjaGVja3BvaW50SW5kZXggPT0gT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGwpOwor
ICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBieXRlY29k
ZS5tX2l0ZXJhYmxlLm9mZnNldCgpOworICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2Rl
OjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9uZXh0KSB7CisgICAgICAgIEFTU0VSVChjaGVja3Bv
aW50SW5kZXggPT0gT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KTsKKyAgICAgICAgcmV0dXJu
IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gYnl0ZWNvZGUubV9pdGVyYXRvci5v
ZmZzZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlLm1fYXJndjsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KK0xMSW50Q2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm9Gb3IoQnl0ZWNvZGVNZXRhZGF0YSYgbWV0YWRhdGEsIHVuc2lnbmVkIGNo
ZWNrcG9pbnRJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKKyAg
ICByZXR1cm4gbWV0YWRhdGEubV9jYWxsTGlua0luZm87Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4uYTVhNTA3
ZWQyZTkyZGNlZTNmYzE1MWJkZWIyYTYyNzI3M2MyMjc1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yNTksNiArMjU5LDkg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBz
Y29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKIAogICAgIFVTRVMoT3BZaWVsZCwgZ2VuZXJhdG9y
LCBhcmd1bWVudCkKIAorICAgIFVTRVMoT3BJdGVyYXRvck9wZW4sIHN5bWJvbEl0ZXJhdG9yLCBp
dGVyYWJsZSkKKyAgICBVU0VTKE9wSXRlcmF0b3JOZXh0LCBpdGVyYXRvciwgbmV4dCwgaXRlcmFi
bGUpCisKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NwcmVhZDoKICAgICAgICAgaGFuZGxl
TmV3QXJyYXlMaWtlKGluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5V2l0aFNwcmVhZD4oKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQ4Niw2ICs0ODksOSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dQogCiAgICAgREVGUyhPcENhdGNoLCBleGNlcHRpb24sIHRocm93blZhbHVlKQogCisgICAgREVG
UyhPcEl0ZXJhdG9yT3BlbiwgaXRlcmF0b3IsIG5leHQpCisgICAgREVGUyhPcEl0ZXJhdG9yTmV4
dCwgZG9uZSwgdmFsdWUpCisKICAgICBjYXNlIG9wX2VudGVyOiB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVZhcnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9yKHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKaW5kZXggZDI5ZjYwZTk0MjgyMjU5MTk0Nzc2ODU1N2VhODdhNjU3ZjIz
YTYwYi4uOTE1Y2M2MzFkYmQyODQ1ZWU5MTM4ZTEzOWViNjllOTYzNDE3NTEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTQwLDE4
ICs0MCwzNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBDYWxs
TGlua0luZm86OmNhbGxUeXBlRm9yKE9wY29kZUlEIG9wY29kZUlEKQogewotICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICBzd2l0Y2gg
KG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKKyAgICBjYXNlIG9w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKKyAgICAgICAgcmV0dXJuIFRhaWxDYWxsVmFy
YXJnczsgICAgICAgIAorCisgICAgY2FzZSBvcF9jYWxsOgorICAgIGNhc2Ugb3BfY2FsbF9ldmFs
OgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6
CiAgICAgICAgIHJldHVybiBDYWxsOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFy
Z3MpCisKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICAgICAgcmV0dXJuIENhbGxWYXJh
cmdzOwotICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3QpCisKKyAgICBjYXNlIG9wX2Nv
bnN0cnVjdDoKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdDsKLSAgICBpZiAob3Bjb2RlSUQgPT0g
b3BfY29uc3RydWN0X3ZhcmFyZ3MpCisKKyAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgog
ICAgICAgICByZXR1cm4gQ29uc3RydWN0VmFyYXJnczsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsKQorCisgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIHJldHVybiBUYWls
Q2FsbDsKLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bj
b2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKTsKLSAgICByZXR1cm4gVGFp
bENhbGxWYXJhcmdzOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENhbGw7CiB9CiAKIENh
bGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGYxM2QxNzM0YTAyYzU4YTMyMTc1OTI1
ZDI4ODU1YTJhMjYwMDE4MTguLmI5MGY4MjQ2ZmM2MTExMzc4YWViZWY5MDI1NmYxMTVlZjE3ZTNi
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcApAQCAtODEsNiArODEsMTMgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUIKICAgICBj
YXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5h
czxPcFRhaWxDYWxsPigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fY2FsbExpbmtJbmZvOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAgIGNhbGxM
aW5rSW5mbyA9ICZpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCkubWV0YWRhdGEocHJv
ZmlsZWRCbG9jaykubV9jYWxsTGlua0luZm87CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDoKKyAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX2NhbGxMaW5rSW5mbzsK
KyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gQ2FsbExpbmtT
dGF0dXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDA1M2IxYjQ0OTIwYjZhODc4MTU3ZTYxNjBiNjUzZTdhNGU3MzA0YjIuLmIz
OTE1MmRlNjQwYzBhODAwNDg4NDFhMjk0YzkyMjlmZDgzN2I3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
T3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpA
QCAtNTgzLDYgKzU4NCwyMCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5L
KE9wQ2F0Y2gpCiAgICAgICAgIExJTksoT3BQcm9maWxlQ29udHJvbEZsb3cpCiAKKyAgICAgICAg
Y2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRB
KE9wSXRlcmF0b3JPcGVuKQorCisgICAgICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1
ZVByb2ZpbGVzICs9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgSU5JVElBTElaRV9NRVRBREFU
QShPcEl0ZXJhdG9yTmV4dCkKKworICAgICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFs
dWVQcm9maWxlcyArPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAg
ICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIElOSVRJQUxJWkVfTUVUQURB
VEEoT3BSZXNvbHZlU2NvcGUpCiAKQEAgLTEyMjQsMTQgKzEyMzksMjcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQxOAogICAgICAgICAvLyBXZSBu
ZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGlu
Z19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2NvcGUgcmVzb2x1dGlvbi4KIAot
ICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0
QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgIGF1dG8gY2xlYXJJZk5lZWRlZCA9IFsmXSAoR2V0
QnlJZE1vZGVNZXRhZGF0YSYgbW9kZU1ldGFkYXRhLCBBU0NJSUxpdGVyYWwgb3BOYW1lKSB7Cisg
ICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJ
RCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRT
dHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFj
Y2Vzcy4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YSk7CisgICAgICAgICAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyAiLCBvcE5hbWUs
ICIgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKG1v
ZGVNZXRhZGF0YSk7CisgICAgICAgIH07CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgY2xlYXJJ
Zk5lZWRlZChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG9wZW4iX3MpOworICAg
ICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0Pihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVhcklmTmVlZGVkKG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YSwgIml0ZXJhdG9yIG5leHQiX3MpOworICAgICAgICAgICAgY2xl
YXJJZk5lZWRlZChtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLCAiaXRlcmF0b3IgbmV4dCJf
cyk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlk
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBjbGVhcklmTmVlZGVkKG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLCAiZ2V0IGJ5IGlkIl9zKTsKICAgICAgICAgfSk7CiAKICAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsKQEAgLTEzMjYsOSArMTM1NCwyOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTElu
dElubGluZUNhY2hlcygpCiAgICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewogICAgICAgICAg
ICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWly
LmtleSkpOwogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAg
ICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7
CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgICAgIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRD
YWNoZShpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAg
ICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRh
ZGF0YSh0aGlzKS5tX21vZGVNZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTElu
dCBpdGVyYXRvciBvcGVuIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRC
eUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1ldGFkYXRhKHRoaXMp
Lm1fbW9kZU1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICAgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IGl0ZXJhdG9y
IG5leHQgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBk
b24ndCByZWFsbHkgd2FudCB0byBjbGVhciBib3RoIGNhY2hlcyBoZXJlIGJ1dCBpdCdzIGtpbmRh
IGFubm95aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb25lIHRoaXMgaXMgcmVmZXJyaW5nIHRvLi4u
CisgICAgICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNjkzCisgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVj
dGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAgICAg
ICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxM
SW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgICAgICAg
ICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVh
ckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9OwpAQCAtMzA0MSw2ICszMDg4LDExIEBAIFZhbHVlUHJvZmlsZSogQ29k
ZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvCiAKICN1bmRlZiBDQVNFCiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAg
ICAgIHJldHVybiAmdmFsdWVQcm9maWxlRm9yKGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Bl
bj4oKS5tZXRhZGF0YSh0aGlzKSwgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOworICAgIGNh
c2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAgICAgcmV0dXJuICZ2YWx1ZVByb2ZpbGVGb3IoaW5z
dHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpLm1ldGFkYXRhKHRoaXMpLCBieXRlY29kZUlu
ZGV4LmNoZWNrcG9pbnQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDIw
NWVjMTZlMjdmMDAyZTFmZmRjNjg3YjRmZjMwZTA4YzJmZTRhNTAuLmE5MTQ1ZjdiMDZjZDdlNWMz
NDAwYzAxZjYwNWE5Njc5ZTYxZDdiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTQwNCw2ICs0MDQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRDb2RlLT5pbnN0cnVjdGlvbnMoKTsgfQorICAgIGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluc3RydWN0
aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQogCiAgICAgc2l6ZV90IHByZWRpY3RlZE1hY2hpbmVD
b2RlU2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9ja0lubGluZXMuaAppbmRleCAyMmU3NmIxODVlYjllYmE5N2RlOWJiMDgxZDY0MTg2YmY1NGNl
NGFhLi41MzYyMjg5MDdlODRjNDkzM2NkMjkzZGYzNTAxN2JmNzlkZTc0ZjllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKQEAgLTM5
LDEyICszOSwyNCBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmlsZShjb25zdCBG
dW5jdG9yJiBmdW5jKQogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNkZWZpbmUgVklTSVQoX19v
cCkgXAotICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKKyAgICAgICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9w
cm9maWxlLCBmYWxzZSk7IH0pOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVF
X1BST0ZJTEUoVklTSVQpCiAKICN1bmRlZiBWSVNJVAotICAgIH0KKworICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JPcGVuPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IAorICAg
ICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgZmFsc2UpOworICAgICAg
ICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAg
ICAgZnVuYyhtZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSwg
ZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7
CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7CisgICAg
ICAgIH0pOworICAgIH0gICAKIAogfQogCkBAIC02OCw2ICs4MCwxMCBAQCB2b2lkIENvZGVCbG9j
azo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogCiAjdW5kZWYgVklT
SVQxCiAjdW5kZWYgVklTSVQyCisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJh
dG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgZnVuYyhtZXRhZGF0
YS5tX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKaW5kZXggOTNmMjI3MGFj
YTY1MmJmMTljMmM5NTU5MWVkYWU1MTY3N2EyODhjMi4uMjIyZWIxOTVkMTMwNjE5NzcwNmFmZDI2
YjQ4MWYzNjEyNzM3MjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlTdGF0dXMuY3BwCkBAIC04Niw2ICs4NiwzNiBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1
czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5k
ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5v
SW5mb3JtYXRpb24sIGZhbHNlKTsKIAorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogeworICAg
ICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgPT0gT3BJdGVyYXRvck9wZW46
OmdldE5leHQpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yT3Blbj4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKKworICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBqdXN0IGJhaWwgaWYgd2Ugc2VlIGEgZ2V0X2J5X2lkX3Byb3RvX2xv
YWQuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgwMzkKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJ
ZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgZmFsc2UpOworICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICBpZGVudGlmaWVyID0gJnZtLnBy
b3BlcnR5TmFtZXMtPm5leHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dDogeworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5h
czxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKKyAgICAgICAgaWYg
KGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0b3JOZXh0OjpnZXREb25lKSB7
CisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhLm1vZGUgIT0gR2V0
QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5v
SW5mb3JtYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
bV9kb25lTW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAg
aWRlbnRpZmllciA9ICZ2bS5wcm9wZXJ0eU5hbWVzLT5kb25lOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpID09IE9wSXRlcmF0
b3JOZXh0OjpnZXRWYWx1ZSk7CisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV92YWx1ZU1vZGVN
ZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICAgICAgICAgIHJl
dHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBzdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0
dXJlSUQ7CisgICAgICAgICAgICBpZGVudGlmaWVyID0gJnZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6IHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhO
b0luZm9ybWF0aW9uLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCmluZGV4IDA4NWFlOGQxOTk3NmI4ODZmMDAxOWY4NWZhNjdiMDJiZTE0Y2Rh
NWUuLjNkNzBjZDU0M2VjZmFlOTAyMjUwMjk2MDFhMGQ0MDVlYzY3MWIyZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC0zMiw3ICszMiw5IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgSlNPcGNvZGVUcmFpdHMgewogICAgIHVzaW5nIE9w
Y29kZUlEID0gOjpKU0M6Ok9wY29kZUlEOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQg
bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4o
TlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfQ0hFQ0tQT0lOVFMpOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxP
cGNvZGVJRD4oTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEpOworICAgIHN0YXRpY19h
c3NlcnQobnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPD0gbnVtYmVyT2ZCeXRlY29k
ZXNXaXRoTWV0YWRhdGEpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTE2ID0g
b3Bfd2lkZTE2OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTMyID0gb3Bfd2lk
ZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMg
PSA6OkpTQzo6b3Bjb2RlTGVuZ3RoczsKQEAgLTQxLDcgKzQzLDkgQEAgc3RydWN0IEpTT3Bjb2Rl
VHJhaXRzIHsKIAogc3RydWN0IFdhc21PcGNvZGVUcmFpdHMgewogICAgIHVzaW5nIE9wY29kZUlE
ID0gV2FzbU9wY29kZUlEOworICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgbnVtYmVyT2ZC
eXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oTlVNQkVSX09G
X1dBU01fV0lUSF9DSEVDS1BPSU5UUyk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBu
dW1iZXJPZkJ5dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihOVU1C
RVJfT0ZfV0FTTV9XSVRIX01FVEFEQVRBKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mQnl0
ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0ZWNvZGVzV2l0aE1ldGFkYXRhKTsK
ICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUxNiA9IHdhc21fd2lkZTE2OwogICAg
IHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTMyID0gd2FzbV93aWRlMzI7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3RocyA9IHdhc21PcGNvZGVM
ZW5ndGhzOwpAQCAtOTgsMTIgKzEwMiwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuYXJy
b3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRyYWl0czo6d2lkZTMyOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgorICAg
IE9wY29kZVNpemUgd2lkdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzV2lkZTMyPFRy
YWl0cz4oKSkKKyAgICAgICAgICAgIHJldHVybiBPcGNvZGVTaXplOjpXaWRlMzI7CisgICAgICAg
IHJldHVybiBpc1dpZGUxNjxUcmFpdHM+KCkgPyBPcGNvZGVTaXplOjpXaWRlMTYgOiBPcGNvZGVT
aXplOjpOYXJyb3c7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNP
cGNvZGVUcmFpdHM+CiAgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rlc1dp
dGhNZXRhZGF0YTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMgPSBKU09w
Y29kZVRyYWl0cz4KKyAgICBib29sIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9mQnl0ZWNvZGVz
V2l0aENoZWNrcG9pbnRzOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9
IEpTT3Bjb2RlVHJhaXRzPgogICAgIGludCBzaXplU2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsK
QEAgLTEzNyw2ICsxNTUsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpKTsKICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBULCBPcGNvZGVTaXplIHdpZHRoLCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29k
ZVRyYWl0cz4KKyAgICBUIGFzS25vd25XaWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoKGlzPFQsIFRyYWl0cz4oKSkpOworICAgICAgICByZXR1cm4gVChyZWludGVycHJldF9jYXN0
PGNvbnN0IHR5cGVuYW1lIFR5cGVCeVNpemU8d2lkdGg+Ojp1bnNpZ25lZFR5cGUqPih0aGlzICsg
KHdpZHRoID09IE9wY29kZVNpemU6Ok5hcnJvdyA/IDEgOiAyKSkpOworICAgIH0KKwogICAgIHRl
bXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPgogICAgIFQq
IGNhc3QoKQogICAgIHsKQEAgLTE2MSw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgewogCiAgICAg
ICAgIEFTU0VSVChpc1dpZGUxNjxUcmFpdHM+KCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih0aGlzKSArIDEpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBJbXBsPE9wY29kZVNpemU6OldpZGUxNj4qPih0aGlzICsgMSk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CkBAIC0xNjksMTQgKzE5NCwx
NiBAQCBwdWJsaWM6CiAgICAgewogCiAgICAgICAgIEFTU0VSVChpc1dpZGUzMjxUcmFpdHM+KCkp
OwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6
OldpZGUzMj4qPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIDEpOworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6OldpZGUzMj4qPih0
aGlzICsgMSk7CiAgICAgfQogfTsKIAogc3RydWN0IEluc3RydWN0aW9uIDogcHVibGljIEJhc2VJ
bnN0cnVjdGlvbjxPcGNvZGVJRD4gewogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEluc3RydWN0
aW9uKSA9PSAxLCAiU28gcG9pbnRlciBtYXRoIGlzIHRoZSBzYW1lIGFzIGJ5dGUgbWF0aCIpOwog
CiBzdHJ1Y3QgV2FzbUluc3RhbmNlIDogcHVibGljIEJhc2VJbnN0cnVjdGlvbjxXYXNtT3Bjb2Rl
SUQ+IHsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtSW5zdGFuY2UpID09IDEsICJTbyBw
b2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uU3RyZWFtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25T
dHJlYW0uaAppbmRleCA4YjYwMTdiOWU4MjdhMTEzN2RmM2M3ZmNjMGM0ZDljMjZhNjBjMTcxLi43
MTY1Yjk5MDJkMGE3MWYzMDllYzBlZDdlYjg4ODA4ODdjOWIzMDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaApAQCAtMTc2LDcg
KzE3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmRhdGEoKTsK
ICAgICB9CiAKLSAgICBib29sIGNvbnRhaW5zKEluc3RydWN0aW9uICopIGNvbnN0OworICAgIGJv
b2wgY29udGFpbnMoSW5zdHJ1Y3Rpb24qKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IEluc3RydWN0aW9uU3RyZWFtKEluc3RydWN0aW9uQnVmZmVyJiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkyZDY5MTkzMWM2Yzc5NDhlNTU3ZTRmNTY5MjNhZTM0OTBmZWI5ZTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSXRlcmF0aW9uTW9k
ZU1ldGFkYXRhLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51
bSBjbGFzcyBJdGVyYXRpb25Nb2RlIDogdWludDhfdCB7CisgICAgR2VuZXJpYyA9IDEgPDwgMCwK
KyAgICBGYXN0QXJyYXkgPSAxIDw8IDEsCit9OworCitjb25zdGV4cHIgdWludDhfdCBudW1iZXJP
Zkl0ZXJhdGlvbk1vZGVzID0gMjsKKworT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VO
VU1fQ0xBU1NfV0lUSF9JTlRFUkdSQUxTKEl0ZXJhdGlvbk1vZGUpOworCitzdHJ1Y3QgSXRlcmF0
aW9uTW9kZU1ldGFkYXRhIHsKKyAgICB1aW50OF90IHNlZW5Nb2RlcyB7IDAgfTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzZWVuTW9kZXMpKSA9PSBzaXplb2YoSXRlcmF0aW9u
TW9kZSkpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmluZGV4IDJkMTQzYjljZjY3
NDMwNWQ0MGM5MWViMGFlMzUxMzMxMjU2OTQ0MWYuLmJiZTFmNjdmZmJlZmU4ZThiYjEzNjdlYjZj
N2VkNjdjYmFhOGFiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBAIC02MCwxNCArNjAsMzEgQEAgdm9pZCBMTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYg
dm0sIGNvbnN0IEYKICAgICB9CiAKICAgICBhdXRvJiBpbnN0cnVjdGlvbiA9IG1fb3duZXItPmlu
c3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVPZmZzZXQuZ2V0KCkpOwotICAgIGNsZWFyTExJbnRH
ZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShtX293bmVy
LmdldCgpKSk7CisgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgeworICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0
aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkubV9tb2RlTWV0YWRh
dGEpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICAg
ICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+
KCkubWV0YWRhdGEobV9vd25lci5nZXQoKSkubV9tb2RlTWV0YWRhdGEpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBhdXRvJiBtZXRhZGF0
YSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKS5tZXRhZGF0YShtX293bmVyLmdl
dCgpKTsKKyAgICAgICAgY2xlYXJMTEludEdldEJ5SWRDYWNoZShtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEpOworICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1ldGFkYXRhLm1fdmFs
dWVNb2RlTWV0YWRhdGEpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAg
ICB9CiB9CiAKLXZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6TWV0YWRhdGEmIG1ldGFkYXRh
KQordm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNs
ZWFyTExJbnRHZXRCeUlkQ2FjaGUoR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0g
ICAgLy8gS2VlcCBoaXRDb3VudEZvckxMSW50Q2FjaGluZyB2YWx1ZS4KLSAgICBtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKKyAgICBtZXRh
ZGF0YS5jbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUoKTsKIH0KIAotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaAppbmRleCAyMjBmZmYzZTNiZjU0MzQxZTk2MWM4MmRmOGM0ZThjOTAwMDczNGJl
Li4xZDU5NTdlZmY4MTA5MmExZGFiZGVlNTAyNWNhYzVlNmYzODY3ODJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5zdGFsbChWTSYpOwogCi0gICAgc3RhdGlj
IHZvaWQgY2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJik7CisgICAg
c3RhdGljIHZvaWQgY2xlYXJMTEludEdldEJ5SWRDYWNoZShHZXRCeUlkTW9kZU1ldGFkYXRhJik7
CiAKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KCkgY29uc3QgeyByZXR1
cm4gbV9rZXk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmluZGV4
IDE4NTFiNjNjN2NhNmFlZjJmYjM2YmYyZjg3ZTkyYTE5ZTBkNDBjMTguLmFhODg1OWFkZDYyODYw
ZmZkYWRiNGQyMjI4N2MzNGIwN2NlNWIzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGJpdFdpZHRoRm9yTWF4T3Bjb2RlTGVuZ3RoID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIobQog
ICAgIG1hY3JvKE9wVGFpbENhbGwpIFwKICAgICBtYWNybyhPcENhbGxFdmFsKSBcCiAgICAgbWFj
cm8oT3BDb25zdHJ1Y3QpIFwKKyAgICBtYWNybyhPcEl0ZXJhdG9yT3BlbikgXAorICAgIG1hY3Jv
KE9wSXRlcmF0b3JOZXh0KSBcCisKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0
cyIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmgKaW5kZXggNWRiMThjNjQ4MmQ3NmQ0ZmE3YjQ2ZTk4YjlmOTcwMGRjMzg2MzBmNC4uOTQ2NThi
MDk2YmYxOTNjODdjZmQ3MWE5ZjViZGUxNWY2MTMzMmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTEyMCw2ICsxMjAsMTYgQEAg
aW5saW5lIGJvb2wgaXNBbnlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAoraW5saW5lIGJvb2wgaXNTdWJ0eXBlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIGNhdGVnb3J5KQoreworICAgIHJldHVybiAhKHZhbHVl
ICYgfmNhdGVnb3J5KSAmJiB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgc3BlY3VsYXRpb25Db250
YWlucyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgY2F0ZWdvcnkpCit7Cisg
ICAgcmV0dXJuICEhKHZhbHVlICYgY2F0ZWdvcnkpICYmIHZhbHVlOworfQorCiBpbmxpbmUgYm9v
bCBpc0NlbGxTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4g
ISEodmFsdWUgJiBTcGVjQ2VsbCkgJiYgISh2YWx1ZSAmIH5TcGVjQ2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKaW5kZXggOTYxMGRjZTVjZGJj
M2VjMDljZTMzYjFkNmJjYzRiM2ZmOGE2YzNjOC4uZTliZjk1MzFmN2JhNTk1NzMxMTBlMzFhN2E0
NGNkMjI4Yjc1NzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N1cGVyU2FtcGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBl
clNhbXBsZXIuaApAQCAtNDgsNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgZ19zdXBl
clNhbXBsZXJDb3VudC0tOwogICAgIH0KIAorICAgIHZvaWQgcmVsZWFzZSgpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9kb1NhbXBsZSk7CisgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsK
KyAgICAgICAgbV9kb1NhbXBsZSA9IGZhbHNlOworICAgIH0KKwogcHJpdmF0ZToKICAgICBib29s
IG1fZG9TYW1wbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2M2QzNjJjYWMxOWQ0OTM5ODk0
Nzc3YmVkYTdjMGFjMmQ2MzYwNjNmLi44ZmVkZTYyYjUzMGViZDEwMWZlZGE2MWFiYWI5NDlhM2Yz
YjM1OWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDAxNiwxNCArNDAxNiwxNSBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZChjb25zdCBWYXJp
YWJsZSYgdmFyaWFibGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4
cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29w
Tm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZv
ckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCiB7CiAgICAgYm9vbCBp
c0ZvckF3YWl0ID0gZm9yTG9vcE5vZGUgPyBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpIDogZmFs
c2U7Ci0gICAgQVNTRVJUKCFpc0ZvckF3YWl0IHx8IChpc0ZvckF3YWl0ICYmIGlzQXN5bmNGdW5j
dGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkpKTsKKyAgICBhdXRvIHNob3VsZEVtaXRBd2FpdCA9
IGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87CisgICAgQVNTRVJU
KCFpc0ZvckF3YWl0IHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkpOwog
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1YmplY3QgPSBuZXdUZW1wb3JhcnkoKTsKICAgICBl
bWl0Tm9kZShzdWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGl0ZXJhdG9yID0gaXNGb3JBd2FpdCA/IGVtaXRHZXRBc3luY0l0ZXJhdG9yKHN1YmplY3Qu
Z2V0KCksIG5vZGUpIDogZW1pdEdldEl0ZXJhdG9yKHN1YmplY3QuZ2V0KCksIG5vZGUpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGlzRm9yQXdhaXQgPyBlbWl0R2V0QXN5bmNJ
dGVyYXRvcihzdWJqZWN0LmdldCgpLCBub2RlKSA6IGVtaXRHZXRHZW5lcmljSXRlcmF0b3Ioc3Vi
amVjdC5nZXQoKSwgbm9kZSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS5uZXh0KTsKIAogICAgIFJlZjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwpAQCAtNDEz
MCw3ICs0MTMxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICAgICAgfQogCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIG5leHRNZXRo
b2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBub2RlLCBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZ
ZXMgOiBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNOZXh0
KHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgbm9kZSwgc2hv
dWxkRW1pdEF3YWl0KTsKIAogICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BE
b25lLmdldCgpKTsKICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKQEAgLTQxNDMsNyArNDE0NCwxNDUgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlLCBFeHByZXNzaW8KICAgICAgICAgcG9wRmluYWxseUNvbnRyb2xGbG93U2NvcGUo
KTsKICAgICAgICAgaWYgKGJyZWFrTGFiZWxJc0JvdW5kKSB7CiAgICAgICAgICAgICAvLyBJdGVy
YXRvckNsb3NlIHNlcXVlbmNlIGZvciBicmVhay1lZCBjb250cm9sIGZsb3cuCi0gICAgICAgICAg
ICBlbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgaXNGb3JBd2FpdCA/IEVt
aXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObyk7CisgICAgICAgICAgICBlbWl0SXRlcmF0b3JH
ZW5lcmljQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUsIHNob3VsZEVtaXRBd2FpdCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKK30KKworCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRh
PHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZO
b2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlKQoreworICAg
IGlmICghT3B0aW9uczo6dXNlSXRlcmF0aW9uSW50cmluc2ljcygpIHx8IGlzMzJCaXQoKSB8fCAo
Zm9yTG9vcE5vZGUgJiYgZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQoKSkpIHsKKyAgICAgICAgZW1p
dEdlbmVyaWNFbnVtZXJhdGlvbihub2RlLCBzdWJqZWN0Tm9kZSwgY2FsbEJhY2ssIGZvckxvb3BO
b2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhYmxlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5v
ZGUoaXRlcmFibGUuZ2V0KCksIHN1YmplY3ROb2RlKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBpdGVyYXRvclN5bWJvbCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYWJsZS5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV4dE9ySW5kZXggPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaXRlcmF0b3IgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRo
aXMsIG51bGxwdHIsIDApOworICAgIG1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgaXRlcmFibGUu
Z2V0KCkpOworICAgIGVtaXRJdGVyYXRvck9wZW4oaXRlcmF0b3IuZ2V0KCksIG5leHRPckluZGV4
LmdldCgpLCBpdGVyYXRvclN5bWJvbC5nZXQoKSwgYXJncywgbm9kZSk7CisKKyAgICBSZWY8TGFi
ZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKKyAgICBSZWY8TGFiZWw+IHRyeVN0YXJ0TGFiZWwg
PSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gZmluYWxseVZpYVRocm93TGFiZWwgPSBuZXdM
YWJlbCgpOworICAgIFJlZjxMYWJlbD4gZmluYWxseUxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBS
ZWY8TGFiZWw+IGNhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZjxMYWJlbD4gZW5kQ2F0
Y2hMYWJlbCA9IG5ld0xhYmVsKCk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBu
ZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7
CisKKyAgICAvLyBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IncyBsaWZldGltZSBtdXN0IGJl
IGxvbmdlciB0aGFuIEl0ZXJhdG9yQ2xvc2VDb250ZXh0LgorICAgIEZpbmFsbHlDb250ZXh0IGZp
bmFsbHlDb250ZXh0KCp0aGlzLCBmaW5hbGx5TGFiZWwuZ2V0KCkpOworICAgIHB1c2hGaW5hbGx5
Q29udHJvbEZsb3dTY29wZShmaW5hbGx5Q29udGV4dCk7CisKKyAgICB7CisgICAgICAgIFJlZjxM
YWJlbFNjb3BlPiBzY29wZSA9IG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CisKKyAg
ICAgICAgUmVmPExhYmVsPiBsb29wU3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0TGFi
ZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgZW1pdExhYmVsKCpzY29wZS0+Y29udGludWVU
YXJnZXQoKSk7CisgICAgICAgIGVtaXRMb29wSGludCgpOworCisgICAgICAgIGlmIChmb3JMb29w
Tm9kZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9yTG9vcE5vZGUtPmlzRm9yT2ZO
b2RlKCkpOworICAgICAgICAgICAgcHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRl
cmF0aW9uKGZvckxvb3BOb2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOworICAgICAgICAgICAgZW1p
dERlYnVnSG9vayhmb3JMb29wTm9kZS0+bGV4cHIoKSk7CisgICAgICAgIH0KKworICAgICAgICB7
CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZG9uZSA9IG5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJncygqdGhpcywgbnVsbHB0ciwgMCk7Cisg
ICAgICAgICAgICBtb3ZlKG5leHRBcmdzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7
CisKKyAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHQoZG9uZS5nZXQoKSwgdmFsdWUuZ2V0KCks
IGl0ZXJhYmxlLmdldCgpLCBuZXh0T3JJbmRleC5nZXQoKSwgbmV4dEFyZ3MsIG5vZGUpOworICAg
ICAgICAgICAgZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgbG9vcERvbmUuZ2V0KCkpOworICAg
ICAgICB9CisKKyAgICAgICAgZW1pdExhYmVsKHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOworICAgICAg
ICBUcnlEYXRhKiB0cnlEYXRhID0gcHVzaFRyeSh0cnlTdGFydExhYmVsLmdldCgpLCBmaW5hbGx5
VmlhVGhyb3dMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkRmluYWxseSk7Cisg
ICAgICAgIGNhbGxCYWNrKCp0aGlzLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGVtaXRKdW1wKGxv
b3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgLy8gSXRlcmF0b3JDbG9zZSBzZXF1ZW5jZSBmb3Ig
YWJydXB0IGNvbXBsZXRpb25zLgorICAgICAgICB7CisgICAgICAgICAgICAvLyBGaW5hbGx5IGJs
b2NrIGZvciB0aGUgZW51bWVyYXRpb24uCisgICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseVZp
YVRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgcG9wVHJ5KHRyeURhdGEsIGZpbmFsbHlW
aWFUaHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgUmVmPExhYmVsPiBmaW5hbGx5Qm9k
eUxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5h
bGx5RXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKKworICAgICAgICAgICAgZW1p
dE91dE9mTGluZUZpbmFsbHlIYW5kbGVyKGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJl
Z2lzdGVyKCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgdHJ5RGF0
YSk7CisgICAgICAgICAgICBtb3ZlKGZpbmFsbHlFeGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgZmlu
YWxseUNvbnRleHQuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBlbWl0
SnVtcChmaW5hbGx5Qm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgZW1pdExhYmVsKGZp
bmFsbHlMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBtb3ZlRW1wdHlWYWx1ZShmaW5hbGx5RXhj
ZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBGaW5hbGx5IGZhbGwgdGhy
b3VnaCBjYXNlLgorICAgICAgICAgICAgZW1pdExhYmVsKGZpbmFsbHlCb2R5TGFiZWwuZ2V0KCkp
OworICAgICAgICAgICAgcmVzdG9yZVNjb3BlUmVnaXN0ZXIoKTsKKworICAgICAgICAgICAgUmVm
PExhYmVsPiBmaW5hbGx5RG9uZSA9IG5ld0xhYmVsKCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRl
cmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0
aG9kLmdldCgpKSwgZmluYWxseURvbmUuZ2V0KCkpOworCisgICAgICAgICAgICBSZWY8TGFiZWw+
IHJldHVybkNhbGxUcnlTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBlbWl0TGFiZWwo
cmV0dXJuQ2FsbFRyeVN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIFRyeURhdGEqIHJldHVybkNh
bGxUcnlEYXRhID0gcHVzaFRyeShyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCksIGNhdGNoTGFiZWwu
Z2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZENhdGNoKTsKKworICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAg
bW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAg
ICAgICAgICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZv
dFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAg
ICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUu
Z2V0KCkpLCBmaW5hbGx5RG9uZS5nZXQoKSk7CisgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJy
b3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworCisg
ICAgICAgICAgICBlbWl0TGFiZWwoZmluYWxseURvbmUuZ2V0KCkpOworICAgICAgICAgICAgZW1p
dEZpbmFsbHlDb21wbGV0aW9uKGZpbmFsbHlDb250ZXh0LCBlbmRDYXRjaExhYmVsLmdldCgpKTsK
KworICAgICAgICAgICAgcG9wVHJ5KHJldHVybkNhbGxUcnlEYXRhLCBmaW5hbGx5RG9uZS5nZXQo
KSk7CisKKyAgICAgICAgICAgIC8vIENhdGNoIGJsb2NrIGZvciBleGNlcHRpb25zIHRoYXQgbWF5
IGJlIHRocm93biB3aGlsZSBjYWxsaW5nIHRoZSByZXR1cm4KKyAgICAgICAgICAgIC8vIGhhbmRs
ZXIgaW4gdGhlIGVudW1lcmF0aW9uIGZpbmFsbHkgYmxvY2suIFRoZSBvbmx5IHJlYXNvbiB3ZSBu
ZWVkIHRoaXMKKyAgICAgICAgICAgIC8vIGNhdGNoIGJsb2NrIGlzIGJlY2F1c2UgaWYgZW50ZXJl
ZCB0aGUgYWJvdmUgZmluYWxseSBibG9jayBkdWUgdG8gYSB0aHJvd24KKyAgICAgICAgICAgIC8v
IGV4Y2VwdGlvbiwgdGhlbiB3ZSB3YW50IHRvIHJlLXRocm93IHRoZSBvcmlnaW5hbCBleGNlcHRp
b24gb24gZXhpdGluZworICAgICAgICAgICAgLy8gdGhlIGZpbmFsbHkgYmxvY2suIE90aGVyd2lz
ZSwgd2UnbGwgbGV0IGFueSBuZXcgZXhjZXB0aW9uIHBhc3MgdGhyb3VnaC4KKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwoY2F0Y2hMYWJlbC5nZXQoKSk7CisKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3V0T2ZMaW5lRmluYWxseUhhbmRsZXIoZXhj
ZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGZpbmFsbHlDb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0
ZXIoKSwgcmV0dXJuQ2FsbFRyeURhdGEpOworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMg
aXMgYSBzeW50aGVzaXplZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZl
ciBuZWVkCisgICAgICAgICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRo
ZSBzY29wZSwgd2UgY2FuIHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQorICAgICAgICAgICAgICAg
IC8vIHJlZ2lzdGVyIGhlcmUuCisKKyAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFi
ZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc0Vt
cHR5KG5ld1RlbXBvcmFyeSgpLCBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpLCB0aHJv
d0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtb3ZlKGV4Y2VwdGlvblJlZ2lzdGVyLmdl
dCgpLCBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAgICAg
ZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRUaHJvdyhl
eGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwoZW5k
Q2F0Y2hMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBi
b29sIGJyZWFrTGFiZWxJc0JvdW5kID0gc2NvcGUtPmJyZWFrVGFyZ2V0TWF5QmVCb3VuZCgpOwor
ICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpCisgICAgICAgICAgICBlbWl0TGFiZWwoc2Nv
cGUtPmJyZWFrVGFyZ2V0KCkpOworICAgICAgICBwb3BGaW5hbGx5Q29udHJvbEZsb3dTY29wZSgp
OworICAgICAgICBpZiAoYnJlYWtMYWJlbElzQm91bmQpIHsKKyAgICAgICAgICAgIC8vIEl0ZXJh
dG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4KKyAgICAgICAgICAg
IGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgRW1pdEF3YWl0
OjpObyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsK
QEAgLTQyNjUsNTYgKzQ0MDQsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzRW1wdHkoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgT3BJc0VtcHR5
OjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKICAgICByZXR1cm4gZHN0OwogfQotICAgIAotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEVtaXRBd2FpdCBkb0VtaXRBd2FpdCkKLXsKLSAg
ICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7
Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwot
ICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHRNZXRob2QsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4
dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZv
dEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotCi0gICAgICAgIGlmIChkb0VtaXRBd2FpdCA9
PSBFbWl0QXdhaXQ6OlllcykKLSAgICAgICAgICAgIGVtaXRBd2FpdChkc3QpOwotICAgIH0KLSAg
ICB7Ci0gICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKLSAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBl
SXNPYmplY3QuZ2V0KCkpOwotICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwotICAgICAgICBlbWl0TGFiZWwo
dHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwg
UmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQot
ewotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyLCAxKTsKLSAgICAgICAgbW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVy
YXRvcik7Ci0gICAgICAgIG1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2
YWx1ZSk7Ci0gICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dE1ldGhvZCwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5v
ZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGRzdDsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBF
bWl0QXdhaXQgZG9FbWl0QXdhaXQpCi17Ci0gICAgUmVmPExhYmVsPiBkb25lID0gbmV3TGFiZWwo
KTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7Ci0g
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5N
ZXRob2QuZ2V0KCkpLCBkb25lLmdldCgpKTsKLQotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0
aGlzLCBudWxscHRyKTsKLSAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
aXRlcmF0b3IpOwotICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2Rl
LT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7Ci0K
LSAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCi0gICAgICAgIGVtaXRBd2Fp
dCh2YWx1ZS5nZXQoKSk7Ci0KLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVt
cG9yYXJ5KCksIHZhbHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7Ci0gICAgZW1pdFRocm93VHlwZUVy
cm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKLSAg
ICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7Ci19CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1
c2hJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBpbmRleFJlZ2lzdGVyKQogewpAQCAtNDU1NSw3ICs0NjQ0LDM1IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRBd2FpdChSZWdpc3RlcklEKiB2YWx1ZSkKICAgICBtb3ZlKHZhbHVlLCBn
ZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck9w
ZW4oUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIG5leHRPckluZGV4LCBSZWdpc3Rl
cklEKiBzeW1ib2xJdGVyYXRvciwgQ2FsbEFyZ3VtZW50cyYgaXRlcmFibGUsIGNvbnN0IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNh
bGwgZnJhbWUuCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZyYW1lOjpoZWFk
ZXJTaXplSW5SZWdpc3RlcnMsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsgKytp
KQorICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFyeSgpKTsKKworICAgIGlmIChz
aG91bGRFbWl0RGVidWdIb29rcygpKQorICAgICAgICBlbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
RXhwcmVzc2lvbiwgbm9kZS0+ZGl2b3RTdGFydCgpKTsKKworICAgIGVtaXRFeHByZXNzaW9uSW5m
byhub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOwor
ICAgIE9wSXRlcmF0b3JPcGVuOjplbWl0KHRoaXMsIGl0ZXJhdG9yLCBuZXh0T3JJbmRleCwgc3lt
Ym9sSXRlcmF0b3IsIGl0ZXJhYmxlLnRoaXNSZWdpc3RlcigpLCBpdGVyYWJsZS5zdGFja09mZnNl
dCgpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdp
c3RlcklEKiBkb25lLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogaXRlcmFibGUsIFJl
Z2lzdGVySUQqIG5leHRPckluZGV4LCBDYWxsQXJndW1lbnRzJiBpdGVyYXRvciwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3Ig
Y2FsbCBmcmFtZS4KKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxsRnJhbWU6Omhl
YWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOyAr
K2kpCisgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOworCisgICAgaWYg
KHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIGVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVFeHByZXNzaW9uLCBub2RlLT5kaXZvdFN0YXJ0KCkpOworCisgICAgZW1pdEV4cHJlc3Npb25J
bmZvKG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7
CisgICAgT3BJdGVyYXRvck5leHQ6OmVtaXQodGhpcywgZG9uZSwgdmFsdWUsIGl0ZXJhYmxlLCBu
ZXh0T3JJbmRleCwgaXRlcmF0b3IudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLnN0YWNrT2Zmc2V0
KCkpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEdlbmVyaWNJ
dGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwog
ICAgIGVtaXRDYWxsSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCksIGFyZ3VtZW50LCBub2RlKTsKQEAg
LTQ1NjMsNiArNDY4MCw1NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeAogICAgIHJldHVybiBp
dGVyYXRvci5nZXQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
dGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV4dE1ldGhv
ZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlLCBFbWl0QXdhaXQgZG9FbWl0QXdhaXQpCit7CisgICAgeworICAgICAgICBDYWxsQXJndW1l
bnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICBtb3ZlKG5leHRBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBu
ZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90
KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6
Ok5vKTsKKworICAgICAgICBpZiAoZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCisgICAg
ICAgICAgICBlbWl0QXdhaXQoZHN0KTsKKyAgICB9CisgICAgeworICAgICAgICBSZWY8TGFiZWw+
IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJ
c09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAg
ICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBh
biBvYmplY3QuIl9zKTsKKyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7Cisg
ICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JHZW5lcmljTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1
ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAg
ICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAg
ICBtb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAg
bW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAg
ZW1pdENhbGwoZHN0LCBuZXh0TWV0aG9kLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVu
dHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSwg
RGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICB9CisKKyAgICByZXR1cm4gZHN0OworfQorCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQg
ZG9FbWl0QXdhaXQpCit7CisgICAgUmVmPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0
KCkpLCBkb25lLmdldCgpKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1Rl
bXBvcmFyeSgpOworICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyKTsKKyAgICBtb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Ip
OworICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0
YXJ0KCksIG5vZGUtPmRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICBpZiAo
ZG9FbWl0QXdhaXQgPT0gRW1pdEF3YWl0OjpZZXMpCisgICAgICAgIGVtaXRBd2FpdCh2YWx1ZS5n
ZXQoKSk7CisKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCks
IHZhbHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7CisgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVy
YXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICBlbWl0TGFi
ZWwoZG9uZS5nZXQoKSk7Cit9CisKKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5hc3luY0l0
ZXJhdG9yU3ltYm9sKTsKQEAgLTQ1NzUsNyArNDc0Myw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhy
b3dhCiAgICAgZW1pdEp1bXAoYXN5bmNJdGVyYXRvckZvdW5kLmdldCgpKTsKICAgICBlbWl0TGFi
ZWwoYXN5bmNJdGVyYXRvck5vdEZvdW5kLmdldCgpKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb21tb25JdGVyYXRvciA9IGVtaXRHZXRJdGVyYXRvcihhcmd1bWVudCwgbm9kZSk7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGNvbW1vbkl0ZXJhdG9yID0gZW1pdEdldEdlbmVyaWNJdGVyYXRv
cihhcmd1bWVudCwgbm9kZSk7CiAgICAgbW92ZShpdGVyYXRvci5nZXQoKSwgY29tbW9uSXRlcmF0
b3IuZ2V0KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0
KTsKQEAgLTQ2MDQsNyArNDc3Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiB7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgewotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihhcmd1
bWVudCwgbm9kZSkgOiBlbWl0R2V0SXRlcmF0b3IoYXJndW1lbnQsIG5vZGUpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUgPyBlbWl0R2V0QXN5bmNJdGVyYXRvcihhcmd1bWVu
dCwgbm9kZSkgOiBlbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKGFyZ3VtZW50LCBub2RlKTsKICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jh
cnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAogICAgICAgICBS
ZWY8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKQEAgLTQ2NDIsNyArNDgxMCw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklE
KiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxz
ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhy
b3dNZXRob2RGb3VuZC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgRW1pdEF3YWl0IGVt
aXRBd2FpdEluSXRlcmF0b3JDbG9zZSA9IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObzsK
LSAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5v
ZGUsIGVtaXRBd2FpdEluSXRlcmF0b3JDbG9zZSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJ
dGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSwgZW1pdEF3YWl0SW5JdGVy
YXRvckNsb3NlKTsKIAogICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkRl
bGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJvdycgbWV0aG9kLiJfcyk7CiAK
QEAgLTQ3MDMsNyArNDg3MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQoKSk7Ci0gICAgICAg
ICAgICBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBuZXh0TWV0aG9kLmdl
dCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgZW1p
dEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIG5leHRNZXRob2QuZ2V0
KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7CiAKICAgICAgICAgICAgIGVt
aXRMYWJlbChicmFuY2hPblJlc3VsdC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlYTZjZDJi
NmQ1YmE3OTk0OTU2NDg2MmYzMDMwMWEzMWVhODExOGRlLi43MWU5YTVmM2RmMzBlMTUyZWZjMmY0
OTY2MzI2YTc5ZmVlZDgzNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC04MjgsNiArODI4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3Rl
cklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAogICAgICAgICAg
ICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYpOwogCisgICAgICAgIHZvaWQgZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3Vi
amVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBm
b3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRyKTsKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0
ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEdldFRlbXBsYXRlT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgVGFnZ2VkVGVtcGxhdGVO
b2RlKik7CkBAIC05MDAsOSArOTAxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXNEZXJpdmVkQXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgRGVyaXZlZEFycmF5VHlw
ZSk7IH0KICAgICAgICAgdm9pZCBlbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklE
KiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvcik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwg
SlNDOjpFbWl0QXdhaXQgPSBKU0M6OkVtaXRBd2FpdDo6Tm8pOwotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
bmV4dE1ldGhvZCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25z
dCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7Ci0gICAgICAgIHZvaWQgZW1pdEl0ZXJh
dG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlLCBFbWl0QXdhaXQgPSBFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgdm9pZCBlbWl0
SXRlcmF0b3JPcGVuKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRl
eCwgUmVnaXN0ZXJJRCogc3ltYm9sSXRlcmF0b3IsIENhbGxBcmd1bWVudHMmIGl0ZXJhYmxlLCBj
b25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRv
ck5leHQoUmVnaXN0ZXJJRCogZG9uZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGl0
ZXJhYmxlLCBSZWdpc3RlcklEKiBuZXh0T3JJbmRleCwgQ2FsbEFyZ3VtZW50cyYgaXRlcmF0b3Is
IGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEdldEdlbmVyaWNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJ
RCosIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEl0ZXJhdG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXh0TWV0
aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUsIEpTQzo6RW1pdEF3YWl0ID0gSlNDOjpFbWl0QXdhaXQ6Ok5vKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEl0ZXJhdG9yR2VuZXJpY05leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXh0TWV0aG9kLCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJ
RCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAg
dm9pZCBlbWl0SXRlcmF0b3JHZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFbWl0QXdhaXQgPSBFbWl0QXdhaXQ6Ok5v
KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiBy
ZXN1bHQsIHVuc2lnbmVkIG51bVBhcmFtZXRlcnNUb1NraXApOwogCkBAIC05NTIsOSArOTU5LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFB1c2hDYXRjaFNjb3BlKFZhcmlh
YmxlRW52aXJvbm1lbnQmKTsKICAgICAgICAgdm9pZCBlbWl0UG9wQ2F0Y2hTY29wZShWYXJpYWJs
ZUVudmlyb25tZW50Jik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEl0ZXJhdG9yKFJl
Z2lzdGVySUQqLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqKTsKLQogICAgICAgICB2b2lkIGVtaXRBd2FpdChSZWdpc3RlcklEKik7CiAgICAgICAgIHZv
aWQgZW1pdEdldFNjb3BlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3Bl
KFJlZ2lzdGVySUQqIG9iamVjdFNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAwN2YwMDhiM2ZlZmU3ZTdjNjZh
NDBjMzEwZjU2NDhmOGE1MWQ1OTYyLi4wMjQ2Njg1N2VlYzFkZjM2OTdjNzQ0YjgxNDYzYjliMTNk
YjVmZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC00ODIwLDcgKzQ4MjAsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAogICAgIGlmIChtX3RhcmdldFBhdHRlcm5zLmlzRW1w
dHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIHRoaXMpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0
ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDgzNiw3
ICs0ODM2LDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsK
IAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvck5leHQodmFsdWUu
Z2V0KCksIG5leHRNZXRob2QuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JHZW5lcmljTmV4dCh2YWx1ZS5nZXQoKSwgbmV4dE1l
dGhvZC5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUu
Z2V0KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS52YWx1ZSk7CkBAIC00ODcyLDcgKzQ4NzIsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMp
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CiAKICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgp
LCBuZXh0TWV0aG9kLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQodmFsdWUuZ2V0KCksIG5leHRNZXRob2Qu
Z2V0KCksIGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMo
KS5kb25lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgp
LCBpdGVyYXRpb25Eb25lLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFs
dWUpOwpAQCAtNDg5MCw3ICs0ODkwLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFs
dWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogCiAgICAg
UmVmPExhYmVsPiBpdGVyYXRvckNsb3NlZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRvckNsb3NlZC5nZXQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCB0aGlzKTsK
KyAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCB0
aGlzKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IDdlMjYzODBjNjA1NjViYjgwMjliYzA4MTEzNTkxYjBl
MWMzZWIyNmMuLmYwZDg4ZTgwYTFhMmMxNzFkMWFiMmY3ODFhNjZjZjA3NmJkZjNhZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTM3NjAsMTQgKzM3NjAsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGNhc2UgQ2hlY2tDZWxsOiB7
CisgICAgY2FzZSBDaGVja0lzQ29uc3RhbnQ6IHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSBub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5j
b25zdGFudCgpLT52YWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNv
bnN0YW50Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAg
ICAgICBBU1NFUlQodmFsdWUgfHwgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlID09IFNw
ZWNFbXB0eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmaWx0ZXJC
eVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CisgICAgICAgIGZp
bHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5jb25zdGFudCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCkBAIC00Mzk4LDEwICs0Mzk4LDggQEAgdm9pZCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAgICAgICAgICAgICAg
IGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChzaXpl
X3QgaSA9IG1fc3RhdGUubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykKLSAgICAgICAgZnVuY3Rv
cihtX3N0YXRlLmFyZ3VtZW50KGkpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gbV9zdGF0ZS5udW1i
ZXJPZkxvY2FscygpOyBpLS07KQotICAgICAgICBmdW5jdG9yKG1fc3RhdGUubG9jYWwoaSkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnNpemUoKTsgaS0tOykKKyAgICAgICAgZnVuY3Rv
cihtX3N0YXRlLmF0SW5kZXgoaSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0
YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWls
QWJzdHJhY3RTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmgKaW5kZXggODk3YzcwZGZmYmEwNjZiNjQ5Y2FmZGNjMWVmMDkzMzc2ODEwNGQx
My4uNDM4ZTE2ZGU4NTk1OTI1NGQ5NTU3MjFiNmYwOGRiOTU4MTRmZDhmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKQEAgLTEz
NywxMSArMTM3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKGVkZ2Uu
bm9kZSgpKTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvY2stPnZhbHVlc0F0VGFpbC5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1iZXJPZkFy
Z3VtZW50cygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgfQorICAgIHVuc2lnbmVk
IG51bWJlck9mVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0VGFpbC5udW1i
ZXJPZlRtcHMoKTsgfQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4KSB7
IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwuYXQoaW5kZXgpOyB9CiAgICAgQWJzdHJhY3RW
YWx1ZSYgb3BlcmFuZChPcGVyYW5kIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPnZhbHVlc0F0
VGFpbC5vcGVyYW5kKG9wZXJhbmQpOyB9CiAgICAgQWJzdHJhY3RWYWx1ZSYgbG9jYWwoc2l6ZV90
IGluZGV4KSB7IHJldHVybiBtX2Jsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaW5kZXgpOyB9CiAg
ICAgQWJzdHJhY3RWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2Jsb2Nr
LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaW5kZXgpOyB9CisgICAgQWJzdHJhY3RWYWx1ZSYgdG1w
KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ibG9jay0+dmFsdWVzQXRUYWlsLnRtcChpbmRleCk7
IH0KICAgICAKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQyZjRmMDA4
NDBjOTExZmFlMDkyNjQxYzM1ZDM3NGYyMDE4OWQ4YTAuLjllMDI2ZGNmZmU5NjJkOTY5ZTRlOTM5
NmJhZTFjMDk2OWJmY2UxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5h
bWVzLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGlu
ZXMuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgpAQCAtMTU5LDcgKzE2MCw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBIZWxwZXIgZm9yIG1pbiBhbmQgbWF4LgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwor
ICAgIGJvb2wgaGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgCiAgICAgdm9pZCByZWZpbmVTdGF0aWNhbGx5
KENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCk7CiAgICAgLy8gQmxvY2tzIGNhbiBl
aXRoZXIgYmUgdGFyZ2V0YWJsZSAoaS5lLiBpbiB0aGUgbV9ibG9ja0xpbmtpbmdUYXJnZXRzIG9m
IG9uZSBJbmxpbmVTdGFja0VudHJ5KSB3aXRoIGEgd2VsbC1kZWZpbmVkIGJ5dGVjb2RlQmVnaW4s
CkBAIC0xNzYsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBIYW5kbGUgY2FsbHMuIFRoaXMg
cmVzb2x2ZXMgaXNzdWVzIHN1cnJvdW5kaW5nIGlubGluaW5nIGFuZCBpbnRyaW5zaWNzLgogICAg
IGVudW0gVGVybWluYWxpdHkgeyBUZXJtaW5hbCwgTm9uVGVybWluYWwgfTsKICAgICBUZXJtaW5h
bGl0eSBoYW5kbGVDYWxsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlw
ZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCisg
ICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
LCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCiAgICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlu
a1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTkwLDI3ICsxOTEsMjcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBDYWxsVmFy
aWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGVtaXRGdW5jdGlvbkNoZWNrSWZOZWVkZWQpOwogICAgIHVu
c2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQn
cyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhh
dmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBp
dCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAgIGJvb2wg
aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmly
dHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3Vt
ZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUg
Y2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwogICAgIHVuc2lnbmVkIGdldElubGluaW5n
QmFsYW5jZShjb25zdCBDYWxsTGlua1N0YXR1cyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwog
ICAgIGVudW0gY2xhc3MgQ2FsbE9wdGltaXphdGlvblJlc3VsdCB7IE9wdGltaXplZFRvSnVtcCwg
SW5saW5lZCwgRGlkTm90aGluZyB9OwotICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxl
Q2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQs
IENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJn
dW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBuZXh0
SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
dW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ss
IGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhh
bmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lz
dGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29k
ZUluZGV4IG5leHRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQg
aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBD
YWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
ZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dElu
ZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVu
c2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBi
b29sIG5lZWRzVG9DaGVja0NhbGxlZSk7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5k
bGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0Fy
Z3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4
dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
LSAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB2
b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxs
VmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ss
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgLy8gSGFuZGxlIGludHJp
bnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2Ug
bmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rv
cj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNh
bGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
KyAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiBp
bnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3Vs
dCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJp
bnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBo
YW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJu
YWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KTsKKyAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihPcGVyYW5kIHJlc3VsdCwg
SW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wg
aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAg
IGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBPcGVyYW5kIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBT
cGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICBO
b2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0
KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQ
cm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgPSBHZXRCeU9mZnNldCk7Ci0gICAgYm9vbCBoYW5kbGVE
T01KSVRHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQm
LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbik7CisgICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1
bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxl
TW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlw
ZSwgTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0
ZWNvZGU+CkBAIC0yOTYsOCArMjk3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jdXJyZW50SW5k
ZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBtX2N1cnJlbnRJbmRl
eC5jaGVja3BvaW50KCkgKyAxKTsKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgaXQncyBhZ2Fp
biBPSyB0byBPU1IgZXhpdC4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwotICAgICAgICBhZGRU
b0dyYXBoKEV4aXRPSyk7Ci0KICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKICAgICB9
CiAKQEAgLTMyMCwxNSArMzE5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBnZXRMb2Nh
bE9yVG1wKG9wZXJhbmQpOwogICAgIH0KIAotICAgIE5vZGUqIGdldChWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoT3BlcmFuZCBvcGVyYW5kKQogICAgIHsKICAgICAgICAg
aWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFu
dEluZGV4ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRl
eCgpOwogICAgICAgICAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsK
ICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49IG9sZFNpemUgfHwgIW1fY29uc3RhbnRz
W2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ29kZUJsb2NrJiBjb2Rl
QmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRDb25zdGFudChvcGVyYW5kKTsKLSAgICAgICAg
ICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJlcHJlc2VudGF0aW9u
ID0gY29kZUJsb2NrLmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKG9wZXJhbmQpOwor
ICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQob3Bl
cmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAg
ICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXplKSB7CiAgICAgICAgICAgICAg
ICAgICAgIG1fY29uc3RhbnRzLmdyb3coY29uc3RhbnRJbmRleCArIDEpOwogICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwgbV9jb25zdGFudHMuc2l6ZSgp
OyArK2kpCkBAIC0zNDksMTAgKzM0OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKCktPmlzQ2xv
c3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBpbmxpbmVD
YWxsRnJhbWUoKS0+Y2FsbGVlQ29uc3RhbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAob3BlcmFu
ZC5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUpCisgICAgICAgICAgICAgICAgaWYg
KG9wZXJhbmQgPT0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrSlNDb25zdGFudChjYWxsZWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlKSB7CisgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZCA9PSBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBk
byBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRoaXMgZW5hYmxlcyBDcmVhdGVU
aGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQgd2UgZG9uJ3QgaGF2ZSBzdWNo
IHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1c2VzIG9mIENhbGxlZSwgc2lu
Y2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUgZnVuY3Rpb24gaXMgYSBzaW5n
bGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC00MTIsNyArNDExLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnNocmluaygwKTsKICAgICB9CiAKLSAgICBOb2Rl
KiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1v
ZGUgPSBOb3JtYWxTZXQpCisgICAgTm9kZSogc2V0KE9wZXJhbmQgb3BlcmFuZCwgTm9kZSogdmFs
dWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBz
ZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1ZSwg
c2V0TW9kZSk7CiAgICAgfQpAQCAtNjkzLDE1ICs2OTIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAg
Zmx1c2hGb3JUZXJtaW5hbCgpOwogICAgIH0KIAorICAgIE5vZGUqIGpzQ29uc3RhbnQoRnJvemVu
VmFsdWUqIGNvbnN0YW50VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChK
U0NvbnN0YW50LCBPcEluZm8oY29uc3RhbnRWYWx1ZSkpOworICAgIH0KKwogICAgIC8vIEFzc3Vt
ZXMgdGhhdCB0aGUgY29uc3RhbnQgc2hvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4KICAgICBOb2Rl
KiBqc0NvbnN0YW50KEpTVmFsdWUgY29uc3RhbnRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZVN0cm9uZyhjb25z
dGFudFZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZVN0
cm9uZyhjb25zdGFudFZhbHVlKSk7CiAgICAgfQogCiAgICAgTm9kZSogd2Vha0pTQ29uc3RhbnQo
SlNWYWx1ZSBjb25zdGFudFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgo
SlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKSk7CisgICAg
ICAgIHJldHVybiBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGNvbnN0YW50VmFsdWUpKTsKICAg
ICB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldC9zZXQgdGhlIHRoaXMgdmFsdWUu
CkBAIC04NTIsNyArODU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRk
Q2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5m
byBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQs
CisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9k
ZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcCA9PSBUYWlsQ2Fs
bCkgewpAQCAtOTYxLDcgKzk2NSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4g
Z2V0UHJlZGljdGlvbihtX2N1cnJlbnRJbmRleCk7CiAgICAgfQotICAgIAorCiAgICAgQXJyYXlN
b2RlIGdldEFycmF5TW9kZShBcnJheTo6QWN0aW9uIGFjdGlvbikKICAgICB7CiAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrOwpA
QCAtMTE3Niw3ICsxMTgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gT3B0aW9uYWw6IGEgY29u
dGludWF0aW9uIGJsb2NrIGZvciByZXR1cm5zIHRvIGp1bXAgdG8uIEl0IGlzIHNldCBieSBlYXJs
eSByZXR1cm5zIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogICAgICAgICBCYXNpY0Jsb2NrKiBtX2Nv
bnRpbnVhdGlvbkJsb2NrOwogCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX3JldHVyblZhbHVl
OworICAgICAgICBPcGVyYW5kIG1fcmV0dXJuVmFsdWU7CiAgICAgICAgIAogICAgICAgICAvLyBT
cGVjdWxhdGlvbnMgYWJvdXQgdmFyaWFibGUgdHlwZXMgY29sbGVjdGVkIGZyb20gdGhlIHByb2Zp
bGVkIGNvZGUgYmxvY2ssCiAgICAgICAgIC8vIHdoaWNoIGFyZSBiYXNlZCBvbiBPU1IgZXhpdCBw
cm9maWxlcyB0aGF0IHBhc3QgREZHIGNvbXBpbGF0aW9ucyBvZiB0aGlzCkBAIC0xMTk2LDcgKzEy
MDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ29kZUJsb2NrKiwKICAgICAgICAgICAgIENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSwg
Ly8gTnVsbCBpZiB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHJldHVyblZhbHVlVlIsCisgICAgICAgICAgICBPcGVyYW5kIHJldHVyblZhbHVlLAog
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0LAogICAgICAg
ICAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kLApAQCAtMTI3MSw2ICsxMjc1LDcgQEAgQmFzaWNCbG9jayogQnl0ZUNv
ZGVQYXJzZXI6OmFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKQogICAgIFJlZjxCYXNpY0Jsb2Nr
PiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jayhCeXRlY29kZUluZGV4KCksIG1fbnVt
QXJndW1lbnRzLCBtX251bUxvY2FscywgbV9udW1UbXBzLCAxKSk7CiAgICAgQmFzaWNCbG9jayog
YmxvY2tQdHIgPSBibG9jay5wdHIoKTsKICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUo
YmxvY2spKTsKKyAgICBWRVJCT1NFX0xPRygiQWRkaW5nIG5ldyB1bnRhcmdldGFibGUgYmxvY2s6
ICIsIGJsb2NrUHRyLT5pbmRleCwgIlxuIik7CiAgICAgcmV0dXJuIGJsb2NrUHRyOwogfQogCkBA
IC0xMzAzLDggKzEzMDgsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CiBCeXRlQ29kZVBh
cnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxDYWxsT3A+KCk7Ci0gICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChi
eXRlY29kZS5tX2NhbGxlZSk7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0
PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KGNhbGxl
ZUZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpKSk7CisgICAgaW50IHJl
Z2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0Zv
ckNhbGwoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNoZWNrcG9pbnQoKSkpOwogCiAgICAgQ2Fs
bExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9y
aWdpbigpLApAQCAtMTMxMiw4ICsxMzE3LDggQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm8KIAog
ICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5saW5lQ2FsbEZyYW1lOjpraW5kRm9y
KGNhbGxNb2RlKTsKIAotICAgIHJldHVybiBoYW5kbGVDYWxsKGJ5dGVjb2RlLm1fZHN0LCBvcCwg
a2luZCwgcGMtPnNpemUoKSwgY2FsbFRhcmdldCwKLSAgICAgICAgYnl0ZWNvZGUubV9hcmdjLCBy
ZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CisgICAgcmV0
dXJuIGhhbmRsZUNhbGwoZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNo
ZWNrcG9pbnQoKSwgSklUVHlwZTo6REZHSklUKSwgb3AsIGtpbmQsIHBjLT5zaXplKCksIGNhbGxU
YXJnZXQsCisgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2RlLCBt
X2N1cnJlbnRJbmRleC5jaGVja3BvaW50KCkpLCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0
dXMsIGdldFByZWRpY3Rpb24oKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmluZVN0
YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFyZ2V0
KQpAQCAtMTMyMyw3ICsxMzI4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5lU3RhdGlj
YWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGwKIH0KIAogQnl0
ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAotICAg
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgIE9wZXJhbmQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0
aW9uU2l6ZSwKICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0
YXR1cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKQEAgLTE0MjcsNyArMTQzMiw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBjYWxs
ZWUsIE5vZGUqIGNhbGxUYXJnZXQsIFZpCiAgICAgfQogICAgIAogICAgIEFTU0VSVChjYWxsZWVD
ZWxsKTsKLSAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNh
bGxlZUNlbGwpKSwgY2FsbFRhcmdldEZvckNoZWNrKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrSXND
b25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNhbGxlZUNlbGwpKSwgY2FsbFRhcmdldEZv
ckNoZWNrKTsKICAgICBpZiAodGhpc0FyZ3VtZW50KQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50
b20sIHRoaXNBcmd1bWVudCk7CiB9CkBAIC0xNjM5LDcgKzE2NDQsNyBAQCB1bnNpZ25lZCBCeXRl
Q29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVu
dEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0
aW9uS2luZEZvcihraW5kKTsKQEAgLTE2NzMsNyArMTY3OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIENhCiAgICAgc2l6ZV90IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1
bWVudFBvc2l0aW9ucy5zaXplKCk7CiAKICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKLSAgICAg
ICAgcmVzdWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdCkudmlydHVh
bFJlZ2lzdGVyKCk7CisgICAgICAgIHJlc3VsdCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChyZXN1bHQpOwogCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9
IG51bGxwdHI7CiAgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKQEAgLTE4MjUsNyAr
MTgzMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIENhCiAgICAgbV9jdXJyZW50SW5zdHJ1Y3Rp
b24gPSBzYXZlZEN1cnJlbnRJbnN0cnVjdGlvbjsKIH0KIAotQnl0ZUNvZGVQYXJzZXI6OkNhbGxP
cHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxs
ZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG5leHRJbmRleCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2ln
bmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29s
IG5lZWRzVG9DaGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVz
dWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2lu
ZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwg
QmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQog
ewogICAgIFZFUkJPU0VfTE9HKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxu
Iik7CiAKQEAgLTE5MDIsNyArMTkwNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0
aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAg
cmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CiAKLWJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFs
UmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1
bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LAogICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCkBAIC0yMDQ2LDcgKzIwNTEsNyBAQCB1bnNpZ25lZCBC
eXRlQ29kZVBhcnNlcjo6Z2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cwogfQogCiBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3Vs
dCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRhcmdldE5v
ZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlu
a1N0YXR1cywKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQs
IFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLAogICAgIEJ5dGVjb2RlSW5kZXggbmV4dEluZGV4LCBOb2RlVHlwZSBjYWxsT3As
IElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQpA
QCAtMjIyMiw3ICsyMjI3LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1
bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBBU1NFUlQo
b3AgPT0gQXJpdGhNaW4gfHwgb3AgPT0gQXJpdGhNYXgpOwogCkBAIC0yMjUyLDcgKzIyNTcsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgTm9kZVR5cGUgb3AsIGludCByZWdpcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICAg
ICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTIzOTEsMjcgKzIz
OTYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJheVZhbHVl
c0ludHJpbnNpYzogewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgICAg
IEl0ZXJhdGlvbktpbmQga2luZDsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7Ci0g
ICAgICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBU
eXBlZEFycmF5VmFsdWVzSW50cmluc2ljOgotICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRp
b25LaW5kOjpWYWx1ZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IEFycmF5S2V5c0ludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUtleXNJbnRy
aW5zaWM6Ci0gICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNp
YzoKLSAgICAgICAgICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6Ci0gICAgICAg
ICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJhdGlvbktp
bmRGb3JJbnRyaW5zaWMoaW50cmluc2ljKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEh
a2luZCk7CiAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVj
b21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNo
ZWNrcyBvbiBpdCBpbiBGaXh1cC4KLSAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25z
dGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKyAgICAgICAgICAg
IE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJf
dD4oKmtpbmQpKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gZXhpc3Rpbmcg
ZXJyb3Igc3RyaW5nLgogICAgICAgICAgICAgdW5zaWduZWQgZXJyb3JTdHJpbmdJbmRleCA9IFVJ
TlQzMl9NQVg7CkBAIC0yNDk4LDcgKzI0ODcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQog
ICAgICAgICAgICAgICAgICAgICAvLyAxLiBXZSBlbnN1cmUgdGhhdCB0aGUgImNvbnN0cnVjdG9y
IiBwcm9wZXJ0eSBoYXNuJ3QgYmVlbiBjaGFuZ2VkIChiZWNhdXNlIHRoZSBvYnNlcnZhYmxlCiAg
ICAgICAgICAgICAgICAgICAgIC8vIGVmZmVjdHMgb2Ygc2xpY2UgcmVxdWlyZSB0aGF0IHdlIHBl
cmZvcm0gYSBHZXQoYXJyYXksICJjb25zdHJ1Y3RvciIpIGFuZCB3ZSBjYW4gc2tpcAogICAgICAg
ICAgICAgICAgICAgICAvLyB0aGF0IGlmIHdlJ3JlIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVy
ZS4gKFdlIGNhbiByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgYnkgdXNpbmcKLSAgICAgICAgICAg
ICAgICAgICAgLy8gVHJ5R2V0QnlJZCBhbmQgQ2hlY2tDZWxsKS4KKyAgICAgICAgICAgICAgICAg
ICAgLy8gVHJ5R2V0QnlJZCBhbmQgQ2hlY2tJc0NvbnN0YW50KS4KICAgICAgICAgICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgICAgICAgICAgLy8gMi4gV2UgY2hlY2sgdGhhdCB0aGUgYXJyYXkg
d2UncmUgY2FsbGluZyBzbGljZSBvbiBoYXMgdGhlIHNhbWUgZ2xvYmFsIG9iamVjdCBhcyB0aGUg
bGV4aWNhbAogICAgICAgICAgICAgICAgICAgICAvLyBnbG9iYWwgb2JqZWN0IHRoYXQgdGhpcyBj
b2RlIGlzIHJ1bm5pbmcgaW4uIFRoaXMgcmVxdWlyZW1lbnQgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ug
d2Ugc2V0dXAgdGhlCkBAIC0yODY0LDcgKzI4NTMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
SQogICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoZXhlY1Byb3Bl
cnR5SUQpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbFByb3BlcnR5ID0gYWRkVG9HcmFw
aChUcnlHZXRCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihleGVjUHJvcGVydHlJRCkpLCBPcEluZm8oU3BlY0Z1bmN0aW9uKSwgRWRn
ZShyZWdFeHBPYmplY3QsIENlbGxVc2UpKTsKICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSog
cmVnRXhwUHJvdG90eXBlRXhlYyA9IG1fZ3JhcGguZnJlZXplKGdsb2JhbE9iamVjdC0+cmVnRXhw
UHJvdG9FeGVjRnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0Nl
bGwsIE9wSW5mbyhyZWdFeHBQcm90b3R5cGVFeGVjKSwgRWRnZShhY3R1YWxQcm9wZXJ0eSwgQ2Vs
bFVzZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcElu
Zm8ocmVnRXhwUHJvdG90eXBlRXhlYyksIEVkZ2UoYWN0dWFsUHJvcGVydHksIENlbGxVc2UpKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CkBAIC0zNzExLDcg
KzM3MDAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUq
IGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcykKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0g
c3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzczMCw3ICszNzE5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LAogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUq
IHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0
aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIHN3aXRj
aCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJ
bnRyaW5zaWM6IHsKQEAgLTM4NDQsNyArMzgzMyw3IEBAIHN0YXRpYyB2b2lkIGJsZXNzQ2FsbERP
TUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2Vu
ZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUq
IHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAg
ICAgaWYgKCF2YXJpYW50LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zODU3LDcgKzM4NDYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0
ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwogICAg
IAotICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBX
aGVuIHRoZSBjdXN0b20gYWNjZXNzb3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3Ry
dWN0dXJlIHRyYW5zaXRpb24gb2NjdXJzLgorICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGVtaXQg
Q2hlY2tJc0NvbnN0YW50IHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNjZXNzb3IgaXMg
cmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24gb2NjdXJzLgog
ICAgIGFkZFRvR3JhcGgoQ2hlY2tTdWJDbGFzcywgT3BJbmZvKGRvbUF0dHJpYnV0ZS0+Y2xhc3NJ
bmZvKSwgdGhpc05vZGUpOwogICAgIAogICAgIGJvb2wgd2FzU2VlbkluSklUID0gdHJ1ZTsKQEAg
LTM4OTUsNyArMzg4NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVz
cGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlCiB7CiAgICAgaWYgKG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENlbGwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWRkVG9HcmFwaChDaGVja0Nl
bGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShnZXRCeUlkLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgp
KSksIEVkZ2UoYmFzZSwgQ2VsbFVzZSkpOworICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50
LCBPcEluZm8obV9ncmFwaC5mcmVlemUoZ2V0QnlJZC5tb2R1bGVOYW1lc3BhY2VPYmplY3QoKSkp
LCBFZGdlKGJhc2UsIENlbGxVc2UpKTsKIAogICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkR2V0QnlTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlJZCkpLCBiYXNlKTsKIApAQCAtMzkyMyw3ICsz
OTEyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1
Y3RvcigKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5j
dGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1
bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUgdHlwZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIGlmICghaXNUeXBlZFZpZXcodHlwZSkpCkBAIC0zOTgw
LDcgKzM5NjksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3Ry
dWN0b3IoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCi0gICAgTm9kZSogY2FsbFRh
cmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJh
bmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICBIYW5kbGluZyBjb25zdGFu
dCBpbnRlcm5hbCBmdW5jdGlvbiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIlxuIik7CkBAIC00NjM1
LDcgKzQ2MjQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogCiAgICAg
aWYgKGhhbmRsZUludHJpbnNpY0dldHRlcihkZXN0aW5hdGlvbiwgcHJlZGljdGlvbiwgdmFyaWFu
dCwgYmFzZSwKICAgICAgICAgICAgIFsmXSAoKSB7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2YXJpYW50LmludHJpbnNpY0Z1bmN0
aW9uKCkpKSwgZ2V0dGVyKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25z
dGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZhcmlhbnQuaW50cmluc2ljRnVuY3Rpb24oKSkp
LCBnZXR0ZXIpOwogICAgICAgICAgICAgfSkpIHsKICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9t
LCBiYXNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTE3NCw3ICs1MTYzLDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0czxKU0Z1bmN0aW9uPigqbV92bSkpOwog
CiAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6
ZShjYWNoZWRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tD
ZWxsLCBPcEluZm8oZnJvemVuKSwgY2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBjYWxsZWUpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNhY2hlZEZ1
bmN0aW9uKTsKICAgICAgICAgICAgICAgICB9CkBAIC01MjMzLDcgKzUyMjIsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENlbGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjYWNo
ZWRGdW5jdGlvbiA9PSAoYnl0ZWNvZGUubV9pc0ludGVybmFsUHJvbWlzZSA/IGdsb2JhbE9iamVj
dC0+aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoKSA6IGdsb2JhbE9iamVjdC0+cHJvbWlzZUNv
bnN0cnVjdG9yKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJv
emVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBjYWxsZWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhm
cm96ZW4pLCBjYWxsZWUpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlQ29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0b3IqPihjYWNoZWRGdW5jdGlvbik7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTUyNTYsNyArNTI0NSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzPEpTRnVuY3Rpb24+KCptX3ZtKSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZy
ZWV6ZShjYWNoZWRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGNhbGxlZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIGNhbGxlZSk7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5j
dGlvbio+KGNhY2hlZEZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNTY2MCw3
ICs1NjQ5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIC8vIGFic2VuY2Ugb2YgYW55IGluZm9ybWF0aW9uLCBpdCdzIGJldHRl
ciB0byBhdm9pZCBtYWtpbmcgdGhpcyBiZSB0aGUgY2F1c2Ugb2YgYQogICAgICAgICAgICAgLy8g
cmVjb21waWxhdGlvbi4KICAgICAgICAgICAgIGlmIChKU09iamVjdCogY29tbW9uUHJvdG90eXBl
ID0gc3RhdHVzLmNvbW1vblByb3RvdHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjb21tb25Qcm90b3R5cGUpKSwgcHJv
dG90eXBlKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJ
bmZvKG1fZ3JhcGguZnJlZXplKGNvbW1vblByb3RvdHlwZSkpLCBwcm90b3R5cGUpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJvb2wgYWxsT0sgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIE1hdGNoU3RydWN0dXJlRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tYXRjaFN0cnVjdHVy
ZURhdGEuYWRkKCk7CkBAIC01OTI5LDcgKzU5MTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBpZiAoaWRlbnRp
Zmllci5pc0NlbGwoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZy
b3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwg
cHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJ
c0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJ
ZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
CkBAIC02MTQzLDcgKzYxMzIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc0NlbGwo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3Jh
cGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBP
cEluZm8oZnJvemVuKSwgcHJvcGVydHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZv
KHVpZCksIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCkBAIC02NjY4LDIw
ICs2NjU3LDQxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAg
ICAgICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6IHsKICAgICAgICAgICAgIGhhbmRsZVZh
cmFyZ3NDYWxsPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1
Y3RWYXJhcmdzLCBDYWxsTW9kZTo6Q29uc3RydWN0KTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFu
ZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hl
ZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29u
c3RydWN0X3ZhcmFyZ3MpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNl
IG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck9mZnNl
dCA9IC1ieXRlY29kZS5tX2FyZ3Y7CiAgICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0
LCBDYWxsRXZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9j
YWxsZWUpLCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQotICAg
ICAgICAgICAgCisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4o
KTsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0
aW9uTWV0YWRhdGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJl
bWFpbmluZ01vZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNT
RVJUKG51bWJlck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7Cisg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBnZW5lcmljQmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAgQmFzaWNCbG9jayog
Y29udGludWF0aW9uID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAgICAgICAg
ICBCeXRlY29kZUluZGV4IHN0YXJ0SW5kZXggPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAgICAg
ICAgTm9kZSogc3ltYm9sSXRlcmF0b3IgPSBnZXREaXJlY3QoYnl0ZWNvZGUubV9zeW1ib2xJdGVy
YXRvcik7CisgICAgICAgICAgICBhdXRvJiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0ID0gZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7
CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMgJiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkg
JiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25z
IHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hw
b2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisK
KyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdsb2JhbE9iamVjdC0+YXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uQ29uY3VycmVudGx5KCksICJUaGUgb25seSB3YXkgd2UgY291bGQg
aGF2ZSBzZWVuIEZhc3RBcnJheSBpcyBpZiB3ZSBzYXcgdGhpcyBmdW5jdGlvbiBpbiB0aGUgTExJ
bnQvQmFzZWxpbmUgc28gdGhlIGl0ZXJhdG9yIGZ1bmN0aW9uIHNob3VsZCBiZSBhbGxvY2F0ZWQu
Iik7CisgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblN5bWJvbEl0ZXJhdG9yRnVu
Y3Rpb24gPSBtX2dyYXBoLmZyZWV6ZShnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbkNvbmN1cnJlbnRseSgpKTsKKyAgICAgICAgICAgICAgICBudW1iZXJPZlJlbWFpbmluZ01v
ZGVzLS07CisgICAgICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJlbWFpbmluZ01vZGVzKQorICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3pl
blN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVyYXRvcik7CisgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZhc3RBcnJheUJsb2Nr
ID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBnZW5l
cmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogaXNLbm93bkl0ZXJGdW5jdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxUHRy
LCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9yKTsK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgoSXNDZWxsV2l0
aFR5cGUsIE9wSW5mbyhBcnJheVR5cGUpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworCisg
ICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJh
bmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBC
cmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFuY2hE
YXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChnZW5lcmljQmxvY2spOworCisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGFuZFJlc3VsdCA9IGFkZFRvR3JhcGgoQXJpdGhCaXRBbmQsIGlzQXJy
YXksIGlzS25vd25JdGVyRnVuY3Rpb24pOworCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtu
b3cgdGhlIEFyaXRoQml0QW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMgc28gaXQncyBvayB0byBleGl0
IGhlcmUuCisgICAgICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFuZFJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKKworICAgICAgICAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IGZhc3RBcnJheUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNh
Y2hlcygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE5vZGUqIGtpbmRO
b2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9u
S2luZDo6VmFsdWVzKSkpOworICAgICAgICAgICAgICAgIE5vZGUqIG5leHQgPSBqc0NvbnN0YW50
KEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBo
KE5ld0ludGVybmFsRmllbGRPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwg
Z2V0KGJ5dGVjb2RlLm1faXRlcmFibGUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1
dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNBcnJheUl0ZXJh
dG9yOjpGaWVsZDo6S2luZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOworICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2l0ZXJhdG9yLCBpdGVyYXRvcik7CisKKyAgICAgICAgICAgICAgICAv
LyBTZXQgbV9uZXh0IHRvIEpTVmFsdWUoKSBzbyBpZiB3ZSBleGl0IGJldHdlZW4gaGVyZSBhbmQg
aXRlcmF0b3JfbmV4dCBpbnN0cnVjdGlvbiBpdCBrbm93cyB3ZSBhcmUgaW4gdGhlIGZhc3QgY2Fz
ZS4KKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9uZXh0LCBuZXh0KTsKKworICAgICAg
ICAgICAgICAgIC8vIERvIG91ciBzZXQgbG9jYWxzLiBXZSBkb24ndCB3YW50IHRvIGV4aXQgYmFj
a3dhcmRzIHNvIG1vdmUgb3VyIGV4aXQgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAgICAgICAg
ICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNl
dCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8oY29udGludWF0aW9uKSk7Cisg
ICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2FzZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKworICAgICAgICAgICAgaWYg
KHNlZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQobnVtYmVyT2ZSZW1haW5pbmdNb2Rlcyk7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVy
aWNCbG9jaykgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGVkQ2FzZSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZ2VuZXJpY0Jsb2NrOworICAgICAg
ICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIWdlbmVyYXRlZENhc2UpOworCisgICAgICAgICAgICAg
ICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JPcGVuPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsaXR5LCB0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5h
bCk7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NUb05leHRDaGVja3BvaW50KCk7CisKKyAgICAg
ICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGdldChieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3RPYmplY3RCbG9jayA9IGFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc09iamVjdEJsb2Nr
ID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJyYW5jaERh
dGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAg
ICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc09iamVjdEJsb2NrKTsKKyAg
ICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRhcmdldChub3RPYmpl
Y3RCbG9jayk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFu
Y2hEYXRhKSwgYWRkVG9HcmFwaChJc09iamVjdCwgaXRlcmF0b3IpKTsKKworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3RPYmplY3RCbG9j
azsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgTGF6eUpTVmFsdWUgZXJyb3JTdHJpbmcgPSBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3Jh
cGgsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAg
ICAgICAgICAgICAgICAgICAgT3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlKU1Zh
bHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJyb3JN
ZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5SlNDb25zdGFudCwgaW5mbyk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoVGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6VHlw
ZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJt
aW5hbCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBpc09iamVjdEJsb2NrOworICAgICAgICAgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8qIG5leHRJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50
aWZpZXJzKCkuZW5zdXJlKG5leHRJbXBsKTsKKworICAgICAgICAgICAgICAgICAgICBBY2Nlc3NU
eXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBvcGNvZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKworICAgICAg
ICAgICAgICAgICAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21w
dXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9i
YXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRDb2RlT3JpZ2luKCkpOworCisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJ
ZChieXRlY29kZS5tX25leHQsIHByZWRpY3Rpb24sIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIobmV4dEltcGwpLCBpZGVudGlmaWVyTnVtYmVy
LCBnZXRCeVN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4gb3VyIGdldF9ieV9p
ZCBhZ2FpbiBzbyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGJ5dGVjb2RlLgorICAgICAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgub2Zmc2V0
KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUo
KTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51
YXRpb24pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ2Fz
ZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZ2VuZXJhdGVkQ2Fz
ZSkgeworICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGpzQ29uc3RhbnQoSlNWYWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fbmV4dCwgcmVzdWx0KTsKKworICAgICAgICAgICAgICAgIG1fY3VycmVu
dEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7
CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2l0ZXJhdG9yX29wZW4pOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAg
ICAgICAgICAgIHVpbnQzMl90IHNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRh
dGEuc2Vlbk1vZGVzOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlbWFpbmluZ01v
ZGVzID0gV1RGOjpiaXRDb3VudChzZWVuTW9kZXMpOworICAgICAgICAgICAgQVNTRVJUKG51bWJl
ck9mUmVtYWluaW5nTW9kZXMgPD0gbnVtYmVyT2ZJdGVyYXRpb25Nb2Rlcyk7CisgICAgICAgICAg
ICBib29sIGdlbmVyYXRlZENhc2UgPSBmYWxzZTsKKworICAgICAgICAgICAgQnl0ZWNvZGVJbmRl
eCBzdGFydEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8mIGFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGdlbmVyaWNC
bG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBh
bGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisKKyAgICAgICAgICAgIGlmIChzZWVuTW9kZXMg
JiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkgJiYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNldCB1
cCB0aGUgd2F0Y2hwb2ludCBjb25kaXRpb25zIHdlIG5lZWQgZm9yIGNvcnJlY3RuZXNzLgorICAg
ICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludFNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZS
ZW1haW5pbmdNb2RlcyAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGhhc05leHQg
PSBhZGRUb0dyYXBoKElzRW1wdHksIGdldChieXRlY29kZS5tX25leHQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAg
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QXJyYXlCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBicmFu
Y2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGZhc3RBcnJheUJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQoZ2VuZXJp
Y0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhi
cmFuY2hEYXRhKSwgaGFzTmV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBmYXN0QXJyYXlCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja0lzQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKCkpKSwgZ2V0KGJ5
dGVjb2RlLm1fbmV4dCkpOworCisgICAgICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBnZXQo
Ynl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdsb2JhbE9iamVjdC0+YXJy
YXlJdGVyYXRvclN0cnVjdHVyZSgpKSksIGl0ZXJhdG9yKTsKKworICAgICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGlzRG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworICAg
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdERvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRh
YmxlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKKworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgTm9kZSogZG9uZUluZGV4ID0ganNDb25zdGFudChqc051bWJlcigtMSkpOwor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGFkZFRvR3JhcGgoR2V0SW50ZXJuYWxG
aWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxk
OjpJbmRleCkpLCBPcEluZm8oU3BlY0ludDMyT25seSksIGl0ZXJhdG9yKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogaXNEb25lID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIGluZGV4
LCBkb25lSW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGlzRG9uZUJy
YW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaXNEb25lQnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoaXNEb25lQmxvY2spOwor
ICAgICAgICAgICAgICAgICAgICBpc0RvbmVCcmFuY2hEYXRhLT5ub3RUYWtlbiA9IEJyYW5jaFRh
cmdldChub3REb25lQmxvY2spOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5j
aCwgT3BJbmZvKGlzRG9uZUJyYW5jaERhdGEpLCBpc0RvbmUpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0
YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBh
dXRvIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRl
eChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CisK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0g
bm90RG9uZUJsb2NrOworICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxk
LCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Oklu
ZGV4KSksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsK
KyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXRlcmFibGUgPSBnZXQoYnl0ZWNvZGUubV9pdGVy
YWJsZSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJ1dHRlcmZseSA9IGFkZFRvR3JhcGgo
R2V0QnV0dGVyZmx5LCBpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0
aCA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkp
LCBpdGVyYWJsZSwgYnV0dGVyZmx5KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNEb25l
ID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRlckVxLCBFZGdlKGluZGV4LCBJbnQzMlVzZSksIEVk
Z2UobGVuZ3RoLCBJbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7IC8vIFRoZSBhYm92ZSBjb21wYXJlIGRvZXNuJ3QgcHJvZHVjZSBlZmZlY3RzIHNpbmNlIHdl
IGtub3cgaW5kZXggYW5kIGxlbmd0aCBhcmUgaW50MzJzLgorICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJh
bmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAg
ICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChpc0RvbmVCbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaERhdGEtPm5vdFRha2VuID0gQnJhbmNoVGFyZ2V0KGRvTG9hZEJs
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFu
Y2hEYXRhKSwgaXNEb25lKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZG9Mb2FkQmxvY2s7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGluZGV4ID0gYWRkVG9HcmFwaChHZXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSksIE9wSW5mbyhTcGVjSW50
MzJPbmx5KSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmF0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogb25lID0ganNDb25zdGFudChqc051bWJlcigxKSk7CisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIG5ld0luZGV4ID0gbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgaW5kZXgsIG9u
ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBmYWxzZU5vZGUgPSBqc0NvbnN0YW50KGpz
Qm9vbGVhbihmYWxzZSkpOworCisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNv
dWxkIGNvbnNpZGVyIG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNlcyB0
aHJlZSBjaGlsZAorICAgICAgICAgICAgICAgICAgICAvLyBzbG90cy4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5Mgor
ICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9pdGVyYWJs
ZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChpbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0
eSBzdG9yYWdlLgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRvR3Jh
cGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9w
SW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3Zh
bHVlLCBnZXRCeVZhbCk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RvbmUs
IGZhbHNlTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxG
aWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxk
OjpJbmRleCkpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYXRvciksIG5ld0luZGV4KTsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0byBydW4g
b3VyIGdldEJ5VmFsIGFnYWluIHNvIHdlIG1vdmUgdG8gdGhlIG5leHQgYnl0ZWNvZGUuCisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJ
bmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCwgT3BJ
bmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIFJvbGwgYmFjayB0aGUgY2hlY2twb2ludC4KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrID0gaXNEb25lQmxvY2s7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHRydWVOb2RlID0ganNDb25z
dGFudChqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBkb25lSW5k
ZXggPSBqc0NvbnN0YW50KGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUq
IGJvdHRvbU5vZGUgPSBqc0NvbnN0YW50KG1fZ3JhcGguYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV92YWx1ZSwgYm90dG9tTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5t
X2RvbmUsIHRydWVOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRl
cm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6
RmllbGQ6OkluZGV4KSksIGdldChieXRlY29kZS5tX2l0ZXJhdG9yKSwgZG9uZUluZGV4KTsKKwor
ICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdXIgc2V0IGxvY2Fscy4gV2UgZG9uJ3Qgd2FudCB0
byBydW4gdGhpcyBhZ2FpbiBzbyB3ZSBoYXZlIHRvIG1vdmUgdGhlIGV4aXQgb3JpZ2luIGZvcndh
cmQuCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gQnl0ZWNvZGVJbmRleCht
X2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
SnVtcCwgT3BJbmZvKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RhcnRJbmRleDsKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNl
ZW5Nb2RlcyAmIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
Z2VuZXJpY0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0ZWRDYXNl
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBnZW5lcmljQmxvY2s7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZ2VuZXJhdGVkQ2FzZSk7CisKKyAgICAgICAg
ICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVyYXRvck5l
eHQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQodGVybWluYWxpdHksIHRlcm1pbmFsaXR5ID09IE5vblRl
cm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKwor
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vdE9iamVjdEJsb2NrID0gYWxsb2NhdGVVbnRh
cmdldGFibGVCbG9jaygpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGlzT2JqZWN0Qmxv
Y2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogbm90RG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOworCisgICAg
ICAgICAgICAgICAgT3BlcmFuZCBuZXh0UmVzdWx0ID0gT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JO
ZXh0OjpuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGl0ZXJhdG9yUmVzdWx0ID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAg
ICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7
CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaERhdGEtPnRha2VuID0gQnJhbmNoVGFyZ2V0KGlz
T2JqZWN0QmxvY2spOworICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT5ub3RUYWtlbiA9
IEJyYW5jaFRhcmdldChub3RPYmplY3RCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSksIGFkZFRvR3JhcGgoSXNPYmplY3QsIGl0
ZXJhdG9yUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOworICAg
ICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOworICAgICAgICAgICAgICAgICAgICBMYXp5
SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgIkl0
ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAg
ICAgICAgICAgICBPcEluZm8gaW5mbyA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFk
ZChlcnJvclN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2Ug
PSBhZGRUb0dyYXBoKExhenlKU0NvbnN0YW50LCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3Ip
LCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZVByZWRpY2l0
aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50
SW5kZXgub2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOworCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gaXNPYmplY3RCbG9jazsKKyAgICAgICAgICAgICAg
ICAgICAgY2xlYXJDYWNoZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
Ym90dG9tVmFsdWUgPSBqc0NvbnN0YW50KG1fZ3JhcGguYm90dG9tVmFsdWVNYXRjaGluZ1NwZWN1
bGF0aW9uKHZhbHVlUHJlZGljaXRpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBi
YXNlID0gZ2V0KG5leHRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBkb25lSW1w
bCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3Vy
ZShkb25lSW1wbCk7CisKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNj
ZXNzVHlwZTo6R2V0QnlJZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVu
Z3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAg
R2V0QnlTdGF0dXMgZ2V0QnlTdGF0dXMgPSBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1f
aWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdp
bigpKTsKKworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fZG9u
ZSwgcHJlZGljdGlvbiwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihkb25lSW1wbCksIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCB0
eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYSB2YWx1ZSBm
b3IgbV92YWx1ZSBzbyB3ZSBkb24ndCBleGl0IG9uIGl0IGRpZmZlcmluZyBmcm9tIHdoYXQgd2Ug
ZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX3ZhbHVlLCBib3R0
b21WYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzVG9OZXh0Q2hlY2twb2ludCgp
OworCisgICAgICAgICAgICAgICAgICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEgPSBtX2dyYXBo
Lm1fYnJhbmNoRGF0YS5hZGQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoRGF0YS0+dGFr
ZW4gPSBCcmFuY2hUYXJnZXQoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYnJh
bmNoRGF0YS0+bm90VGFrZW4gPSBCcmFuY2hUYXJnZXQobm90RG9uZUJsb2NrKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKSwgZ2V0KGJ5
dGVjb2RlLm1fZG9uZSkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBub3REb25lQmxvY2s7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChuZXh0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdmFs
dWVJbXBsID0gbV92bS0+cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygp
LmVuc3VyZSh2YWx1ZUltcGwpOworCisgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlw
ZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9w
Y29kZUxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOworCisgICAgICAgICAgICAg
ICAgICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3Io
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENv
ZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29k
ZS5tX3ZhbHVlLCB2YWx1ZVByZWRpY2l0aW9uLCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZhbHVlSW1wbCksIGlkZW50aWZpZXJOdW1iZXIs
IGdldEJ5U3RhdHVzLCB0eXBlLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBw
cm9ncmVzc1RvTmV4dENoZWNrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRpb24pKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0ZWRDYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFnZW5lcmF0ZWRDYXNlKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcmVz
dWx0ID0ganNDb25zdGFudChKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV92YWx1ZSwgcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kb25lLCByZXN1bHQpOworCisg
ICAgICAgICAgICAgICAgLy8gRG8gb3VyIHNldCBsb2NhbHMuIFdlIGRvbid0IHdhbnQgdG8gcnVu
IG91ciBnZXQgYnkgaWQgYWdhaW4gc28gd2UgbW92ZSB0byB0aGUgbmV4dCBieXRlY29kZS4KKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVl
KCk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhjb250aW51YXRp
b24pKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGFy
dEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAg
ICAgICAgICBjbGVhckNhY2hlcygpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pdGVy
YXRvcl9uZXh0KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0
cj4oKTsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5m
cmVlemVTdHJvbmcobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5
dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIpKTsKQEAgLTY2OTIsNyArNzA3NCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4Lm9mZnNl
dCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCksIG1fY3VycmVudEluZGV4Lm9mZnNldCgp
ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29uZGl0aW9uKTsKICAgICAgICAgICAgICAgICBMQVNUX09Q
Q09ERShvcF9qbmVxX3B0cik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZGRUb0dyYXBo
KENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plblBvaW50ZXIpLCBjaGlsZCk7CisgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plblBvaW50ZXIpLCBjaGlsZCk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9qbmVxX3B0cik7CiAgICAgICAgIH0KIApAQCAt
NzE3MSw3ICs3NTUzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxh
dGVyLCBhcyB0aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAg
ICAgICAgICAgLy8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVy
LgogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRTY29wZT4oKTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChDYWxsRnJhbWVTbG90
OjpjYWxsZWUpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAg
ICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RD
b25zdGFudDxKU0Z1bmN0aW9uKj4oKm1fdm0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdl
YWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTc1NTAsNyArNzkzMiw3IEBAIEJ5
dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKICAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUsIC8vIE51bGwgaWYgdGhpcyBpcyBhIGNsb3N1cmUgY2FsbC4KLSAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICBPcGVyYW5kIHJldHVyblZhbHVl
LAogICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVDYWxsRnJhbWVTdGFydCwKICAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
CkBAIC03NTU5LDcgKzc5NDEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSgKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1f
cHJvZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQogICAgICwgbV9jb250aW51YXRpb25CbG9jayhj
b250aW51YXRpb25CbG9jaykKLSAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAg
ICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBh
cnNlci0+bV9pbmxpbmVTdGFja1RvcCkKIHsKICAgICB7CkBAIC03NjI1LDcgKzgwMDcsNyBAQCBC
eXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAg
ICAgLy8gTWFjaGluZSBjb2RlIGJsb2NrIGNhc2UuCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sg
PT0gYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKCFjYWxsZWUp
OwotICAgICAgICBBU1NFUlQoIXJldHVyblZhbHVlVlIuaXNWYWxpZCgpKTsKKyAgICAgICAgQVNT
RVJUKCFyZXR1cm5WYWx1ZS5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxG
cmFtZVN0YXJ0LmlzVmFsaWQoKSk7CiAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOwpA
QCAtNzc3Niw3ICs4MTU4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwo
Qnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkKICAgICAgICAgICAg
ICAgICAgICAgZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkp
OwogCiAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgcHJv
cGVydHkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwg
T3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCF1aWQtPmlzU3ltYm9sKCkpOwogICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CkBAIC03
ODc0LDcgKzgyNTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDcmVhdGVJbnRlcm5h
bEZpZWxkT2JqZWN0KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLAogICAgICAgICAgICAgQVNT
RVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0czxKU0Z1bmN0aW9uPigqbV92bSkpOwogCiAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rp
b24pOwotICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBj
YWxsZWUpOworICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhm
cm96ZW4pLCBjYWxsZWUpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpT
RnVuY3Rpb24qPihjYWNoZWRGdW5jdGlvbik7CiAgICAgICAgIH0KQEAgLTgwNDAsNyArODQyMiw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuZXhlY3V0ZShibG9jayk7CiAKICAgICAgICAgICAgICAgICBhdXRvIG5vZGVBbmRJbmRl
eCA9IGJsb2NrLT5maW5kVGVybWluYWwoKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7CisgICAgICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlQW5kSW5kZXgubm9kZSwgbm9kZUFuZEluZGV4Lm5v
ZGUtPm9wKCkgPT0gVW5yZWFjaGFibGUpOwogICAgICAgICAgICAgICAgIGJsb2NrLT5yZXNpemUo
bm9kZUFuZEluZGV4LmluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCBlN2Y2ZTc2MjQ2NjliMzAxZjVhMDIwNDhjMjVkNDgx
NWMzYTEzMzlkLi42MTBkN2QyMGVmNjUzNWY3YThlOTViY2VhMTIxZWYzYjhhYjQwMmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFz
aWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kKQorICAgIHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBi
bG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4s
IE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIE5vZGUqIGxpdmVuZXNzTm9kZSA9IGpl
dHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAg
IGlmICghbGl2ZW5lc3NOb2RlKQpAQCAtMzAyLDExICszMDIsOSBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZvaWQgamV0dGlzb25CbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0
dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbikKICAgICB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhl
YWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2
ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMo
KTsgKytpKQotICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJs
b2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKLSAg
ICAgICAgCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52
YXJpYWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZl
KGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJs
b2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpKTsKKwogICAgICAgICBmaXhK
ZXR0aXNvbmVkUHJlZGVjZXNzb3JzKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2spOwogICAgIH0KICAg
ICAKQEAgLTM1MiwxMSArMzUwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRpbWUgdG8g
aW5zZXJ0IGdob3N0aWVzIGZvciB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGtlcHQgYWxpdmUgaW4g
Y2FzZSB3ZSBPU1IKICAgICAgICAgICAgIC8vIGV4aXQgcHJpb3IgdG8gaGl0dGluZyB0aGUgZmly
c3RCbG9jaydzIHRlcm1pbmFsLCBhbmQgZW5kIHVwIGdvaW5nIGRvd24gYQogICAgICAgICAgICAg
Ly8gZGlmZmVyZW50IHBhdGggdGhhbiBzZWNvbmRCbG9jay4KLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICAgICAga2VlcE9wZXJh
bmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
bnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUo
Zmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGkpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
amV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5k
YXJ5Tm9kZU9yaWdpbiwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZv
ckluZGV4KGkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzZWNvbmRCbG9jay0+cGhpcy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcw
MjQ4OGY4ZTFjMmEwYjY3MGJmOTlmLi42MDAzMzJmMTkwZmY4YjQwNDJjZDU0MmFiOTViNTA1MzZh
ZDdhNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCkBAIC0yNzQsNiArMjc0LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChP
cGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNl
IG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVz
dF9sZW5ndGg6CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2Ugb3BfaXRlcmF0
b3JfbmV4dDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKICAgICBj
YXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
OgpAQCAtMzExLDYgKzMxMyw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bj
b2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBj
aGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2Fz
ZSBjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmU6CiAgICAgY2FzZSBoYW5kbGVVbmNhdWdo
dEV4Y2VwdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgor
ICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9j
YWxsX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF9yZXR1cm5fbG9jYXRp
b246CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGM3MTRmMTUyMDQzODFi
YTJmNDJlNzZkNThmYWY4Y2E3Njg4ZGVmNjkuLjFlNDY5Y2ZhZjJhNzQ4NDhmOWJiOTU4YTY3ODMx
M2E2ZWMxMTM0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC00MTQsOCArNDE0LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIENoZWNrQ2VsbDoKLSAgICAgICAgZGVmKFB1cmVW
YWx1ZShDaGVja0NlbGwsIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUt
PmNoaWxkMSgpKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKSkpOworICAgIGNhc2UgQ2hlY2tJc0NvbnN0
YW50OgorICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrSXNDb25zdGFudCwgQWRqYWNlbmN5TGlz
dChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5jb25zdGFudCgp
KSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
aW5kZXggZTBjOTU4NmYyMGQ0ZDVkMTE4ODcyYjlhMDMzOWM4NzA0YjAyZGMxYi4uMDM1MWNmNDZl
YzU5YTM1Zjc3OTIyZmY0OWU0YThlZjA5MzRhNDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTMwNyw4ICsz
MDcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBDaGVja0NlbGw6IHsKLSAgICAgICAg
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5v
ZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpCisgICAgICAgICAgICBjYXNlIENoZWNrSXNDb25z
dGFudDogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCkgIT0gbm9kZS0+Y29uc3RhbnQoKS0+dmFsdWUoKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwogICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDY0NGVmZTJkNWQwMDliNzdhZjQ5NTU0YmFiOWNmOGU3YWE1YjA3
ZmQuLjJhMGQxNDliYzJmOTM3NzVmZTM1OWU5Y2Y5YzQwZDllNmZhYmYwMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAg
ICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJp
YWJsZToKLSAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICBjYXNlIENoZWNrSXNDb25zdGFudDoKICAg
ICBjYXNlIENoZWNrTm90RW1wdHk6CiAgICAgY2FzZSBBc3NlcnROb3RFbXB0eToKICAgICBjYXNl
IENoZWNrSWRlbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCA4ZDdkZTI3MWRiMDk5NjE0YjViYzVhOTg3Y2FjYjJkOGU4ZWY4NjcwLi4wMjI2MzMx
OTYzZjE0N2I5ZTJiZWRlMWEzNzY0NDgwNzQzZTdmZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3NDAsNyArMTc0MCw2IEBAIHByaXZhdGU6
CiAKICAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgQ3JlYXRl
VGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgICAgICBjYXNlIENyZWF0ZUdl
bmVyYXRvcjoKQEAgLTE3NTAsNiArMTc0OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNrSXNDb25zdGFudDogeworICAgICAg
ICAgICAgaWYgKG5vZGUtPmNvbnN0YW50KCktPnZhbHVlKCkuaXNDZWxsKCkgJiYgbm9kZS0+Y29u
c3RhbnQoKS0+dmFsdWUoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlT2JqZWN0KCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjQxMSw3ICsyNDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZTogewotICAgICAgICAgICAgbm9k
ZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0zMjc4
LDcgKzMyODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIE9wSW5mbyhDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHByb3BlcnR5VUlEKSksIE9w
SW5mbyhTcGVjRnVuY3Rpb24pLCBFZGdlKHNlYXJjaFJlZ0V4cCwgQ2VsbFVzZSkpOwogCiAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tDZWxsLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja0lzQ29uc3RhbnQsIG5vZGUtPm9y
aWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5mcmVlemUocHJpbW9yZGlhbFBy
b3BlcnR5KSksIEVkZ2UoYWN0dWFsUHJvcGVydHksIENlbGxVc2UpKTsKICAgICAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCmluZGV4IGJmNDM1MGM0
Y2QxN2UzZDUwMDY2MzhmNTVhYWMzNWE1NjUyOTk0YTEuLmQ5Yzk3NDI4ZmQ2YWU1ZWE1MDZkMDU3
MjY3MzAyMGRkMWFmZjExNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRm9yQWxsS2lsbHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFs
bEtpbGxzLmgKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihiZWZv
cmVJbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBpZiAoYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNo
ZWNrcG9pbnQoKSkgewogICAgICAgICAgICAgQVNTRVJUKGJlZm9yZS5ieXRlY29kZUluZGV4KCku
Y2hlY2twb2ludCgpICE9IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkpOwotICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJbmRleCgpLm9mZnNl
dCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSwgIldoZW4gdGhlIERGRyBkb2Vz
IGNvZGUgbW90aW9uIGl0IHNob3VsZCBjaGFuZ2UgdGhlIGZvckV4aXQgb3JpZ2luIHRvIG1hdGNo
IHRoZSBzdXJyb3VuZGluZyBieXRlY29kZXMuIik7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJ
bmRleCgpLm9mZnNldCgpIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBFeGl0T0sgfHwgbm9kZUFmdGVy
LT5vcCgpID09IEludmFsaWRhdGlvblBvaW50LCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rp
b24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJv
dW5kaW5nIGJ5dGVjb2Rlcy4iKTsKIAogICAgICAgICAgICAgYXV0byBsaXZlQmVmb3JlID0gdG1w
TGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGJlZm9yZS5ieXRlY29kZUluZGV4KCkp
OwogICAgICAgICAgICAgYXV0byBsaXZlQWZ0ZXIgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQo
KmNvZGVCbG9jaywgYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpKTsKQEAgLTEwMiw4ICsxMDIsNiBAQCB2
b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9yZSwg
Tm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSwgIlRy
YW5zaXRpb25pbmcgYWNyb3NzIGEgY2hlY2twb2ludCBidXQgYmVmb3JlIGFuZCBhZnRlciBkb24n
dCBzaGFyZSBhbiBpbmxpbmVDYWxsRnJhbWUuIik7Ci0KICAgICAvLyBEZXRlY3Qga2lsbHMgdGhl
IHN1cGVyIGNvbnNlcnZhdGl2ZSB3YXk6IGl0IGlzIGtpbGxlZCBpZiBpdCB3YXMgbGl2ZSBiZWZv
cmUgYW5kIGRlYWQgYWZ0ZXIuCiAgICAgQml0VmVjdG9yIGxpdmVBZnRlciA9IGdyYXBoLmxvY2Fs
c0FuZFRtcHNMaXZlSW5CeXRlY29kZShhZnRlcik7CiAgICAgdW5zaWduZWQgbnVtTG9jYWxzID0g
Z3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCBiYjZkOGY1MjhiMTZjYjU4YTk1Mjlm
NTBiNThmYWEwMTBmNDZlMzQzLi45NDRkMjU2YWY1ZGRkMzE3ZjlkZDU1Nzg1ZTFlMDJmMzE2N2Fi
YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTUyNCw2ICsx
NTI0LDM0IEBAIHZvaWQgR3JhcGg6OmNvbnZlcnRUb1N0cm9uZ0NvbnN0YW50KE5vZGUqIG5vZGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgY29udmVydFRvQ29uc3RhbnQobm9kZSwgZnJlZXplU3Ryb25n
KHZhbHVlKSk7CiB9CiAKK0Zyb3plblZhbHVlKiBHcmFwaDo6Ym90dG9tVmFsdWVNYXRjaGluZ1Nw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgLy8gSXQgcHJvYmFi
bHkgZG9lc24ndCBtYXR0ZXIgd2hhdCB3ZSByZXR1cm4gaGVyZS4KKyAgICBpZiAocHJlZGljdGlv
biA9PSBTcGVjTm9uZSkKKyAgICAgICAgcmV0dXJuIGZyZWV6ZShKU1ZhbHVlKCkpOworCisgICAg
aWYgKHNwZWN1bGF0aW9uQ29udGFpbnMocHJlZGljdGlvbiwgU3BlY090aGVyKSkKKyAgICAgICAg
cmV0dXJuIGZyZWV6ZShqc051bGwoKSk7CisKKyAgICBpZiAoc3BlY3VsYXRpb25Db250YWlucyhw
cmVkaWN0aW9uLCBTcGVjQm9vbGVhbikpCisgICAgICAgIHJldHVybiBmcmVlemUoanNCb29sZWFu
KHRydWUpKTsKKworICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHByZWRpY3Rpb24sIFNwZWNG
dWxsTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIGZyZWV6ZShqc051bWJlcigwKSk7CisKKyAgICBp
ZiAoc3BlY3VsYXRpb25Db250YWlucyhwcmVkaWN0aW9uLCBTcGVjQmlnSW50KSkKKyAgICAgICAg
cmV0dXJuIGZyZWV6ZShtX3ZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKworICAgIGlmIChz
cGVjdWxhdGlvbkNvbnRhaW5zKHByZWRpY3Rpb24sIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkK
KyAgICAgICAgcmV0dXJuIGZyZWV6ZShtX3ZtLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsK
KworICAgIGlmIChzcGVjdWxhdGlvbkNvbnRhaW5zKHByZWRpY3Rpb24sIFNwZWNDZWxsT3RoZXIg
fCBTcGVjT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZyZWV6ZShqc051bGwoKSk7CisKKyAgICBB
U1NFUlQoc3BlY3VsYXRpb25Db250YWlucyhwcmVkaWN0aW9uLCBTcGVjRW1wdHkpKTsKKyAgICBy
ZXR1cm4gZnJlZXplKEpTVmFsdWUoKSk7Cit9CisKIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgR3JhcGg6
OnJlZ2lzdGVyU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25SZXN1bHQmIHJlc3VsdCkKIHsKICAgICBtX3BsYW4ud2Vha1JlZmVyZW5jZXMoKS5hZGRM
YXppbHkoc3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA3
YmQxODgwNjZhZDA2ZDdiZThhZjI1ZjM4YWIxNDg5N2VlZmRlZjIyLi4yOGJmMTUyMDQxZDMzODYz
NzZhNjZkY2JiMWJlOTU1YjliM2Y0NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCkBAIC0yNDQsNiArMjQ0LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnRUb0NvbnN0
YW50KE5vZGUqIG5vZGUsIEZyb3plblZhbHVlKiB2YWx1ZSk7CiAgICAgdm9pZCBjb252ZXJ0VG9D
b25zdGFudChOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0
cm9uZ0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOworCisgICAgLy8gVXNlIHRo
aXMgdG8gcHJvZHVjZSBhIHZhbHVlIHlvdSBrbm93IHdvbid0IGJlIGFjY2Vzc2VkIGJ1dCB0aGUg
Y29tcGlsZXIKKyAgICAvLyBtaWdodCB0aGluayBpcyBsaXZlLiBGb3IgZXhtYXBsZSwgaW4gb3Vy
IG9wX2l0ZXJhdG9yX25leHQgcGFyc2luZworICAgIC8vIHZhbHVlIFZpcnR1YWxSZWdpc3RlciBp
cyBvbmx5IHJlYWQgaWYgd2UgYXJlIG5vdCAiZG9uZSIuIEJlY2F1c2UgdGhlCisgICAgLy8gZG9u
ZSBjb250cm9sIGZsb3cgaXMgbm90IGluIHRoZSBvcF9pdGVyYXRvcl9uZXh0IGJ5dGVjb2RlIHRo
aXMgaXMgbm90CisgICAgLy8gb2J2aW91cyB0byB0aGUgY29tcGlsZXIuCisgICAgLy8gRklYTUU6
IFRoaXMgaXNuJ3QgcXVpdGUgYSB0cnVlIGJvdHRvbSB2YWx1ZS4gRm9yIGV4YW1wbGUsIGFueSBv
YmplY3QKKyAgICAvLyBzcGVjdWxhdGlvbiB3aWxsIG5vdyBiZSBPYmplY3R8T3RoZXIgYXMgdGhp
cyByZXR1cm5zIG51bGwuIFdlIHNob3VsZAorICAgIC8vIGZpeCB0aGlzIHdoZW4gd2UgY2FuIGFs
bG9jYXRlIG9uIHRoZSBDb21waWxlciB0aHJlYWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDYyNworICAgIEZyb3plblZhbHVlKiBib3R0b21WYWx1
ZU1hdGNoaW5nU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpOwogICAgIAogICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgcmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAppbmRleCAyMDJkMjI1MDUzZmE5ZGZiZTVjMjNjNjRiY2Y4YmUzODRlM2U3NjU0
Li43Y2MzNGFlMmQwZDRlNWY4NDhlNjk1NzMwMjQ5MmMxMjFkNzFmZWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApA
QCAtNTksNiArNTksOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxv
Y2soQmFzaWNCbG9jayogYmFzaWNCbG9jaykKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFi
bGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51
bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwu
bnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2Nh
bHMoKSk7CiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxv
Y2FscygpID09IGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsK
KyAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mVG1wcygpID09
IGJhc2ljQmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSk7CisgICAgQVNTRVJUKGJh
c2ljQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZlRtcHMoKSA9PSBiYXNpY0Jsb2NrLT52
YWx1ZXNBdFRhaWwubnVtYmVyT2ZUbXBzKCkpOworICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZUbXBzKCkgPT0gYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWls
Lm51bWJlck9mVG1wcygpKTsKIAogICAgIG1fYWJzdHJhY3RWYWx1ZXMucmVzaXplKCk7CiAKQEAg
LTE2MSw2ICsxNjQsMTAgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgp
CiAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsK
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwog
ICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLm51bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0SGVhZC50bXAoaSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0VGFpbC50bXAoaSkuY2xlYXIoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKQEAg
LTE3NSwxMyArMTgyLDkgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgp
CiAgICAgICAgIGJsb2NrLT5jZmFUaGlua3NTaG91bGRUcnlDb25zdGFudEZvbGRpbmcgPSBmYWxz
ZTsKICAgICAgICAgYmxvY2stPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVj
dHVyZXNBcmVXYXRjaGVkOwogICAgICAgICBibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRl
QXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYmxvY2stPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKLSAg
ICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAg
ICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLSAgICAgICAg
fQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmxv
Y2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGkp
LmNsZWFyKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0
SGVhZC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZFtpXS5j
bGVhcigpOworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXS5jbGVhcigpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0yMzksNyArMjQyLDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAgICAgICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAg
ICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYmxvY2sgdHJh
bnNmZXJzIHRoZSB2YWx1ZSBmcm9tIGhlYWQgdG8gdGFpbC4KLSAgICAgICAgICAgICAgICBkZXN0
aW5hdGlvbiA9IHZhcmlhYmxlQXQoaW5kZXgpOworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gYXRJbmRleChpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCkBAIC0zMDQsNyArMzA3LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxb
aV0gPSB2YXJpYWJsZUF0KGkpOworICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbFtpXSA9
IGF0SW5kZXgoaSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKE5vZGVBYnN0cmFjdFZhbHVl
UGFpciYgdmFsdWVBdFRhaWwgOiBibG9jay0+c3NhLT52YWx1ZXNBdFRhaWwpCkBAIC0zNDMsNiAr
MzQ2LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pCiAgICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBw
b2ludGVyRHVtcChmcm9tKSwgIiB0byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFT
U0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJp
YWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCkpOworICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZU
bXBzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZlRtcHMoKSk7CiAgICAgCiAgICAg
Ym9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgCkBAIC0zNTIsMTQgKzM1Niw5IEBAIGJvb2wgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRv
KQogICAgIAogICAgIHN3aXRjaCAobV9ncmFwaC5tX2Zvcm0pIHsKICAgICBjYXNlIFRocmVhZGVk
Q1BTOiB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBmcm9t
LT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewotICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+dmFsdWVzQXRIZWFkLmFy
Z3VtZW50KGFyZ3VtZW50KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJl
dHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hcmd1bWVudChhcmd1
bWVudCksIHRvLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpLCBmcm9tLT52YXJp
YWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgZm9yIChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGZyb20tPnZhcmlhYmxlc0F0VGFp
bC5udW1iZXJPZkxvY2FscygpOyArK2xvY2FsKSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVl
JiBkZXN0aW5hdGlvbiA9IHRvLT52YWx1ZXNBdEhlYWQubG9jYWwobG9jYWwpOwotICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhkZXN0aW5hdGlvbiwgZnJv
bS0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2FsKSwgdG8tPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChs
b2NhbCksIGZyb20tPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCkpOworICAgICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0by0+
dmFsdWVzQXRIZWFkLmF0KGluZGV4KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJp
YWJsZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hdChpbmRl
eCksIHRvLT52YXJpYWJsZXNBdEhlYWQuYXQoaW5kZXgpLCBmcm9tLT52YXJpYWJsZXNBdFRhaWwu
YXQoaW5kZXgpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKaW5kZXgg
MTg2NWU2YTFlZmZjM2RhYWVmZTU4NGNhODYyYzQ5YmMzNjg1ODUwMC4uYzVkMDI2ODczZTAxMGQw
N2YzODExYzZjNGZlZjU2NmUxY2E3MGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaApAQCAtMTU4LDEwICsxNTgsMTIgQEAg
cHVibGljOgogICAgIAogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+JiB2YXJpYWJsZXNGb3JE
ZWJ1Z2dpbmcoKTsKIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zhcmlh
Ymxlcy5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mQXJndW1lbnRzKCk7IH0KICAgICB1bnNpZ25lZCBu
dW1iZXJPZkxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLm51bWJlck9mTG9jYWxz
KCk7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlRtcHMoKSBjb25zdCB7IHJldHVybiBtX3Zhcmlh
Ymxlcy5udW1iZXJPZlRtcHMoKTsgfQogICAgIAotICAgIEFic3RyYWN0VmFsdWUmIHZhcmlhYmxl
QXQoc2l6ZV90IGluZGV4KQorICAgIEFic3RyYWN0VmFsdWUmIGF0SW5kZXgoc2l6ZV90IGluZGV4
KQogICAgIHsKICAgICAgICAgYWN0aXZhdGVWYXJpYWJsZUlmTmVjZXNzYXJ5KGluZGV4KTsKICAg
ICAgICAgcmV0dXJuIGZhc3RGb3J3YXJkKG1fdmFyaWFibGVzW2luZGV4XSk7CkBAIC0xNjksMTcg
KzE3MSwxNyBAQCBwdWJsaWM6CiAKICAgICBBYnN0cmFjdFZhbHVlJiBvcGVyYW5kKE9wZXJhbmQg
b3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1fdmFyaWFibGVzLm9w
ZXJhbmRJbmRleChvcGVyYW5kKSk7CisgICAgICAgIHJldHVybiBhdEluZGV4KG1fdmFyaWFibGVz
Lm9wZXJhbmRJbmRleChvcGVyYW5kKSk7CiAgICAgfQogICAgIAogICAgIEFic3RyYWN0VmFsdWUm
IGxvY2FsKHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZUF0KG1f
dmFyaWFibGVzLmxvY2FsSW5kZXgoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGF0SW5kZXgobV92
YXJpYWJsZXMubG9jYWxJbmRleChpbmRleCkpOwogICAgIH0KICAgICAKICAgICBBYnN0cmFjdFZh
bHVlJiBhcmd1bWVudChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gdmFyaWFi
bGVBdChtX3ZhcmlhYmxlcy5hcmd1bWVudEluZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVybiBh
dEluZGV4KG1fdmFyaWFibGVzLmFyZ3VtZW50SW5kZXgoaW5kZXgpKTsKICAgICB9CiAgICAgCiAg
ICAgLy8gQ2FsbCB0aGlzIGJlZm9yZSBiZWdpbm5pbmcgQ0ZBIHRvIGluaXRpYWxpemUgdGhlIGFi
c3RyYWN0IHZhbHVlcyBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMYXp5SlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1
ZS5oCmluZGV4IGY1ZWVmMmYzZGY3MjEyOWE4MzhjNzY4NmUyNmI5NjBiNTBmNTgxZWUuLjdhMzM2
NjZhYTcxYTFmNjY2Yzk0YjI4YjY0NDc0ODRkNjdiYmI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBMYXp5SlNWYWx1ZSBuZXdTdHJpbmcoR3JhcGgmLCBjb25zdCBTdHJpbmcmKTsKIAog
ICAgIExhemluZXNzS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgU3Bl
Y3VsYXRlZFR5cGUgc3BlY3VsYXRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS25v
d25WYWx1ZSA/IFNwZWNCeXRlY29kZVRvcCA6IFNwZWNTdHJpbmc7IH0KICAgICAKICAgICBGcm96
ZW5WYWx1ZSogdHJ5R2V0VmFsdWUoR3JhcGgmKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKaW5kZXggZTU2YzVmZmMxZGMzMzllNzc4ODY0YTcwNDE4NTEyMjlhOTBm
NzM1OC4uYjM5ZGI2NjE2ZTZiMzQ3YzgyOGEyY2I1MGY5NDJmMjFjODZjZjZkZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTUyMCw2ICs1MjAsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNDb25zdGFudCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAg
ICAgY2FzZSBDaGVja0lzQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKICAgICAg
ICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgpAQCAt
MTg1MSw3ICsxODUyLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgQ2hlY2tDZWxsOgorICAg
ICAgICBjYXNlIENoZWNrSXNDb25zdGFudDoKKyAgICAgICAgICAgIHJldHVybiBpc0NlbGwoY2hp
bGQxKCkudXNlS2luZCgpKTsKICAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAg
ICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlv
bjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5M2QxN2JlMzM5
NmQyZGQ1MDgxN2E0ZWY2MTNkOTBiZmRhNDViMzc2Li5jMzY1MTFkN2FlNzE3MWE0YzEyMzA4MTBh
Njg1M2I0MWIxYThiOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBc
CiAgICAgbWFjcm8oTW92SGludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFpvbWJp
ZUhpbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhFeGl0T0ssIE5vZGVNdXN0R2Vu
ZXJhdGUpIC8qIEluZGljYXRlcyB0aGF0IGV4aXQgc3RhdGUgaXMgaW50YWN0LiAqLyBcCisgICAg
bWFjcm8oRXhpdE9LLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBJbmRpY2F0ZXMgdGhhdCBleGl0IHN0
YXRlIGlzIGludGFjdCBhbmQgaXQgaXMgc2FmZSB0byBleGl0IGJhY2sgdG8gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgZXhpdCBvcmlnaW4uICovIFwKICAgICBtYWNybyhQaGFudG9tLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2ssIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFVzZWQgaWYg
d2Ugd2FudCBqdXN0IGEgdHlwZSBjaGVjayBidXQgbm90IGxpdmVuZXNzLiBOb24tY2hlY2tpbmcg
dXNlcyB3aWxsIGJlIHJlbW92ZWQuICovXAogICAgIG1hY3JvKENoZWNrVmFyYXJncywgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSAvKiBVc2VkIGlmIHdlIHdhbnQganVzdCBhIHR5
cGUgY2hlY2sgYnV0IG5vdCBsaXZlbmVzcy4gTm9uLWNoZWNraW5nIHVzZXMgd2lsbCBiZSByZW1v
dmVkLiAqL1wKQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlSGFzVmFyQXJncykgXAotICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAorICAgIG1hY3JvKENoZWNrSXNDb25zdGFudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKENoZWNrTm90RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBc3NlcnRO
b3RFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDFkZjM5NDMyNDFkNWFmNzkzMTk4ZWY5
YzcxMjczZTc1OGEwYTIyNmEuLjA4NWRjNTMwYjNiYzM3OWZiNGYzZTYwOTFjYjVjNjUyMDI3NTg3
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAKQEAgLTE1OSw5ICsxNTksMTUgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2Rl
QmxvY2sKICNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIChjYWxsSW5zdHJ1Y3Rp
b24uaXNXaWRlMTYoKSA/IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5h
bWUjI19yZXR1cm5fbG9jYXRpb24pIDogKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUzMigpID8gTExJ
bnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlv
bikgOiBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0
aW9uKSkpCiAKICAgICAgICAgc3dpdGNoICh0cnVlQ2FsbGVyQ2FsbEtpbmQpIHsKLSAgICAgICAg
Y2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6Ci0gICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJ
TlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpOworICAgICAgICBjYXNlIElubGluZUNhbGxGcmFt
ZTo6Q2FsbDogeworICAgICAgICAgICAgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09
IG9wX2NhbGwpCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NB
VElPTihvcF9jYWxsKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNv
ZGVJRCgpID09IG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9
IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVuKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGNhbGxJbnN0cnVjdGlvbi5vcGNvZGVJRCgpID09IG9wX2l0ZXJhdG9yX25leHQpCisg
ICAgICAgICAgICAgICAganVtcFRhcmdldCA9IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVy
YXRvcl9uZXh0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
SW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CiAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gTExJ
TlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTIzOSw2ICsyNDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2Fs
bGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogICAgICAgICB9CiAgICAg
fQogCisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOwogICAgIHJldHVybiBqdW1wVGFyZ2V0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGZlNDljMzEzMDM2OTFiNmJmMjRjYTllYWI4NTJh
ZTEzOGJlNjZmMTIuLjA1YWVhYjE1NTBiYTJjMWNkMGIzNTIzNGY1MzBiZDRkOWU1MTg0ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMTA0LDYgKzExMDQsMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29k
ZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6IHsKKyAgICAgICAg
ICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+bGF6eUpTVmFsdWUoKS5zcGVjdWxhdGVk
VHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBT
dHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgICAg
ICBjYXNlIFRvU3RyaW5nOgpAQCAtMTMwOCw3ICsxMzE0LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKLSAg
ICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKICAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAg
ICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFn
ZSBvZiBjb21waWxhdGlvbi4KICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX2N1cnJl
bnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBwcmVkaWN0aW9uIHByb3BhZ2F0aW9uIik7
CkBAIC0xMzY1LDcgKzEzNzAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50
TWF5YmU6CiAgICAgICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOgogICAgICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOgotICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgY2FzZSBDaGVja0lz
Q29uc3RhbnQ6CiAgICAgICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKICAgICAgICAgY2FzZSBBc3Nl
cnROb3RFbXB0eToKICAgICAgICAgY2FzZSBDaGVja0lkZW50OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA4ZWNkMzUzMWZjMzBlMjVjMDZlYWE4
ODYyYmYzZmIzMzg1ZGNkYzY5Li5jNTgwOGYwYzIxNTBkNzNlMDFjYjNlOGQ2Yjg1Mzc4OGQ2M2Yx
MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApA
QCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYg
c3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRD
bG9zdXJlVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsTGV4
aWNhbFZhcmlhYmxlOgotICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgIGNhc2UgQ2hlY2tJc0NvbnN0
YW50OgogICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKICAgICBjYXNlIEFzc2VydE5vdEVtcHR5Ogog
ICAgIGNhc2UgQ2hlY2tJZGVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZGU3NjMyMzdmYWVhNzQzMDEwM2U5Mjk3NjQ5MzA0MjJj
NjFiNjNhNi4uNTkxMGI4ZmM0MGI3NzFjZDRmYjQwMmU4NjE0YTI2MTQ0MmRhMWYwNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTky
MzIsMTAgKzkyMzIsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVyZUNoZWNr
KE5vZGUqIG5vZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICB9CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0NlbGwoTm9kZSogbm9kZSkKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lzQ29uc3RhbnQoTm9kZSogbm9kZSkKIHsKLSAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZENlbGwsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3By
KCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90
RXF1YWwsIGNlbGwuZ3ByKCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSkpOworICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRDZWxsLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdwcigp
KSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBjZWxsLmdwcigpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQoIW5vZGUtPmNvbnN0YW50KCktPnZhbHVlKCkuaXNDZWxsKCkg
fHwgIW5vZGUtPmNvbnN0YW50KCktPnZhbHVlKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBv
cGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyA9
IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkQ2FjaGUsIHJlZ3MsIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlZ3MuZ3ByKCksIFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUobm9kZS0+Y29uc3RhbnQoKS0+dmFsdWUoKSkpKSk7CisjZWxzZQorICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZENhY2hlLCByZWdzLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCByZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1t
MzIobm9kZS0+Y29uc3RhbnQoKS0+dmFsdWUoKS50YWcoKSkpKTsKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRDYWNoZSwgcmVncywgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaDMyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgcmVncy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW0zMihub2Rl
LT5jb25zdGFudCgpLT52YWx1ZSgpLnBheWxvYWQoKSkpKTsKKyNlbmRpZgorICAgIH0KKworCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCBmNzUzNTg5NDVlYWJhMGZiYzQ1MTllZjBkOTIyYWIyN2Jk
ZGQ5NTkyLi44NWU4ZTc3M2U5ZDliNTcwMWZkYTQ4ZDFlMDc4YTlkN2NiMWY0NTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzk5LDcg
KzEzOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlSXNPYmplY3RPck51bGwoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUlzRnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVR5
cGVPZihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVDaGVja0lzQ29uc3RhbnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrTm90
RW1wdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrU3RydWN0dXJlKE5vZGUqKTsKICAg
ICB2b2lkIGVtaXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiwgR1BSUmVnIGNlbGxHUFIsIEdQUlJlZyB0
ZW1wR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDYyNWNhMGVhNmQ3MjQ0ZmY4YzcyNDM2OTBlZDk1ODBhNDI3
MTU1YTYuLjhhZjEwYjc5ZWY1YTc0ZTZmMzM4MGY5MGZjNTM3MTViYmFhMWFkOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMzQwMCw4ICszNDAwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tD
ZWxsOiB7Ci0gICAgICAgIGNvbXBpbGVDaGVja0NlbGwobm9kZSk7CisgICAgY2FzZSBDaGVja0lz
Q29uc3RhbnQ6IHsKKyAgICAgICAgY29tcGlsZUNoZWNrSXNDb25zdGFudChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAxZTYwMmE3NTgxMjQ5MWU5YTRlMjg3NWM2MDg4ZTZh
OGIwNDY5OTc2Li5hZDY1YzEyYWJlZjI0ODA5ZDI3MjNiYmI3MjUzOTVhNDUzNzc1NzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTM3MzIsOCArMzczMiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNrQ2Vs
bDogewotICAgICAgICBjb21waWxlQ2hlY2tDZWxsKG5vZGUpOworICAgIGNhc2UgQ2hlY2tJc0Nv
bnN0YW50OiB7CisgICAgICAgIGNvbXBpbGVDaGVja0lzQ29uc3RhbnQobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAppbmRleCAwZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiLi45YWU5ODA0
Yzc1Yjk1ZWM1NjFlZDJmMWE1MmI5ZGVjOThjODQ1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBkYXRhTG9nRigiKSA9PSAoJXMgPSAiLCAjcmlnaHQpOyBcCiAgICAgICAgICAgICBkYXRh
TG9nKHJpZ2h0KTsgXAogICAgICAgICAgICAgZGF0YUxvZ0YoIikgKCVzOiVkKS5cbiIsIF9fRklM
RV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgICAgIGRhdGFMb2coIlxuXG5cbiIpOyBcCisgICAg
ICAgICAgICBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG51bGxwdHIpLT5kdW1wQnl0ZWNv
ZGUoKTsgXAogICAgICAgICAgICAgZHVtcEdyYXBoSWZBcHByb3ByaWF0ZSgpOyBcCiAgICAgICAg
ICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BS
RVRUWV9GVU5DVElPTiwgI2xlZnQgIiA9PSAiICNyaWdodCk7IFwKICAgICAgICAgICAgIENSQVNI
KCk7IFwKQEAgLTU2OCw2ICs1NzAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wZXJhbmRz
PHNpemVfdD4gZ2V0TG9jYWxQb3NpdGlvbnMoT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVz
QXRIZWFkKTsKICAgICAgICAgICAgIE9wZXJhbmRzPHNpemVfdD4gc2V0TG9jYWxQb3NpdGlvbnMo
T3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6
dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLnRtcChpKSB8fCBibG9jay0+
dmFyaWFibGVzQXRIZWFkLnRtcChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CisgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQorICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgoT3BlcmFuZDo6dG1wKGkpLCBibG9jayksICFibG9jay0+dmFyaWFi
bGVzQXRUYWlsLnRtcChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLnRtcChpKS0+YWNjZXNz
ZXNTdGFjayhtX2dyYXBoKSk7CisKKyAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0aW9ucy50
bXAoaSkgPSBub3RTZXQ7CisgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMudG1wKGkp
ID0gbm90U2V0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkg
fHwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayhtX2dy
YXBoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BT
KQpAQCAtNzE2LDYgKzcyNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9mb3JtID09IExvYWRTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIAorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVz
QXRIZWFkLm51bWJlck9mVG1wcygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGVja09wZXJh
bmQoCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9j
YWxQb3NpdGlvbnMsIE9wZXJhbmQ6OnRtcChpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJP
ZkFyZ3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBjaGVja09wZXJhbmQoCiAgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9ucywgc2V0TG9jYWxQb3NpdGlv
bnMsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CkBAIC05NDQs
NyArOTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tPcGVyYW5kKAogICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jaywgT3BlcmFuZHM8c2l6ZV90PiYgZ2V0TG9jYWxQb3NpdGlvbnMsCi0g
ICAgICAgIE9wZXJhbmRzPHNpemVfdD4mIHNldExvY2FsUG9zaXRpb25zLCBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCkKKyAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMs
IE9wZXJhbmQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIGlmIChnZXRMb2NhbFBvc2l0aW9ucy5v
cGVyYW5kKG9wZXJhbmQpID09IG5vdFNldCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0ODliMDZkNThl
YmFmOGZkMjY2M2JiZjcxNGEwNGE2NzZhODQ5NTcyLi4yYzY5NTFkY2U1Njk3NWIxNzhmNDA1ODY0
ZmI4YmIzMGVmOWY1YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIElu
dmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgotICAgIGNhc2UgQ2hlY2tD
ZWxsOgorICAgIGNhc2UgQ2hlY2tJc0NvbnN0YW50OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgog
ICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKICAgICBjYXNlIEFzc2VydE5vdEVtcHR5OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGU1NGI2ZjYz
ZjZkNjFjMzI3NWM0ODAwYTM5NTIyYjEwMzkxZDBhNjMuLmNmMjBlODg3ZDExYzJkN2I4YTcxYmMx
ZWM0YWE2YWJhYjk0ZjY5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTg4Miw4ICs4ODIsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENoZWNrU3RydWN0dXJlT3JFbXB0eToKICAgICAgICAgICAgIGNvbXBpbGVDaGVja1N0cnVjdHVy
ZU9yRW1wdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrQ2VsbDoK
LSAgICAgICAgICAgIGNvbXBpbGVDaGVja0NlbGwoKTsKKyAgICAgICAgY2FzZSBDaGVja0lzQ29u
c3RhbnQ6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tJc0NvbnN0YW50KCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDaGVja05vdEVtcHR5OgogICAgICAgICAgICAgY29tcGls
ZUNoZWNrTm90RW1wdHkoKTsKQEAgLTM0MzksNyArMzQzOSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKKyAgICB2b2lkIGNv
bXBpbGVDaGVja0lzQ29uc3RhbnQoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKaW5kZXggNGE4YjFlNTgxNDQxZmRhNjg3NmU2NTJjOTg0NjAxYTJiM2I3OWQz
NC4uOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEwYzgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzNyw2ICsxMzcsNyBAQCBtb2R1bGUgRFNM
CiAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiR2V0QnlWYWxIaXN0b3J5
LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9NZXRhZGF0YS5yYgppbmRleCA3Y2QxNWQzMTVkNjM5MGFiYTI2MzVlOTYzNTlmODkwZTJl
YjcxYTk1Li5jMDc3NWQ4ZTFiMTA1MDJkZjAxYTc0YWYwYzZkZWI0YTg3NWNjNjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKQEAgLTY3LDYgKzY3LDcg
QEAgY2xhc3MgTWV0YWRhdGEKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0YWRhdGEp
OwogCiAgICAgcHVibGljOgorICAgICAgICAje29wLm9wY29kZUlEfQogICAgICAgICBNZXRhZGF0
YShjb25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29wIiBpZiBpbml0c30pI3tpbml0
c30geyB9CiAKICN7ZmllbGRzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0
aW9uLnJiCmluZGV4IDliNWVlOTA5NmVlNzFiMWIwZDNlZDdmN2NkMThkYjA2ZmNiMzVmY2YuLmY4
MzgwZWQ1NzVkMzEzYzZlYTA2YWI1ZDcyYzI1YTg2Nzc2ZDljYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTUzLDcgKzUzLDE3IEBAIGNsYXNzIFNl
Y3Rpb24KICAgZW5kCiAKICAgZGVmIHNvcnQhCi0gICAgICBAb3Bjb2RlcyA9IEBvcGNvZGVzLnNv
cnQgeyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/IDAgOiAx
IDogLTEgfQorICAgICAgQG9wY29kZXMgPSBAb3Bjb2Rlcy5zb3J0IHsgfGEsIGJ8CisgICAgICAg
ICAgcmVzdWx0ID0gbmlsCisgICAgICAgICAgaWYgYS5jaGVja3BvaW50cyBvciBiLmNoZWNrcG9p
bnRzCisgICAgICAgICAgICAgIHJhaXNlICJCeXRlY29kZXMgd2l0aCBjaGVja3BvaW50cyBzaG91
bGQgaGF2ZSBtZXRhZGF0YTogI3thLm5hbWV9IiBpZiBhLmNoZWNrcG9pbnRzIGFuZCBhLm1ldGFk
YXRhLmVtcHR5PworICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGggY2hlY2twb2lu
dHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7Yi5uYW1lfSIgaWYgYi5jaGVja3BvaW50cyBhbmQg
Yi5tZXRhZGF0YS5lbXB0eT8KKyAgICAgICAgICAgICAgcmVzdWx0ID0gYS5jaGVja3BvaW50cyA/
IGIuY2hlY2twb2ludHMgPyAwIDogLTEgOiAxCisgICAgICAgICAgZWxzaWYKKyAgICAgICAgICAg
ICAgcmVzdWx0ID0gYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/IDAgOiAx
IDogLTEgCisgICAgICAgICAgZW5kCisgICAgICAgICAgcmVzdWx0CisgICAgICB9CiAgICAgICBA
b3Bjb2Rlcy5lYWNoKCY6Y3JlYXRlX2lkISkKICAgZW5kCiAKQEAgLTczLDYgKzgzLDE4IEBAIGNs
YXNzIFNlY3Rpb24KICAgICAgIGVuZAogCiAgICAgICBpZiBjb25maWdbOmVtaXRfaW5fc3RydWN0
c19maWxlXQorICAgICAgICAgIGkgPSAwCisgICAgICAgICAgd2hpbGUgdHJ1ZQorICAgICAgICAg
ICAgICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50cworICAgICAgICAgICAgICAgICAgb3V0IDw8
ICJcbiIKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBOVU1CRVJfT0ZfI3tjb25m
aWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fV0lUSF9DSEVDS1BPSU5UUyAje2l9XG4iCisgICAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICBp
ICs9IDEKKyAgICAgICAgICBlbmQKKyAgICAgICAgICBvdXQgPDwgIlxuIgorCiAgICAgICAgICAg
b3V0LndyaXRlKCIjZGVmaW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVu
dF19X01FVEFEQVRBX1NJWkUobWFjcm8pIFxcXG4iKQogICAgICAgICAgIGkgPSAwCiAgICAgICAg
ICAgd2hpbGUgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5YmY5
YTFhMTk1YzNlODM4NjRjMWNhMTc4NDA4YTViMGYuLjhiM2EyMzhhNGRhZjFmYzY3OTE0MGQ4YmJl
Yzc3MDliODU2OGJiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI2MSw3ICsy
NjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIG1fbGFi
ZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKV0gPSBsYWJlbCgpOwogCiAgICAgICAgIGlmIChK
SVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiT2xkIEpJVCBlbWl0
dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWRl
YnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJCYXNlbGluZSBKSVQgZW1pdHRp
bmcgY29kZSBmb3IgIiwgbV9ieXRlY29kZUluZGV4LCAiIGF0IG9mZnNldCAiLCAobG9uZylkZWJ1
Z09mZnNldCgpKTsKIAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtNDM4LDYgKzQzOCw5IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9pbnRlcm5hbF9maWVs
ZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9pbnRlcm5hbF9maWVsZCkKIAorICAgICAgICBE
RUZJTkVfT1Aob3BfaXRlcmF0b3Jfb3BlbikKKyAgICAgICAgREVGSU5FX09QKG9wX2l0ZXJhdG9y
X25leHQpCisKICAgICAgICAgREVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5FX09QKG9w
X3JzaGlmdCkKICAgICAgICAgREVGSU5FX09QKG9wX3Vuc2lnbmVkKQpAQCAtNTI1LDcgKzUyOCw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICByYXJl
Q2FzZVByb2ZpbGUgPSAmcmFyZUNhc2VQcm9maWxlcy5hdChieXRlY29kZUNvdW50SGF2aW5nU2xv
d0Nhc2UpOwogCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAg
IGRhdGFMb2dMbigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJ
bmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICBk
YXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNv
ZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAKICAgICAgICAg
aWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEZvckJ5
dGVjb2RlU2xvd1BhdGgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpLCBsYWJlbCgpKTsKQEAgLTU4
OSw2ICs1OTIsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfdG9fc2NvcGUpCiAKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2l0ZXJhdG9yX29wZW4pCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pdGVyYXRv
cl9uZXh0KQorCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHVuc2lnbmVkKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChpbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9TTE9XX09QKGRlYykKQEAgLTYyNiw4ICs2MzIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMoKQogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJBdCAiLCBmaXJzdFRvLCAiIHNsb3c6ICIsIGl0ZXIgLSBtX3Nsb3dDYXNl
cy5iZWdpbigpLCAiXG4iKTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uo
aXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvICE9IGl0ZXItPnRvLCAiTm90IGVu
b3VnaCBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvID09IChpdGVyIC0gMSktPnRvLCAiVG9vIG1h
bnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRv
Lm9mZnNldCgpICE9IGl0ZXItPnRvLm9mZnNldCgpLCAiTm90IGVub3VnaCBqdW1wcyBsaW5rZWQg
aW4gc2xvdyBjYXNlIGNvZGVnZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRShmaXJzdFRvLm9mZnNldCgpID09IChpdGVyIC0gMSktPnRvLm9mZnNldCgpLCAiVG9vIG1h
bnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwogICAgICAgICAKICAgICAg
ICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKCZyYXJlQ2FzZVByb2ZpbGUtPm1fY291bnRlcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzA3MzU1YzZkNzExODJhYTA3MjlhMjc0OTEwMDRm
NDVlMWVhNmFjMS4uNzU4N2IwMWQ2ZDMwYjk1YzYwMWU3ZmI2ZTEwYjE0NGE2NTI2NTBmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yOTcsNiArMjk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAKKyAg
ICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOworICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKKwogICAgICAgICB2b2lkIGFkZFNsb3dD
YXNlKEp1bXApOwogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKGNvbnN0IEp1bXBMaXN0Jik7CiAg
ICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoKTsKQEAgLTY3Niw2ICs2NzksMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOwog
CisgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworCiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNo
aWZ0U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIApAQCAtOTExLDYgKzkxOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOwogICAgICAgICBW
ZWN0b3I8TGFiZWw+IG1fbGFiZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIExh
YmVsPiBtX2NoZWNrcG9pbnRMYWJlbHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkR2VuZXJh
dG9yPiBtX2dldEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlWYWxHZW5lcmF0b3I+IG1f
Z2V0QnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBt
X2dldEJ5SWRzV2l0aFRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRl
eCBlMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNiMjBiODY2Li5hYjRkOGIzYzgyMmMw
ZThiNTQ4MTRkYzlkNGIzMmQ3ZTI1ODk3YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBVU0UoSlNWQUxVRTY0KQogI2luY2x1ZGUg
IkpJVC5oIgogCisjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKKyNp
bmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFt
ZVNodWZmbGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgpAQCAtNDIsOCArNDQsOCBAQAogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAj
aW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIK
LSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTEsNyArNTMsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjplbWl0UHV0Q2FsbFJlc3VsdChjb25zdCBP
cCYgYnl0ZWNvZGUpCiB7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jaykpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9kc3QpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25Gb3IoYnl0ZWNv
ZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZpcnR1YWxSZWdpc3RlcigpLCByZWdU
MCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtNjEsMjAgKzYzLDIxIEBAIHN0ZDo6
ZW5hYmxlX2lmX3Q8CiAsIHZvaWQ+CiBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBi
eXRlY29kZSwgQ2FsbExpbmtJbmZvKikKIHsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50ID0gbV9i
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJnQ291bnQgPSBieXRlY29kZS5tX2Fy
Z2M7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0ZWNvZGUu
bV9hcmd2KTsKKyAgICBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpOworICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5
dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX2NhbGwg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldEluY2x1ZGluZ1RoaXMoMCkpLCByZWdUMCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgICAgIHN0b3JlMzIocmVnVDAsIG1l
dGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLmFkZHJlc3NPZkxhc3RTZWVuU3Ry
dWN0dXJlSUQoKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAsIGFycmF5UHJvZmlsZUZvcihtZXRh
ZGF0YSwgY2hlY2twb2ludCkuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAg
ICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVn
aXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudEluY2x1ZGluZ1RoaXMp
LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiB9CiAKIApAQCAtMjA3
LDcgKzIxMCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiB7CiAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0ZWNvZGUubV9jYWxsZWU7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGNhbGxlZUZvcihieXRlY29kZSwgbV9ieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKICAgICAvKiBDYWxsZXIgYWx3YXlzOgogICAgICAg
ICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNhbGxGcmFtZS4KQEAgLTIz
NCw5ICsyMzcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KICAgICBzdG9y
ZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSk7CiAKLSAgICBpZiAoY29tcGlsZUNhbGxFdmFsKGJ5dGVjb2RlKSkgewor
ICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAgICAgRGF0YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAg
SnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgcmVnVDAsIGFkZHJl
c3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwpAQCAtMzgw
LDYgKzM4MiwxODQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBjb21waWxlT3BDYWxs
U2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlu
a0luZm9JbmRleCsrKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAo
WyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAg
ICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93OworICAg
ICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2Owor
ICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMy
OworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSkoKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlGYXN0RnVuY3Rp
b24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5v
dEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGNvbXBpbGVPcENh
bGw8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwor
ICAgIGFkdmFuY2VUb05leHRDaGVja3BvaW50KCk7CisgICAgLy8gY2FsbCByZXN1bHQgKGl0ZXJh
dG9yKSBpcyBpbiByZWdUMAorCisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmdm0oKS5w
cm9wZXJ0eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9uZXh0KTsKKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7Cit9CisK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0
ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7Cisg
ICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFZSZWcgPSBieXRlY29k
ZS5tX25leHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5h
bWVzLT5uZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5l
eHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKworICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFzdEZ1
bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkp
IHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25h
cnJvdzsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X3dpZGUxNjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X3dpZGUzMjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fbmV4dCwgcmVnVDApOworICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5v
dEVtcHR5KHJlZ1QwKTsKKyAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cnlGYXN0RnVuY3Rp
b24pPihpbnN0cnVjdGlvbiwgJm1ldGFkYXRhKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKHRyeUZhc3RGdW5jdGlvbik7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5v
dEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGdlbmVyaWNDYXNl
LmxpbmsodGhpcyk7CisgICAgb3I4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljKSksIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9pdGVy
YXRpb25NZXRhZGF0YS5zZWVuTW9kZXMpKTsKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0b3JO
ZXh0PihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBhZHZhbmNlVG9O
ZXh0Q2hlY2twb2ludCgpOworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRvbmUsIHZhbHVlIH0gSlNP
YmplY3QpIGluIHJlZ1QwCisKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMDsKKyAgICBHUFJS
ZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QyOworICAgIEdQUlJlZyBkb25lR1BSID0gcmVnVDE7Cisg
ICAgLy8gaXRlclJlc3VsdEdQUiB3aWxsIGdldCB0cmFzaGVkIGJ5IHRoZSBmaXJzdCBnZXQgYnkg
aWQgYmVsb3cuCisgICAgbW92ZSh2YWx1ZUdQUiwgaXRlclJlc3VsdEdQUik7CisKKyAgICB7Cisg
ICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyUmVzdWx0R1BSKTsKKworICAg
ICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpOworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7Cisg
ICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnBy
b3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpT
VmFsdWVSZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fZG9uZSwgZG9uZUdQUik7CisgICAgICAgIGFkdmFuY2VUb05leHRDaGVj
a3BvaW50KCk7CisgICAgfQorCisKKyAgICB7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHJl
Z1QyOworICAgICAgICBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKKyAgICAgICAgY29uc3QgYm9v
bCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBmYWxzZTsKKyAgICAgICAgSnVt
cExpc3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRv
bmVHUFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKwor
ICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpH
ZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVu
ZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAg
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsK
KworICAgICAgICBpdGVyYXRpb25Eb25lLmxpbmsodGhpcyk7CisgICAgfQorCisgICAgZmFzdENh
c2UubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGls
ZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVt
cCgpKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5l
eHQ+KCk7CisgICAgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9uZVZSZWcgPSBieXRlY29k
ZS5tX2RvbmU7CisgICAgICAgIEdQUlJlZyBpdGVyUmVzdWx0R1BSID0gcmVnVDI7CisKKyAgICAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0Owor
ICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7
CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQ
UikpOworCisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlO
YW1lcy0+ZG9uZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIAorICAgICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisg
ICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKKyAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CisgICAgICAgIGVt
aXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAgIG5vdE9iamVj
dC5saW5rKHRoaXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93SXRlcmF0
b3JSZXN1bHRJc05vdE9iamVjdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICB9CisKKyAgICB7ICAgCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVl
OworICAgICAgICBHUFJSZWcgaXRlclJlc3VsdEdQUiA9IHJlZ1QwOworCisgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOwor
ICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZElu
ZGV4KytdOworCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAg
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBp
dGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVu
dGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQorCit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAppbmRleCA5MDY5NmNiZWMxMGUzOTNiOTk3MGYwZWIyMDExOGQyMTk3
NGMzNTI1Li5kMTQwYWFjOWJlMmQ1NDAzZDFiYzBkOTkxMmFlOWUxMDVmODBkNDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0zNjYsNiArMzY2LDI2
IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNv
ZGUpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biopCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggN2RjYmU4ZmEzYWU1Njhj
YmFhNjVjYTQxZTVlMWJhMjc1NjU1MzNmNC4uOWI2YzA1MjQ4YmEyOTI5NmY5OWVkMzc2ZmI5NDgy
OGZiYzkzM2NiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI2
LDcgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKEpJVCkKKyNpbmNsdWRlICJC
eXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
c0lubGluZXMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtMTA1LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUgSklUOjpD
YWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQogCiBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewotICAgIHVpbnQz
Ml90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7
CisgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCkpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJp
dHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
ICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4g
SklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwgZnJhbWUgb24KQEAgLTE4
Myw2ICsxODUsMjcgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aGFzQW55U2xvd0Nhc2VzKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5PiYgc2xvd0Nhc2VzLCBWZWN0b3IKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6YWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKQoreworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQg
bV9ieXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIEFTU0VSVChtX2NvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25BdChtX2J5dGVjb2RlSW5kZXgpLT5oYXNDaGVja3BvaW50cygpKTsKKyAgICBtX2J5dGVj
b2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9ieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0byByZXN1bHQgPSBtX2NoZWNr
cG9pbnRMYWJlbHMuYWRkKG1fYnl0ZWNvZGVJbmRleCwgbGFiZWwoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSklUOjpl
bWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCBqdW1wKQoreworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29k
ZUluZGV4IGlzIHNldCIpOworICAgIEFTU0VSVChtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdCht
X2J5dGVjb2RlSW5kZXgpLT5oYXNDaGVja3BvaW50cygpKTsKKyAgICBtX2J5dGVjb2RlSW5kZXgg
PSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSwgbV9ieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKSArIDEpOworCisgICAgYXV0byBpdGVyID0gbV9jaGVja3BvaW50TGFiZWxz
LmZpbmQobV9ieXRlY29kZUluZGV4KTsKKyAgICBBU1NFUlQoaXRlciAhPSBtX2NoZWNrcG9pbnRM
YWJlbHMuZW5kKCkpOworICAgIGp1bXAubGlua1RvKGl0ZXItPnZhbHVlLCB0aGlzKTsKK30KKwog
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YWRkU2xvd0Nhc2UoSnVtcCBqdW1wKQogewogICAgIEFT
U0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxs
ZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5k
ZXggaXMgc2V0LgpAQCAtMzE5LDcgKzM0Miw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgaWYgKCFzaG91bGRFbWl0
UHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KG1ldGFkYXRhLm1fcHJvZmlsZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh2YWx1ZVBy
b2ZpbGVGb3IobWV0YWRhdGEsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpKTsKIH0KIAog
aW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoUmVnaXN0ZXJJ
RCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA3
YWUxNTBjYzY2MTA3NjJiYWNjOGJlNDIyMDczYWFkNjRhYjMxMTkxLi5hNWUyYTI0N2NmMTU0ZGE0
NmViMzNkZmJiZjBlMzM2MGQzNmY1NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzNCw2ICsxMzQsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0
KiBnbG8KICAgICBBU1NFUlQodm0udGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogfQogCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBp
bnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworfQorCiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhlZmI1YjVhYzk4MGFlZTZjNTUyMzQ0MzdjOTAy
ODk1ODkwMjI2NjUuLjlmY2M0MWRlYzQ1ODJjOTY1MjkyMzY1NWRhOGYzMDI2OTVkZjcwMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTUsNiArMTU1
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIo
Vk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhj
ZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZShWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbihWTSopIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21U
aHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBX
VEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA4ZGVhN2YyNzhlNzY2MmU1MDMxNGNlYjliMDgzMzlmODdiZmRhNDk3Li43OWZhNjAyMTcyYjEx
YTQ4NGM0NGI0YThlNGJmYzZhNTJlM2JiZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2lu
Y2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKICNpbmNsdWRl
ICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgiCkBAIC04Miw2ICs4Myw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52
bSgpOyBcCiAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwK
KyAgICBkYXRhTG9nTG5JZihMTElOVF9UUkFDSU5HICYmIE9wdGlvbnM6OnRyYWNlTExJbnRTbG93
UGF0aCgpLCAiQ2FsbGluZyBzbG93IHBhdGggIiwgV1RGX1BSRVRUWV9GVU5DVElPTik7IFwKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKQogCiAjaWZuZGVmIE5E
RUJVRwpAQCAtNjkzLDcgKzY5NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfaWRfZGlyZWN0KQogfQogCiAKLXN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlw
ZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0
YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCitzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvbiogcGMsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBKU0Nl
bGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7
CiAKQEAgLTc0MSw0NCArNzQzLDM5IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlw
ZUNhY2hlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ29kCiAgICAgewog
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAg
ICAgICAgaWYgKHNsb3QuaXNVbnNldCgpKQotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuc2V0VW5zZXRNb2RlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBtZXRhZGF0YS5zZXRV
bnNldE1vZGUoc3RydWN0dXJlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
c2xvdC5pc1ZhbHVlKCkpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuc2V0
UHJvdG9Mb2FkTW9kZShzdHJ1Y3R1cmUsIG9mZnNldCwgc2xvdC5zbG90QmFzZSgpKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLnNldFByb3RvTG9hZE1vZGUoc3RydWN0dXJlLCBvZmZzZXQsIHNsb3Qu
c2xvdEJhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrKTsKIH0KIAotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5
X2lkKQorc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlv
biogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2Rl
TWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwotICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVy
dHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIAogICAgIEpT
VmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
LSAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
Ynl0ZWNvZGUubV9kc3QpID0gcmVzdWx0OwotICAgIAorICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKwogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCiAg
ICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxl
KCkKICAgICAgICAgJiYgIXNsb3QuaXNVbnNldCgpKSB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgc3dpdGNoIChtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1v
ZGUpIHsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OkRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
LmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6VW5zZXQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSUQ7Cisg
ICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS51bnNldE1vZGUuc3RydWN0
dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRN
b2RlOjpQcm90b0xvYWQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEOworICAgICAgICAgICAg
ICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgb2xkU3RydWN0dXJlSUQgPSAwOwpAQCAtNzk5LDM1ICs3OTYsMTAzIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgIGlmIChzbG90LmlzVmFs
dWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgICAgIC8v
IFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSgpOwor
ICAgICAgICAgICAgbWV0YWRhdGEuY2xlYXJUb0RlZmF1bHRNb2RlV2l0aG91dENhY2hlKCk7CiAK
ICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFw
cGVuaW5nLgotICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JM
TEludENhY2hpbmcgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgPSAwOwogICAgICAgICAKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5
QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlX
YXRjaHBvaW50KCkpIHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5k
ZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0
cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRl
ZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAg
ICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3Vu
dEZvckxMSW50Q2FjaGluZyAmJiBzbG90LmlzVmFsdWUoKSkpIHsKKyAgICAgICAgfSBlbHNlIGlm
IChVTkxJS0VMWShtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiBzbG90LmlzVmFs
dWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVl
KTsKIAotICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3Vu
dEZvckxMSW50Q2FjaGluZykpCisgICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLmhpdENvdW50
Rm9yTExJbnRDYWNoaW5nKSkKICAgICAgICAgICAgICAgICBzZXR1cEdldEJ5SWRQcm90b3R5cGVD
YWNoZShnbG9iYWxPYmplY3QsIHZtLCBjb2RlQmxvY2ssIHBjLCBtZXRhZGF0YSwgYmFzZUNlbGws
IHNsb3QsIGlkZW50KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19B
Q0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVy
ZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAgICAgbWV0YWRh
dGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5hcnJheUxlbmd0
aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2spOwogICAgIH0KIAotICAgIExMSU5UX1BST0ZJTEVfVkFMVUUocmVzdWx0KTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0
X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEdldEJ5SWQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBiYXNl
VmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBpdGVy
YXRvciA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICBS
ZWdpc3RlciYgbmV4dFJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1f
bmV4dCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgLy8gV2UgdXNlIG1f
dmFsdWUgdG8gaG9sZCB0aGUgaXRlcmF0b3IgcmV0dXJuIHZhbHVlIHNpbmNlIGl0J3MgZWl0aGVy
IG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRvIGJlIGZpbGxlZCBs
YXRlci4KKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUs
IGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIFJlZ2lzdGVyJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsKKworICAgIGlmICghaXRlcmF0b3JSZXR1
cm4uaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3Mp
KTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25l
LCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKKyAgICBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpOworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAvLyBX
ZSB1c2UgbV92YWx1ZSB0byBob2xkIHRoZSBpdGVyYXRvciByZXR1cm4gdmFsdWUgdG1wIHNpbmNl
IGl0J3MgZWl0aGVyIG5vdCBsaXZlIHBhc3QgdGhpcyBieXRlY29kZSBvciBpdCdzIGdvaW5nIHRv
IGJlIGZpbGxlZCBsYXRlci4KKyAgICBSZWdpc3RlciYgdmFsdWVSZWdpc3RlciA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihieXRlY29kZS5tX3ZhbHVlKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0
dXJuID0gdmFsdWVSZWdpc3Rlci5qc1ZhbHVlKCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBl
cmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJl
dHVybiwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRh
dGEpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIHZhbHVlUmVnaXN0ZXIgPSBy
ZXN1bHQ7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogewogICAg
IExMSU5UX0JFR0lOKCk7CkBAIC0xNTYzLDcgKzE2MjgsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIHNldFVwQ2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBDb2RlU3BlY2lhbGl6YXRp
b25LaQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgZ2VuZXJpY0NhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBPcCYmIGJ5dGVjb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgT3AmJiBieXRlY29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
LCB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSAwKQogewogICAgIC8vIFRoaXMgbmVlZHMgdG86
CiAgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgpAQCAtMTU3MSwxNiArMTYzNiwxNiBAQCBp
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKENvZGVCbG9jayogY29kZUJsb2Nr
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZQogICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNh
bGwncyBpbmxpbmUgY2FjaGUuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNv
ZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCiAgICAgCi0gICAgSlNW
YWx1ZSBjYWxsZWVBc1ZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fY2Fs
bGVlKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Y2FsbGVlRm9yKGJ5dGVjb2RlLCBjaGVja3BvaW50SW5kZXgpKTsKICAgICAKLSAgICBDYWxsRnJh
bWUqIGNhbGxlZUZyYW1lID0gY2FsbEZyYW1lIC0gYnl0ZWNvZGUubV9hcmd2OworICAgIENhbGxG
cmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsRnJhbWUgLSBzdGFja09mZnNldEluUmVnaXN0ZXJzRm9y
Q2FsbChieXRlY29kZSwgY2hlY2twb2ludEluZGV4KTsKICAgICAKLSAgICBjYWxsZWVGcmFtZS0+
c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNvZGUubV9hcmdjKTsKKyAgICBjYWxs
ZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9pbnRJbmRleCkpOwogICAgIGNhbGxlZUZyYW1l
LT51bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSA9IGNh
bGxlZUFzVmFsdWU7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxGcmFtZSk7
CiAgICAgCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
OwotICAgIHJldHVybiBzZXRVcENhbGwoY2FsbGVlRnJhbWUsIGtpbmQsIGNhbGxlZUFzVmFsdWUs
ICZtZXRhZGF0YS5tX2NhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChjYWxsZWVG
cmFtZSwga2luZCwgY2FsbGVlQXNWYWx1ZSwgJmNhbGxMaW5rSW5mb0ZvcihtZXRhZGF0YSwgY2hl
Y2twb2ludEluZGV4KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxs
KQpAQCAtMTYwNCw2ICsxNjY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
b25zdHJ1Y3QpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGdlbmVyaWNDYWxs
KGNvZGVCbG9jaywgY2FsbEZyYW1lLCBwYy0+YXM8T3BDb25zdHJ1Y3Q+KCksIENvZGVGb3JDb25z
dHJ1Y3QpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pdGVy
YXRvcl9vcGVuX2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9y
X29wZW5fY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcgc2xvdyBvcGVuX2NhbGwiKTsK
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChjb2RlQmxv
Y2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JPcGVuPigpLCBDb2RlRm9yQ2FsbCwgT3BJ
dGVyYXRvck9wZW46OnN5bWJvbENhbGwpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworCisvLyAgICBkYXRhTG9nTG4oIkNhbGxpbmcg
c2xvdyBuZXh0X2NhbGwiKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBn
ZW5lcmljQ2FsbChjb2RlQmxvY2ssIGNhbGxGcmFtZSwgcGMtPmFzPE9wSXRlcmF0b3JOZXh0Pigp
LCBDb2RlRm9yQ2FsbCwgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0KSk7Cit9CisKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKQogewogICAg
IExMSU5UX0JFR0lOKCk7CkBAIC0xOTkwLDYgKzIwNzcsNDQgQEAgc3RhdGljIHZvaWQgaGFuZGxl
VmFyYXJnc0NoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxP
YmplY3QKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kc3QpID0gcmVzdWx0
OwogfQogCitzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck9wZW5DaGVja3BvaW50KFZNJiB2bSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IE9wSXRlcmF0b3JPcGVuJiBieXRlY29kZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFpdGVyYXRvci5p
c09iamVjdCgpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgSlNWYWx1ZSBuZXh0ID0gaXRlcmF0b3IuZ2V0KGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUu
bV9uZXh0KSA9IG5leHQ7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yTmV4dENoZWNr
cG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgT3BJdGVyYXRvck5leHQmIGJ5dGVjb2RlLCBDaGVja3BvaW50T1NSRXhp
dFNpZGVTdGF0ZSYgc2lkZVN0YXRlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50SW5kZXggPSBzaWRlU3RhdGUuYnl0
ZWNvZGVJbmRleC5jaGVja3BvaW50KCk7CisKKyAgICBhdXRvJiB2YWx1ZVJlZ2lzdGVyID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOworICAgIGF1dG8gaXRlcmF0b3JS
ZXN1bHRPYmplY3QgPSBzaWRlU3RhdGUudG1wc1tPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdF07
CisgICAgYXV0byBuZXh0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fbmV4dCku
anNWYWx1ZSgpOyAgICAKKworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShuZXh0LCAi
V2Ugc2hvdWxkIG5vdCBPU1IgZXhpdCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2FzZXMuIik7
CisKKyAgICBhdXRvJiBkb25lUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNv
ZGUubV9kb25lKTsKKyAgICBpZiAoY2hlY2twb2ludEluZGV4ID09IE9wSXRlcmF0b3JOZXh0Ojpn
ZXREb25lKSB7CisgICAgICAgIGRvbmVSZWdpc3RlciA9IGl0ZXJhdG9yUmVzdWx0T2JqZWN0Lmdl
dChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKyAgICBpZiAoZG9uZVJlZ2lzdGVyLmpzVmFsdWUoKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0
KSkKKyAgICAgICAgdmFsdWVSZWdpc3RlciA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZQorICAg
ICAgICB2YWx1ZVJlZ2lzdGVyID0gaXRlcmF0b3JSZXN1bHRPYmplY3QuZ2V0KGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUpOworfQorCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIGRpc3BhdGNoVG9OZXh0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWN0aW9uU3RyZWFtOjpSZWYgcGMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWNvZGVCbG9jay0+
dm0oKS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkpOwpAQCAtMjA2Niw2ICsyMTkxLDE1IEBAIGV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0
KENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgICAgIGhhbmRsZVZhcmFyZ3NDaGVja3BvaW50KHZt
LCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgcGMtPmFzPE9wVGFpbENhbGxWYXJhcmdzPigpLCAq
c2lkZVN0YXRlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIG9wX2l0ZXJhdG9y
X29wZW46IHsKKyAgICAgICAgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludCh2bSwgY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIHBjLT5hczxPcEl0ZXJhdG9yT3Blbj4oKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgaGFuZGxl
SXRlcmF0b3JOZXh0Q2hlY2twb2ludCh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHBjLT5h
czxPcEl0ZXJhdG9yTmV4dD4oKSwgKnNpZGVTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwMyw2ICsyMjM3LDEyIEBAIGV4dGVybiAiQyIgdm9p
ZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTQ2VsbCog
Y2VsbCkKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCit7CisgICAgZGF0YUxv
Z0xuKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworfQorCiBleHRlcm4gIkMiIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggdm9pZCBsbGludF9jcmFzaCgpCiB7CiAgICAgQ1JBU0goKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCBiNTY5OWMzMGQyY2RhZmE0ZjkzYzNhOWYwOTgwNTcxYzgxNzY3YzFhLi5mOWEzNGRhYjM2ZDlm
YTUyNzU2YTE5OGIyZDc0Zjc1MmM1MzhhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMDMyLDcgKzEwMzIsNyBA
QCBtYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBz
aXplKGRlZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBm
KCkgZW5kKQogZW5kCiAKLW1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCittYWNybyBjYWxs
VGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcp
CiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlv
biBjYWxsZWUKICAgICBlbHNlCkBAIC0xMDQ1LDExICsxMDQ1LDExIEBAIG1hY3JvIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxs
ZWUsIGNhbGxQCiAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJl
c3VsdGluZyBpbiB1bmV4cGVjdGVkCiAgICAgICAgICMgY3Jhc2hlcy4KICAgICAgICAgcmVzdG9y
ZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUs
IG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNw
YXRjaCkKICAgICBlbmQKICAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwg
c2l6ZSkKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBkaXNwYXRjaEFm
dGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQorICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCkKIGVuZAogCiBtYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwoY2FsbGVl
LCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQpAQCAtMTExNyw3ICsxMTE3LDExIEBA
IG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNh
bGxQdHJUYWcpCiAgICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZwogZW5kCiAKLW1hY3JvIHNsb3dQ
YXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCittYWNybyBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQor
ICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJv
ZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKworbWFj
cm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBh
cmVDYWxsKQogICAgIGNhbGxDYWxsU2xvd1BhdGgoCiAgICAgICAgIHNsb3dQYXRoLAogICAgICAg
ICAjIFRob3NlIGFyZSByMCBhbmQgcjEKQEAgLTExMjYsNyArMTEzMCw3IEBAIG1hY3JvIHNsb3dQ
YXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAogICAgICAg
ICAgICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKICAg
ICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bj
b2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93
UGF0aFB0clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVf
c2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVn
aXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBl
bmQKIApAQCAtMjAxNiw3ICsyMDIwLDcgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBmcmFtZVNsb3dQYXRoLCBzbG8KICAgICAg
ICAgICAgIHN1YnAgcjEsIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgICAgICBlbmQKICAg
ICBlbmQKLSAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ29tbW9u
Q2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwg
cHJlcGFyZUNhbGwpCiBlbmQKIAogCkBAIC0yMDc5LDcgKzIwODMsNyBAQCBlbmQpCiAjIHJldHVy
bnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCiAKIF9sbGludF9vcF9jYWxs
X2V2YWw6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKAorICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgK
ICAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKICAgICAgICAgbmFycm93LAogICAgICAgICBP
cENhbGxFdmFsLApAQCAtMjA4OCw3ICsyMDkyLDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKICAg
ICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUx
NjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAogICAg
ICAgICBvcF9jYWxsX2V2YWxfd2lkZTE2LAogICAgICAgICB3aWRlMTYsCiAgICAgICAgIE9wQ2Fs
bEV2YWwsCkBAIC0yMDk3LDcgKzIxMDEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoK
ICAgICAgICAgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dp
ZGUzMjoKLSAgICBzbG93UGF0aEZvckNhbGwoCisgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAog
ICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTMyLAogICAgICAgICB3aWRlMzIsCiAgICAgICAgIE9w
Q2FsbEV2YWwsCkBAIC0yMTA3LDcgKzIxMTEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUz
MjoKIAogCiBjb21tb25PcChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCwgbWFjcm8gKCkgZW5k
LCBtYWNybyAoc2l6ZSkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBPcENhbGxFdmFsLCBt
YWNybyAoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIE9wQ2FsbEV2YWwsIG1fcHJvZmls
ZSwgbV9kc3QsIG1hY3JvICgpCiAgICAgICAgIGRpc3BhdGNoT3Aoc2l6ZSwgb3BfY2FsbF9ldmFs
KQogICAgIGVuZCkKIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjE4M2M4MDQy
YWJkZmNlOGQ0MzkxMWFmNDFmNjU0YS4uNzRjNDgwZGYyMTIxNzE2NTUwYzVmZDRmMDg0NGFiMTEw
OGZkYzgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJl
dHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQog
ICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQyKQotICAg
ICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDApCiAgICAgICAgIGdl
dChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAg
ICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQpAQCAtNzcsMTYgKzc3
LDE3IEBAIGVuZAogCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFp
bWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgotbWFjcm8gZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxs
KHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVy
LCBkaXNwYXRjaCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09m
ZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW1BCXSwgUEIKLSAgICBnZXQoc2l6ZSwg
b3Bjb2RlU3RydWN0LCBtX2RzdCwgdDMpCisgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0
VmlydHVhbFJlZ2lzdGVyLCB0MykKICAgICBzdG9yZWkgcjEsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQogICAgIHN0b3JlaSByMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIG1ldGFkYXRh
KHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgdDIsIHIxLCByMCkKICAgICBkaXNwYXRjaCgpCisKIGVuZAogCiBtYWNybyBjQ2Fs
bDIoZnVuY3Rpb24pCkBAIC02MzIsOSArNjMzLDkgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1ZUZpZWxkTmFtZSkKICAgICAgICAg
ZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB0
YWcsIHBheWxvYWQpCittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFt
ZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKICAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0YWRhdGFdCi0g
ICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1f
YnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCisgICAgc3RvcmVpIHBheWxvYWQsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2Fk
T2Zmc2V0W21ldGFkYXRhXQogZW5kCiAKIApAQCAtMTM3OCw3ICsxMzc5LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3AKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29m
ZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5v
cEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0Miwg
dDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0NSwgdDAsIHQx
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQwLCB0
MSkKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0MDAs
NyArMTQwMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgYmluZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgT3BHZXRCeUlk
OjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3Q1XSwg
dDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5v
cEdldEJ5SWRBcnJheUxlbmd0aDoKQEAgLTE0MTMsNyArMTQxNCw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAKICAgICBs
b2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5w
dWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93Ci0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDApCiAgICAgcmV0dXJuKElu
dDMyVGFnLCB0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgpAQCAtMTQyMSw3ICsxNDIyLDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21v
ZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cp
CiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIFVuZGVmaW5lZFRhZywgMCkKKyAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCiAg
ICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNDMw
LDcgKzE0MzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlk
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRpcyBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDVd
LCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlk
U2xvdwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAog
Lm9wR2V0QnlJZFNsb3c6CkBAIC0xNDQwLDcgKzE0NDEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2lu
dChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwg
bV9wcm9maWxlLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE1
MTgsNyArMTUxOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRC
eVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGdldChtX2Rz
dCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3Jh
dGNoLCA4XQogICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIs
IHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgSW50MzJU
YWcsIHJlc3VsdFBheWxvYWQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKICAgICAgICAgZGlzcGF0Y2goKQog
ICAgIGVuZAogCkBAIC0xNTI3LDcgKzE1MjgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAog
ICAgICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBzdG9yZWkg
c2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9yZWkgc2Ny
YXRjaDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlWYWwsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCiAgICAg
ICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTU3Miw3ICsxNTczLDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKIC5vcEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyLCB0MSkKKyAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQogICAgIGRpc3BhdGNoKCkK
IAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1ODUsNyArMTU4Niw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVy
T1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDIs
IHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0MiwgcjEsIHIwKQorICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIx
LCByMCkKIAogZW5kKQpAQCAtMTk1NywxMCArMTk1OCwxMCBAQCBtYWNybyBjb21tb25DYWxsT3Ao
b3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3Vl
KQogICAgICAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQogICAgICAg
ICBtb3ZlIHQzLCBzcAogICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBK
U0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9w
cm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAu
b3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgc2xv
d1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBt
X2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBlbmQpCiBlbmQKIApA
QCAtMjI4OCw3ICsyMjg5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29w
ZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBn
ZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9v
cGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0Mywg
dDAsIHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEs
IHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjI5Nyw3ICsy
Mjk4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9t
U2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgVGFnT2Zmc2V0
W3QwXSwgdDEKICAgICAgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0MF0sIHQyCiAgICAgICAgIHRk
ekNoZWNrSWZOZWNlc3NhcnkodDEpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29w
ZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3By
b2ZpbGUsIHQ1LCB0MSwgdDIpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAg
LTIzMDUsNyArMjMwNiw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUs
IE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIGxvYWRw
IE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9h
ZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0s
IHQxCiAgICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxv
YWRPZmZzZXRbdDAsIHQzLCA4XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNj
b3BlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1f
cHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApA
QCAtMjU5NCw2ICsyNTk1LDE1IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0
aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgcmV0dXJu
KEludDMyVGFnLCB0MCkKIGVuZCkKIAorbGxpbnRPcChvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJh
dG9yT3BlbiwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NSRXhpdFJl
dHVybkxhYmVsKG9wX2l0ZXJhdG9yX29wZW4sIHNpemUpCisgICAgYnJlYWsKK2VuZCkKKworbGxp
bnRPcChvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gpCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9yX25leHQs
IHNpemUpCisgICAgYnJlYWsKK2VuZCkKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRl
cm5hbF9maWVsZCwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQogICAgIGdldChtX2Jhc2UsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhZTJlMzc3M2Zm
ZGNjNDA2NzRjN2FhYzBjMWQ0ZmU2Y2QwZmI3ODU5Li44NjEzNmU4NTdjOWY3ODIyYjI0NDZjNjI2
YmZkYzdhM2RmYmIyZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNjgsMjYgKzY4LDI2IEBAIG1hY3JvIG1h
a2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBm
bikKICAgICBmbihtYWNybyAodmFsdWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQzCiAgICAgICAg
IG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdDEs
IHQzKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0
MykKICAgICAgICAgZ2V0KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwg
OF0KICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdmFsdWUpCi0gICAgc3RvcmVxIHZhbHVlLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0YWRhdGFdCittYWNy
byB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVl
KQorICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5h
bWUlLm1fYnVja2V0c1ttZXRhZGF0YV0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcg
Ynl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KLW1hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCittYWNybyBk
aXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAgICAgbG9hZFBDKCkKICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zUmF3UG9p
bnRlcltQQl0sIFBCCi0gICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgbV9kc3QsIHQxKQorICAg
IGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAgICAgc3Rv
cmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQy
LCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0MiwgcjApCisgICAgdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwKQogICAgIGRpc3Bh
dGNoKCkKIGVuZAogCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cAogICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdl
dEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWRE
aXJlY3QsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2Zp
bGUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAt
MTM0OCw1MyArMTM0OCw1OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJl
Y3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcAogICAgIGRpc3BhdGNo
KCkKIGVuZCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisjIFRoZSBiYXNl
IG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MworbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bj
b2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWws
IHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDIsIHQxKQotICAgIGxvYWRi
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJdLCB0MQotICAgIGdl
dChtX2Jhc2UsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0
MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
bW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKIC5vcEdldEJ5SWREZWZhdWx0OgogICAg
IGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkRlZmF1bHQsIC5vcEdldEJ5SWRQcm90
b0xvYWQKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRp
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVy
ZUlEW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlz
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9m
ZnNldFt0Ml0sIHQxCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1l
dGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQw
LCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2Fk
OgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwgLm9wR2V0
QnlJZEFycmF5TGVuZ3RoCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEK
LSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRN
b2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKLSAgICBiaW5lcSB0MywgdDEsIC5vcEdldEJ5SWRTbG93
Ci0gICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9h
ZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKLSAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MworICAgIGxv
YWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9h
ZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xhYmVsCisg
ICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnBy
b3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3Rb
dDJdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIAogLm9w
R2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6
OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBtb3ZlIHQzLCB0MAotICAgIGFycmF5
UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1v
ZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdl
dEJ5SWRTbG93Ci0gICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93
CisgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0
YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgYnRp
eiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ss
IHNsb3dMYWJlbAogICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3Qz
XSwgdDAsIHQxKQogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgLm9w
R2V0QnlJZFNsb3cKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVyVGFn
LCB0MAotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQw
KQogCiAub3BHZXRCeUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNl
dE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAotICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZFNs
b3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgVmFsdWVVbmRlZmluZWQpCisgICAg
bG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRN
b2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVu
ZGVmaW5lZCkKICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKK2VuZAorCitsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MCkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIHBl
cmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwg
Lm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisKIC5vcEdldEJ5SWRTbG93
OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICBkaXNw
YXRjaCgpCkBAIC0xNDAyLDcgKzE0MDgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogLm9z
clJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRf
YnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5SWQsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQy
LCByMCkKICAgICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE0OTcsNyArMTUwMyw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3Jh
dGNoKQogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSByZXN1bHQs
IFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwg
cmVzdWx0KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
cmVzdWx0KQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE1NTgsNyArMTU2NCw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdldEJ5VmFsRG9uZToKICAgICBzdG9y
ZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgIGRp
c3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE1NzEsNyArMTU3
Nyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0
dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0
YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcjApCisgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQogICAgIHJldHVybihy
MCkKIAogZW5kKQpAQCAtMTk0OCw2ICsxOTU0LDMwIEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNh
bGwob3Bjb2RlU3RydWN0LCBnZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8gY2FsbEhlbHBlcihv
cGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdl
dENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
CisgICAgbWV0YWRhdGEodDUsIHQwKQorICAgIGdldENhbGxlZSh0MCkKKworICAgIGxvYWRwICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVu
Q2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDAsIHQzKQorICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKworICAgIGdldEFyZ3Vt
ZW50U3RhcnQodDMpCisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ3AgdDMKKyAgICBhZGRwIGNm
ciwgdDMKKyAgICBzdG9yZXEgdDIsIENhbGxlZVt0M10KKyAgICBnZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyh0MikKKyAgICBzdG9yZVBDKCkKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBzcAorICAg
IHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9t
YWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgY2Fs
bFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0
clRhZykKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBk
aXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorZW5kCisKIG1hY3JvIGNvbW1vbkNhbGxP
cChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9n
dWUpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtZXRh
ZGF0YSh0NSwgdDApCkBAIC0xOTU2LDI0ICsxOTg2LDE5IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChv
cGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUp
CiAgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAg
ICAgICAgIGVuZCwgbWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxl
ZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQotICAgICAgICBicW5lcSB0MywgdDIsIC5vcENhbGxT
bG93Ci0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQotICAgICAg
ICBsc2hpZnRpIDMsIHQzCi0gICAgICAgIG5lZ3AgdDMKLSAgICAgICAgYWRkcCBjZnIsIHQzCi0g
ICAgICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQotICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0
cnVjdCwgbV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVQQygpCi0gICAgICAgIHN0b3JlaSB0Miwg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBt
b3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0Vu
dHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQotICAgIC5v
cENhbGxTbG93OgotICAgICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAgICBtYWNy
byBnZXRDYWxsZWUoZHN0KQorICAgICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKKyAgICAgICAg
ZW5kCisKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFydChkc3QpCisgICAgICAgICAgICBn
ZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCBkc3QpCisgICAgICAgIGVuZAorCisgICAg
ICAgIG1hY3JvIGdldEFyZ3VtZW50Q291bnQoZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBv
cGNvZGVTdHJ1Y3QsIG1fYXJnYywgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBjYWxsSGVs
cGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3Qs
IHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJn
dW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjI3Niw3
ICsyMzAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRG
cm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICBtYWNybyBnZXRQcm9wZXJ0
eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1
XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQot
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MikKKyAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKICAgICAgICAgcmV0
dXJuKHQyKQogICAgIGVuZAogCkBAIC0yMjg0LDE0ICsyMzA5LDE0IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVy
YW5kW3Q1XSwgdDAKICAgICAgICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAgdGR6Q2hlY2tJZk5l
Y2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDAp
CisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDAp
CiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIo
KQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0s
IHQxCiAgICAgICAgIGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEs
IDhdLCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIHQ1LCB0MCkKKyAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKICAg
ICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCkBAIC0yNTUxLDcgKzI1NzYsNiBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCBPcFByb2ZpbGVDb250cm9sRmxv
dywgbWFjcm8gKHNpemUsCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi0KIGxsaW50T3BXaXRoUmV0
dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKQEAgLTI1NjcsNiArMjU5
MSwxNDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RM
ZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIGVuZCkKIAogCitsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YShhMiwgdDUpCisgICAg
bWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAg
IGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisg
ICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lk
ZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJ
WE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRo
ZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2Vu
ZXJpYywgLml0ZXJhdG9yT3BlbkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck9w
ZW5HZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAgICAgIGpt
cCAuZ2V0QnlJZFN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAg
ICAgICBnZXQobV9zeW1ib2xJdGVyYXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0
QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRl
cmF0b3JPcGVuLCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRB
cmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAg
ZW5kCisKKworICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xsaW50X3Nsb3dfcGF0
aF9pdGVyYXRvcl9vcGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJhdG9yUHJvZmlsZSwg
bV9pdGVyYXRvciwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0QnlJZENoZWNr
cG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0
LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldEJ5SWRTdGFydDoKKyAgICBt
YWNybyBzdG9yZU5leHRBbmREaXNwYXRjaCh2YWx1ZSkKKyAgICAgICAgbW92ZSB2YWx1ZSwgdDIK
KyAgICAgICAgZ2V0KG1fbmV4dCwgdDEpCisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDEsIDhd
CisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgIGxvYWRWYXJpYWJsZShnZXQsIG1f
aXRlcmF0b3IsIHQzKQorICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3Blbkdl
bmVyaWNHZXROZXh0U2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVu
LCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXRO
ZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoKQorCisuaXRlcmF0
b3JPcGVuR2VuZXJpY0dldE5leHRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCisgICAgZGlzcGF0Y2goKQorCitlbmQpCisKK2xs
aW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorCisgICAgbG9hZFZhcmlh
YmxlKGdldCwgbV9uZXh0LCB0MCkKKyAgICBidHFueiB0MCwgdDAsIC5pdGVyYXRvck5leHRHZW5l
cmljCisgICAgbWV0YWRhdGEoYTIsIHQ1KQorICAgIG1hY3JvIGZhc3ROYXJyb3coKQorICAgICAg
ICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KQorICAgIGVuZAor
ICAgIG1hY3JvIGZhc3RXaWRlMTYoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25l
eHRfdHJ5X2Zhc3Rfd2lkZTE2KQorICAgIGVuZAorICAgIG1hY3JvIGZhc3RXaWRlMzIoKQorICAg
ICAgICBjYWxsU2xvd1BhdGgoX2l0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyKQorICAgIGVu
ZAorICAgIHNpemUoZmFzdE5hcnJvdywgZmFzdFdpZGUxNiwgZmFzdFdpZGUzMiwgbWFjcm8gKGNh
bGxPcCkgY2FsbE9wKCkgZW5kKQorCisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoaXMgd2l0
aCBpbmxpbmUgYXNzZW1ibHkgc2luY2UgaXQncyB0aGUgImZhc3QiIGNhc2UuCisgICAgYmJlcSBy
MSwgY29uc3RleHByIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMsIC5pdGVyYXRvck5leHRHZW5lcmlj
CisgICAgZGlzcGF0Y2goKQorCisuaXRlcmF0b3JOZXh0R2VuZXJpYzoKKyAgICBtYWNybyBnb3Rv
R2V0RG9uZUNoZWNrcG9pbnQoKQorICAgICAgICBqbXAgLmdldERvbmVTdGFydAorICAgIGVuZAor
CisgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgZ2V0KG1fbmV4dCwgZHN0KQorICAg
IGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAg
ICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JOZXh0LCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAg
ZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAg
ICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKyAgICAjIFVzZSBtX3ZhbHVlIHNsb3QgYXMgYSB0
bXAgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIHdyaXRlIHRvIGl0IGxhdGVyLgorICAgIGNhbGxIZWxw
ZXIob3BfaXRlcmF0b3JfbmV4dCwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2NhbGws
IE9wSXRlcmF0b3JOZXh0LCBtX25leHRSZXN1bHRQcm9maWxlLCBtX3ZhbHVlLCBwcmVwYXJlRm9y
UmVndWxhckNhbGwsIHNpemUsIGdvdG9HZXREb25lQ2hlY2twb2ludCwgbWV0YWRhdGEsIGdldENh
bGxlZSwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQsIGdldEFyZ3VtZW50SW5jbHVkaW5n
VGhpc0NvdW50KQorCisuZ2V0RG9uZVN0YXJ0OgorICAgIG1hY3JvIHN0b3JlRG9uZUFuZEptcFRv
R2V0VmFsdWUoZG9uZVZhbHVlKQorICAgICAgICAjIHVzZSB0MCBiZWNhdXNlIHBlcmZvcm1HZXRC
eUlESGVscGVyIHVzdWFsbHkgcHV0cyB0aGUgZG9uZVZhbHVlIHRoZXJlIGFuZCBvZmZsaW5lYXNt
IHdpbGwgZWxpZGUgdGhlIHNlbGYgbW92ZS4KKyAgICAgICAgbW92ZSBkb25lVmFsdWUsIHQwCisg
ICAgICAgIGdldChtX2RvbmUsIHQxKQorICAgICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQor
ICAgICAgICBqbXAgLmdldFZhbHVlU3RhcnQKKyAgICBlbmQKKworCisgICAgbG9hZFZhcmlhYmxl
KGdldCwgbV92YWx1ZSwgdDMpCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0RG9uZVNs
b3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1l
dGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9y
ZURvbmVBbmRKbXBUb0dldFZhbHVlKQorCisuZ2V0RG9uZVNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAgICBicmFuY2hJZkV4
Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKKyAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX2RvbmUsIHQwKQorCisgICAgIyBzdG9yZURvbmVBbmRKbXBUb0dldFZh
bHVlIHB1dHMgdGhlIGRvbmVWYWx1ZSBpbnRvIHQwCisuZ2V0VmFsdWVTdGFydDoKKyAgICAjIEJy
YW5jaCB0byBzbG93IGlmIG5vdCBtaXNjIHByaW1pdGl2ZS4KKyAgICBidHFueiB0MCwgfjB4Ziwg
LmdldFZhbHVlU2xvdworICAgIGJ0aXogdDAsIDB4MSwgLm5vdERvbmUKKyAgICBkaXNwYXRjaCgp
CisKKy5ub3REb25lOgorICAgIG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRjaCh2KQorICAgICAg
ICBtb3ZlIHYsIHQyCisgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICAgICAgc3RvcmVxIHQy
LCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDAsIDB4
YmFkZGIwMWUpCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgICMgUmVsb2FkIHRo
ZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2ZSBjbG9i
YmVyZWQgdDMuCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCisgICAgIyBXZSBk
b24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMgYSBjZWxsIGhlcmUg
c2luY2Ugd2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUuCisgICAgcGVyZm9ybUdl
dEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1fdmFsdWVQ
cm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFuZERpc3Bh
dGNoKQorCisuZ2V0VmFsdWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKworCiBsbGlu
dE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZFZhcmlhYmxlKGdl
dCwgbV9iYXNlLCB0MSkKICAgICBnZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbV9pbmRl
eCwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFu
c2Zvcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIK
aW5kZXggOGQ3NjcxMTZjMDU0ZTVlYTY2NGVmNDA2MmM1NmYyNjA1ZTBkOGI0NS4uNTg5YWUwZTBm
M2VkMzRiNjYxZTg1NjJiY2EyOTgwMmVjMTBlNWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgpAQCAtNjI5LDcgKzYyOSw3IEBAIGVuZAogCiBj
bGFzcyBOb2RlCiAgICAgZGVmIHZhbGlkYXRlCi0gICAgICAgIHJhaXNlICJVbnJlc29sdmVkICN7
ZHVtcH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQg
JyN7ZHVtcH0nIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCiAgICAgZW5kCiAgICAgCiAgICAgZGVm
IHZhbGlkYXRlQ2hpbGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IGI4ZGU5NjU1ODJmN2Q5MTI3MTMzN2Q1NDMxOTAzZTgz
MThjMjZmNDcuLjMwZjUxYTY1Y2E4ZjI3ZDBiOTE1YTNlYzcyN2QxNTg4MjhhOGNkNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBcnJh
eUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNTMsOCArMTU0LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBSRVRVUk5fUFJPRklMRUQodmFsdWVfXykgXAogICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElORyh2YWx1ZV9fLCBQUk9GSUxFX1ZBTFVFKHJldHVyblZhbHVl
X18pKQogCi0jZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpOyBcCisjZGVmaW5lIFBST0ZJTEVfVkFMVUUodmFsdWVfXykgXAorICAg
IFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQorCisjZGVmaW5lIFBST0ZJTEVf
VkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKKyAgICAgICAgYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRocm93QXJp
dHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSkKQEAgLTk2NSw2ICs5NjksMTI4IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pbl9ieV9pZCkKICAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1
ZSktPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpKSkpOwogfQogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xv
d1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQor
eworICAgIC8vIERvbid0IHNldCBQQzsgd2UgY2FuJ3QgdGhyb3cgYW5kIGl0J3MgcmVsYXRpdmVs
eSBzbG93LgorICAgIEJFR0lOX05PX1NFVF9QQygpOworCisgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hc0tub3duV2lkdGg8T3BJdGVyYXRvck9wZW4sIHdpZHRoPigpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJdGVyYXRvck9wZW46Ok1ldGFkYXRhKj4obWV0YWRh
dGFQdHIpOworICAgIEpTVmFsdWUgaXRlcmFibGUgPSBHRVRfQyhieXRlY29kZS5tX2l0ZXJhYmxl
KS5qc1ZhbHVlKCk7CisgICAgUFJPRklMRV9WQUxVRV9JTihpdGVyYWJsZSwgbV9pdGVyYWJsZVBy
b2ZpbGUpOworICAgIEpTVmFsdWUgc3ltYm9sSXRlcmF0b3IgPSBHRVRfQyhieXRlY29kZS5tX3N5
bWJvbEl0ZXJhdG9yKS5qc1ZhbHVlKCk7CisgICAgYXV0byYgaXRlcmF0b3IgPSBHRVQoYnl0ZWNv
ZGUubV9pdGVyYXRvcik7CisKKyAgICBhdXRvIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24g
PSBbJl0geworICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2Ug
d2UganVzdCBjaGVja2VkIHRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlkLgorICAgICAgICBK
U0Z1bmN0aW9uKiBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4odm0sIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFzeW1ib2xJdGVyYXRvckZ1
bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7IAorCisg
ICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYWxsb2NhdGUgdGhlIHZhbHVlcyBmdW5jdGlvbiBq
dXN0IHRvIGNoZWNrIGlmIGl0J3MgdGhlIHNhbWUgYXMgb3VyIGZ1bmN0aW9uIGF0IHNvIHdlIHVz
ZSB0aGUgY29uY3VycmVudCBhY2Nlc3Nvci4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMgb25seSB3
b3JrcyBmb3IgYXJyYXlzIGZyb20gdGhlIHNhbWUgZ2xvYmFsIG9iamVjdCBhcyBvdXJzZWx2ZXMg
YnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHN1cHBvcnQgYW55IHBhaXJpbmcuCisgICAgICAgIGlm
IChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNvbmN1cnJlbnRseSgpICE9
IHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9k
ZTo6R2VuZXJpYzsKKworICAgICAgICAvLyBXZSBzaG91bGQgYmUgZ29vZCB0byBnby4KKyAgICAg
ICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKKyAg
ICAgICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkgPSBKU1ZhbHVlKCk7CisgICAgICAgIGF1dG8qIGl0
ZXJhdGVkT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oaXRlcmFibGUpOworICAgICAgICBpdGVy
YXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRl
cmF0b3JTdHJ1Y3R1cmUoKSwgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyk7
CisgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4oaXRlcmF0b3IuanNWYWx1ZSgpLCBtX2l0ZXJhdG9y
UHJvZmlsZSk7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CisgICAg
fTsKKworICAgIGlmIChpdGVyYWJsZS5pbmhlcml0czxKU0FycmF5Pih2bSkpIHsKKyAgICAgICAg
aWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0
QXJyYXkpCisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICB9CisKKyAgICAvLyBS
ZXR1cm4gdG8gdGhlIGJ5dGVjb2RlIHRvIHRyeSBpbiBnZW5lcmljIG1vZGUuCisgICAgbWV0YWRh
dGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1l
dGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6R2Vu
ZXJpYykpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5f
dHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiog
cGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9m
YXN0PE5hcnJvdz4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQor
eworICAgIHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0PFdpZGUxNj4oY2FsbEZyYW1lLCBw
YywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJh
dG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9v
cGVuX3RyeV9mYXN0PFdpZGUzMj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCit0
ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgorU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBp
dGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzS25vd25XaWR0aDxPcEl0ZXJhdG9yTmV4dCwgd2lkdGg+KCk7Cisg
ICAgYXV0byYgbWV0YWRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEl0ZXJhdG9yTmV4dDo6TWV0
YWRhdGEqPihtZXRhZGF0YVB0cik7CisKKyAgICBBU1NFUlQoIUdFVChieXRlY29kZS5tX25leHQp
LmpzVmFsdWUoKSk7CisgICAgSlNPYmplY3QqIGl0ZXJhdG9yID0ganNDYXN0PEpTT2JqZWN0Kj4o
R0VUKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFsdWUoKSk7OworICAgIEpTQ2VsbCogaXRlcmFi
bGUgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1ZSgpLmFzQ2VsbCgpOworICAgIGlm
IChhdXRvIGFycmF5SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHZt
LCBpdGVyYXRvcikpIHsKKyAgICAgICAgaWYgKGF1dG8gYXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpT
QXJyYXkqPih2bSwgaXRlcmFibGUpKSB7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxl
UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOworCisgICAg
ICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRh
Lm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5
OworICAgICAgICAgICAgYXV0byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRvci0+aW50ZXJuYWxG
aWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCk7CisgICAgICAgICAgICBpbnQ2NF90
IGluZGV4ID0gaW5kZXhTbG90LmdldCgpLmFzQW55SW50KCk7CisgICAgICAgICAgICBBU1NFUlQo
MCA8PSBpbmRleCAmJiBpbmRleCA8PSBtYXhTYWZlSW50ZWdlcigpKTsKKworICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgICAgIGJvb2wgZG9uZSA9IGluZGV4ID09IC0xIHx8IGlu
ZGV4ID49IGFycmF5LT5sZW5ndGgoKTsKKyAgICAgICAgICAgIEdFVChieXRlY29kZS5tX2RvbmUp
ID0ganNCb29sZWFuKGRvbmUpOworICAgICAgICAgICAgaWYgKCFkb25lKSB7CisgICAgICAgICAg
ICAgICAgLy8gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUgYmVjYXVzZSB3ZSBrbm93IHRoaXMg
aXMgYSBwcmltaXRpdmUuCisgICAgICAgICAgICAgICAgaW5kZXhTbG90LnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIoanNOdW1iZXIoaW5kZXggKyAxKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlu
ZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpOworICAgICAgICAgICAgICAgIHZh
bHVlID0gYXJyYXktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluZGV4KSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgICAg
ICAgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgbV92YWx1ZVByb2ZpbGUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVy
ZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHByaW1pdGl2ZS4KKyAgICAgICAgICAgICAgICBp
bmRleFNsb3Quc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcigtMSkpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBHRVQoYnl0ZWNvZGUubV92YWx1ZSkgPSB2YWx1ZTsKKyAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0
ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkpOworICAgICAgICB9CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAvLyBSZXR1cm4gdG8gdGhlIGJ5dGVjb2RlIHRv
IHRyeSBpbiBnZW5lcmljIG1vZGUuCisgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5z
ZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJh
dGlvbk1vZGU6OkdlbmVyaWM7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpOworfQorCitTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQor
eworICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PE5hcnJvdz4oY2FsbEZyYW1lLCBw
YywgbWV0YWRhdGFQdHIpOworfQorCitTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJh
dG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFkYXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0PFdpZGUxNj4oY2FsbEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCitT
bG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMy
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIHZvaWQqIG1ldGFk
YXRhUHRyKQoreworICAgIHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0PFdpZGUzMj4oY2Fs
bEZyYW1lLCBwYywgbWV0YWRhdGFQdHIpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZGVsX2J5X3ZhbCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiNzEzNWUyYjc4NGFiNjhkYjVmNTU4ZmE3
ODUwNGNhYjA5NjQzYzYxLi41Yjg3MzMyMTk5YjFkNTRhODgwNmIwOTZmZTEzZWQ1ZWE1ZTU3NmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aApAQCAtMjgzLDYgKzI4MywxOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19hcnJheV93aXRoX3NwcmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19hcnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQp
OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBl
IFNMT1dfUEFUSCBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNv
bnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxG
cmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lk
ZTMyKENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOwor
Cit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitleHRlcm4gU2xvd1BhdGhSZXR1cm5UeXBlIFNM
T1dfUEFUSCBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
U0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFt
ZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMy
KENhbGxGcmFtZSosIGNvbnN0IEluc3RydWN0aW9uKiBwYywgdm9pZCogbWV0YWRhdGEpOworCiB1
c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShD
YWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDJlMWI1ZjI5
NmUzMzIwM2U5ODRmZTk2N2E3ODExMThiMGQ2OTYxYzkuLmU0ZTU3N2ZmYTUyZDc2NTI5OWEzMzY2
Zjk0ZDFhNmJiNGFiNGI4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmNwcApAQCAtMzQwLDYgKzM0MCwyNCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1l
KEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK09wdGlvbmFs
PEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRy
aW5zaWMpCit7CisgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICBjYXNlIEFycmF5VmFsdWVz
SW50cmluc2ljOgorICAgIGNhc2UgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYzoKKyAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICBjYXNlIEFycmF5S2V5c0ludHJpbnNp
YzoKKyAgICBjYXNlIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRl
cmF0aW9uS2luZDo6S2V5czsKKyAgICBjYXNlIEFycmF5RW50cmllc0ludHJpbnNpYzoKKyAgICBj
YXNlIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gSXRlcmF0aW9u
S2luZDo6RW50cmllczsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDMzZWNhYmM4MWZj
ODE4NDBiNGRmN2E2OTY2MmRiMTNmNTY2MmNiOWQuLjExOWMwNGZiNDJmM2YwY2UzMjk5OTA2ZDI3
YmY0YmNlYTkwNzllM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCkBAIC0xOTIsNiArMTkyLDggQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBE
YXRhVmlld1NldEZsb2F0NjQsCiB9OwogCitPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0
aW9uS2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMpOworCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNO
YW1lKEludHJpbnNpYyk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCBhZmQ5ZWIyZTVkNjZiODUz
YTBjNzcwNDJhY2FlNDk5ZDA2NzNmMThmLi5iY2ZkMzFiM2Q2Y2YzYTA5MjRjZGUzN2VkYjFkNDU4
OGE0ZTM4ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuaApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVy
YXRlZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmll
bGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAgIHN0YXRpYyBKU0FycmF5
SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVj
dCwgSlNWYWx1ZSBraW5kKTsKKyAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVy
YXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1
cmUsIGl0ZXJhdGVkT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkp
KTsKKyAgICB9CiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxW
YWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBk
MTg1NGZhNjBjOWY0ODFlZC4uZDMwMmIxODY1M2UzODQ5Nzg5MmI2MDVmYTEyOGE5OWMwZjk0ZjBm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjI1
LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBi
b29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxs
VHlwZSYsIENhbGxEYXRhJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29u
c3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVj
dERhdGEmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRlNjU3OGFlZWZmNjljMWNmZGJlYmVhYmFk
ODBhZjcuLjYyZjlkMjRmMTVkMDcyNDVhZDc3NmM0ODc5ZDIwN2YxNTU3Y2FhYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAt
ODI3LDYgKzgyNywxMyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkg
Y29uc3QKICAgICByZXR1cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOwogfQogCitpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBDYWxsVHlwZSB1
bnVzZWRUeXBlOworICAgIENhbGxEYXRhIHVudXNlZERhdGE7CisgICAgcmV0dXJuIGlzQ2FsbGFi
bGUodm0sIHVudXNlZFR5cGUsIHVudXNlZERhdGEpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc0NhbGxhYmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERh
dGEpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXN0LmgKaW5kZXggZThiMjNjZTU5OWQzNjJkYzY1ZjMzZjhlZjIzYWQ4ZjVkNmQ5NzEx
Yi4uYjI1MDM1NjljODQyMjU2MDExNDFhODBjZjU5ODQ4ZjVkNjczYjc0YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTYwLDEzICs2MCwxMyBAQCBpbmxpbmUgVG8g
anNDYXN0KEpTVmFsdWUgZnJvbSkKIC8vIFNwZWNpZmljIHR5cGUgb3ZlcmxvYWRzLgogI2RlZmlu
ZSBGT1JfRUFDSF9KU19EWU5BTUlDX0NBU1RfSlNfVFlQRV9PVkVSTE9BRChtYWNybykgXAogICAg
IG1hY3JvKEpTSW1tdXRhYmxlQnV0dGVyZmx5LCBKU1R5cGU6OkpTSW1tdXRhYmxlQnV0dGVyZmx5
VHlwZSwgSlNUeXBlOjpKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIFwKLSAgICBtYWNybyhKU0Fy
cmF5SXRlcmF0b3IsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU0FycmF5
SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0
cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1h
Y3JvKEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFj
cm8oSlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxP
YmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlw
ZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24s
IEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5
cGUpIFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJp
dmVkQXJyYXlUeXBlKSBcCisgICAgbWFjcm8oSlNBcnJheUl0ZXJhdG9yLCBKU1R5cGU6OkpTQXJy
YXlJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3Jv
KEpTQXJyYXlCdWZmZXIsIEpTVHlwZTo6QXJyYXlCdWZmZXJUeXBlLCBKU1R5cGU6OkFycmF5QnVm
ZmVyVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3LCBGaXJzdFR5cGVkQXJyYXlU
eXBlLCBMYXN0VHlwZWRBcnJheVR5cGUpIFwKICAgICBtYWNybyhKU1Byb21pc2UsIEpTVHlwZTo6
SlNQcm9taXNlVHlwZSwgSlNUeXBlOjpKU1Byb21pc2VUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwZTE4OTYwZTQ4MWEzMjRh
ZGMyNTY4ZWZkYmIyNGNlYWYxNGEwZjM3Li5mOTUzZjc3OGIzMTliYzIxNjJmMjgwZDY4MDY0ZTgy
ZTUwNGZkMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTYxNSw2ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiogdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9U
b1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5j
dGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7
IH0KKyAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb25Db25jdXJyZW50bHko
KSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXRDb25jdXJyZW50
bHkoKTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpT
RnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1
bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYzI4YmZjMzRiZmU4MGY3NjM0YTQwZTFmMzhkMDI5N2I2
YTcwZDcxZS4uYmRmYmY0YzdlMWM5OTgxOTg4OWE4N2EwODRhZjUxNzFlNzFkODU0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC0xMTksNiArMTE5
LDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxz
ZTsKICAgICB2KFVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAwMCwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRhaWxEZWxldGVkRnJh
bWVzU2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCisgICAgdihCb29sLCB1c2VJ
dGVyYXRpb25JbnRyaW5zaWNzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICBcCiAgICAg
dihCb29sLCB1c2VPU0xvZywgZmFsc2UsIE5vcm1hbCwgIkxvZyBkYXRhTG9nKClzIHRvIG9zX2xv
ZyBpbnN0ZWFkIG9mIHN0ZGVyciIpIFwKICAgICAvKiBkdW1wRGlzYXNzZW1ibHkgaW1wbGllcyBk
dW1wREZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KEJvb2wsIGR1bXBEaXNhc3NlbWJseSwgZmFs
c2UsIE5vcm1hbCwgImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFsbCBKSVQgY29tcGlsZWQgY29kZSB1
cG9uIGNvbXBpbGF0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKaW5kZXggNzY0YWQwNjVhYzAxMWUzM2MzMjM4Y2Q5ZGE5NTM5YzE1ODM5MjNlNS4u
OWMyY2U3YWZhZTZlMzhlN2E2MDgwMjZmNTE3NzExMGUzYzg1NTYyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMjY4LDYgKzEyNjgsOCBAQCB2
b2lkIFN0cnVjdHVyZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4
dCogY29udGV4dCkgY29uc3QKIHZvaWQgU3RydWN0dXJlOjpkdW1wQnJpZWYoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKSBjb25zdAogewogICAgIG91dC5wcmludCgiJSIs
IHN0cmluZywgIjoiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBpZiAoaW5kZXhpbmdU
eXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykKKyAgICAgICAgb3V0LnByaW50KCIsIiwgSW5kZXhp
bmdUeXBlRHVtcChpbmRleGluZ1R5cGUoKSkpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6ZHVtcENv
bnRleHRIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9FbnVtQ2xhc3NP
cGVyYXRvck92ZXJsb2Fkcy5oCmluZGV4IDM1N2JhMmZhMmY3OTI5YTZhOTk4YTlhNGVmMTRkMmJl
NTc1NDYzNzEuLjU2YWJjNGI1M2VjOWZhYjYwNzViZjZkMmViYmJlZDFmMzNjZGY5ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VudW1DbGFzc09wZXJhdG9yT3ZlcmxvYWRzLmgKKysrIGIv
U291cmNlL1dURi93dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaApAQCAtNTksMyArNTks
OSBAQAogCiAjZGVmaW5lIE9WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9FTlVNX0NM
QVNTX1dJVEhfSU5URUdSQUxTKGVudW1OYW1lKSBPVkVSTE9BRF9SRUxBVElPTkFMX09QRVJBVE9S
U19GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCBzdGQ6OmlzX2ludGVncmFsX3Y8VD4pCiAK
KyNkZWZpbmUgT1ZFUkxPQURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihl
bnVtTmFtZSwgZW5hYmxlRXhwcmVzc2lvbikgXAorICAgIE9WRVJMT0FEX09QRVJBVE9SX0ZPUl9F
TlVNX0NMQVNTX1dIRU4oZW51bU5hbWUsIHwsIGVuYWJsZUV4cHJlc3Npb24pIFwKKyAgICBPVkVS
TE9BRF9PUEVSQVRPUl9GT1JfRU5VTV9DTEFTU19XSEVOKGVudW1OYW1lLCAmLCBlbmFibGVFeHBy
ZXNzaW9uKSBcCisgICAgT1ZFUkxPQURfT1BFUkFUT1JfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVt
TmFtZSwgXiwgZW5hYmxlRXhwcmVzc2lvbikgXAorCisjZGVmaW5lIE9WRVJMT0FEX0JJVFdJU0Vf
T1BFUkFUT1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URVJHUkFMUyhlbnVtTmFtZSkgT1ZFUkxP
QURfQklUV0lTRV9PUEVSQVRPUlNfRk9SX0VOVU1fQ0xBU1NfV0hFTihlbnVtTmFtZSwgc3RkOjpp
c19pbnRlZ3JhbF92PFQ+KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCA1NDJjYmViZDljYWY4MjQ5MWM0OWMxNTNmZTQyNmExMzg5ODQzMWVj
Li4zMjBiYWVhNTk1N2QwODU3YmZmZDM0ZTQ0Y2ZkZDgwMGEyYThiYmM0IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBA
CisyMDIwLTA0LTE4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBmb3Itb2YgaXRlcmF0aW9uIGZvciBKU0FycmF5cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3MvZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcy5qczoKKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogc3RyZXNzL2N1c3RvbS1pdGVyYXRvcnMuanM6CisgICAgICAgIChjYXRjaCk6Cisg
ICAgICAgIChpdGVyLnJldHVybik6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUVycm9yVGVz
dCk6CisgICAgICAgIChpdGVyYXRvckludGVyZmFjZUVycm9yVGVzdFJldHVybik6CisgICAgICAg
IChpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybik6CisgICAgICAgICogc3RyZXNzL2Zv
ci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgor
ICAgICAgICAoYXJyYXkuU3ltYm9sLml0ZXJhdG9yLl9fcHJvdG9fXy5uZXh0KToKKyAgICAgICAg
KiBzdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5qczogQWRkZWQuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLW5vLWRpcmVjdC1sb29wLWJhY2stZWRnZS1v
c3IuanM6IEFkZGVkLgorICAgICAgICAob3NySWZGaW5hbFRpZXIpOgorICAgICAgICAodGVzdCk6
CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanM6
IEFkZGVkLgorICAgICAgICAoZmluZCk6CisgICAgICAgIChpLmxldC52Lm9mLmZpbmQpOgorICAg
ICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoc2V0IGFkZCk6CisgICAgICAgICogc3RyZXNz
L29zci1mcm9tLWZvci1vZi1kb25lLWdldHRlci5qczogQWRkZWQuCisgICAgICAgIChpLmxldC5p
dGVyYWJsZS5uZXh0LnJldHVybi5nZXQgZG9uZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5u
ZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy9vc3ItZnJvbS1mb3It
b2YtdmFsdWUtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLm5leHQu
cmV0dXJuLmdldCB2YWx1ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAg
ICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVy
YWJsZS5yZXR1cm4pOgorICAgICAgICAqIHN0cmVzcy90aHJvdy1mb3Itb2YtbmV4dC1yZXR1cm5z
LW5vbi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6Cisg
ICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoaS5sZXQu
aXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy90
aHJvdy1mcm9tLWRvbmUtZ2V0dGVyLWluLWZvci1vZi1oZWFkZXIuanM6IEFkZGVkLgorICAgICAg
ICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5nZXQgZG9u
ZSk6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAo
aS5sZXQuaXRlcmFibGUucmV0dXJuKToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAqIHN0
cmVzcy90aHJvdy1mcm9tLW5leHQtaW4tZm9yLW9mLWhlYWRlci5qczogQWRkZWQuCisgICAgICAg
IChpLmxldC5pdGVyYWJsZS5uZXh0KToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLlN5bWJvbC5p
dGVyYXRvcik6CisgICAgICAgIChpLmxldC5pdGVyYWJsZS5yZXR1cm4pOgorICAgICAgICAoaS5j
YXRjaCk6CisgICAgICAgICogc3RyZXNzL3Rocm93LWZyb20tdmFsdWUtZ2V0dGVyLWluLWZvci1v
Zi1oZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAoaS5sZXQuaXRlcmFibGUubmV4dCk6CisgICAg
ICAgIChpLmxldC5pdGVyYWJsZS5nZXQgdmFsdWUpOgorICAgICAgICAoaS5sZXQuaXRlcmFibGUu
U3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKGkubGV0Lml0ZXJhYmxlLnJldHVybik6CisgICAg
ICAgIChpLmNhdGNoKToKKyAgICAgICAgKiBzdHJlc3Mvd2ViaWRsLXRva2VuaXplci1mb3Itb2Yu
anM6IEFkZGVkLgorICAgICAgICAodG9rZW5pc2UuYXR0ZW1wdFRva2VuTWF0Y2gpOgorICAgICAg
ICAodG9rZW5pc2UpOgorICAgICAgICAoVG9rZW5pc2VyKToKKyAgICAgICAgKFRva2VuaXNlci5w
cm90b3R5cGUucHJvYmUpOgorICAgICAgICAoVG9rZW5pc2VyLnByb3RvdHlwZS5jb25zdW1lKToK
KyAgICAgICAgKFRva2VuaXNlci5wcm90b3R5cGUudW5jb25zdW1lKToKKwogMjAyMC0wNC0xNiAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxl
bWVudCBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0
ZS1hcnJheS1lbnRyaWVzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZm9yLW9mLWl0ZXJh
dGUtYXJyYXktZW50cmllcy5qcwppbmRleCA1NWVjYzBiZmNmOTE5Y2FjYWU3ZmQxNWRkYjQwYjE0
ZmRjYTk0ZWRhLi4yMDEyYjkxMjg1MGY1ODExNjdmYmQzMTA1MDU5Yjc2ZDc2NjNiNmQ4IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRy
aWVzLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zvci1vZi1pdGVyYXRlLWFycmF5
LWVudHJpZXMuanMKQEAgLTMsMTAgKzMsMTIgQEAgZnVuY3Rpb24gZm9vKCkgewogICAgIHZhciBh
cnJheSA9IFtdOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjUwMDA7IGkrKykKICAgICAgICAg
YXJyYXkucHVzaChpKTsKLSAgICAKKwogICAgIHZhciByZXN1bHQgPSAwOwotICAgIGZvciAodmFy
IFtrZXksIHZhbHVlXSBvZiBhcnJheS5lbnRyaWVzKCkpCisgICAgZm9yICh2YXIgW2tleSwgdmFs
dWVdIG9mIGFycmF5LmVudHJpZXMoKSkgeworICAgICAgICBwcmludChrZXkgKyAiICIgKyAkdm0u
aW5kZXhpbmdNb2RlKGFycmF5KSk7CiAgICAgICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1ZSArIGFy
cmF5W2tleV07CisgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY3Vz
dG9tLWl0ZXJhdG9ycy5qcwppbmRleCBmZDY0MTNmZTNiNWU5MDNhZmZlMzgwM2ZkMDA0YzBjYjFm
MWM2NGYzLi5kM2QxYmQ3ZTg1OGU4NzRmYmQxMTNkODJmOTIxMWVhNGJkNWVmN2I1IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9jdXN0b20taXRlcmF0b3JzLmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2N1c3RvbS1pdGVyYXRvcnMuanMKQEAgLTIyLDcgKzIyLDcgQEAgZm9yICh2YXIgdmFsdWUg
b2YgaXRlcikgewogICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwog
fQogaWYgKHJldHVybkNhbGxlZCkKLSAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQu
IjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiAKIAogCkBAIC01
Myw3ICs1Myw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmco
ZSkgIT09ICJFcnJvcjogVGVybWluYXRlIGl0ZXJhdGlvbi4iKQotICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBlOworICAgICAgICB0aHJvdyBlOwogfQogaWYgKCFy
ZXR1cm5DYWxsZWQpCiAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpA
QCAtMTA4LDEwICsxMDgsMTAgQEAgdHJ5IHsKICAgICB9CiB9IGNhdGNoIChlKSB7CiAgICAgaWYg
KFN0cmluZyhlKSAhPT0gIkVycm9yOiBsb29raW5nIHVwIG5leHQuIikKLSAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIGlm
IChyZXR1cm5DYWxsZWQpCi0gICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgY2FsbGVkLiI7Cisg
ICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogCiAKIApAQCAtMTM2LDcg
KzEzNiw3IEBAIHRyeSB7CiAgICAgfQogfSBjYXRjaCAoZSkgewogICAgIGlmIChTdHJpbmcoZSkg
IT09ICJFcnJvcjogbG9va2luZyB1cCByZXR1cm4uIikKLSAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgdGhyb3cgZTsKIH0KIAogCkBAIC0xNjUs
MTAgKzE2NSwxMCBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUpIHsKICAgICBpZiAoU3RyaW5n
KGUpICE9PSAiRXJyb3I6IG5leHQgaXMgY2FsbGVkLiIpCi0gICAgICAgIHRocm93ICJFcnJvcjog
YmFkIGVycm9yIHRocm93bjogIiArIGU7CisgICAgICAgIHRocm93IGU7CiB9CiBpZiAocmV0dXJu
Q2FsbGVkKQotICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNhbGxlZC4iOworICAgIHRocm93
IG5ldyBFcnJvcigicmV0dXJuIHdhcyBjYWxsZWQiKTsKIAogCiAKQEAgLTE4Myw3ICsxODMsNyBA
QCB2YXIgaXRlciA9IHsKICAgICB9LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAg
ICByZXR1cm5DYWxsZWQgPSB0cnVlOwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBj
YWxsZWQuIjsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwog
ICAgIH0KIH07CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB0cnkgewogICAgIH0KIH0gY2F0Y2ggKGUp
IHsKICAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IFRlcm1pbmF0ZSBpdGVyYXRpb24uIikK
LSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAg
dGhyb3cgZTsKIH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJu
IGlzIG5vdCBjYWxsZWQuIjsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2YXIgaXRlciA9IHsKICAgICB9
LAogICAgIHJldHVybjogZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVl
OwotICAgICAgICB0aHJvdyAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIjsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJyZXR1cm4gd2FzIGNhbGxlZCIpOwogICAgIH0KIH07CiB0cnkgewpAQCAt
MjE4LDggKzIxOCw4IEBAIHRyeSB7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0gY2F0Y2ggKGUp
IHsKLSAgICBpZiAoU3RyaW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiBpcyBjYWxsZWQuIikKLSAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICBpZiAoU3Ry
aW5nKGUpICE9PSAiRXJyb3I6IHJldHVybiB3YXMgY2FsbGVkIikKKyAgICAgICAgdGhyb3cgZTsK
IH0KIGlmICghcmV0dXJuQ2FsbGVkKQogICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBj
YWxsZWQuIjsKQEAgLTI1NSwxMCArMjU1LDEwIEBAIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNl
RXJyb3JUZXN0KG5vdEl0ZXJhdG9yUmVzdWx0KSB7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChl
KSB7CiAgICAgICAgIGlmIChTdHJpbmcoZSkgIT09ICJUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZTsKKyAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQog
ICAgIGlmIChyZXR1cm5DYWxsZWQpCi0gICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIGNh
bGxlZC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJldHVybiB3YXMgY2FsbGVkIik7CiB9
CiAKIGZ1bmN0aW9uIGl0ZXJhdG9ySW50ZXJmYWNlRXJyb3JUZXN0UmV0dXJuKG5vdEl0ZXJhdG9y
UmVzdWx0KSB7CkBAIC0yODIsNyArMjgyLDcgQEAgZnVuY3Rpb24gaXRlcmF0b3JJbnRlcmZhY2VF
cnJvclRlc3RSZXR1cm4obm90SXRlcmF0b3JSZXN1bHQpIHsKICAgICAgICAgfQogICAgIH0gY2F0
Y2ggKGUpIHsKICAgICAgICAgaWYgKFN0cmluZyhlKSAhPT0gIkVycm9yOiBUZXJtaW5hdGUgaXRl
cmF0aW9uLiIpCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIg
KyBlOworICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CiAgICAgaWYgKCFyZXR1cm5DYWxsZWQp
CiAgICAgICAgIHRocm93ICJFcnJvcjogcmV0dXJuIGlzIG5vdCBjYWxsZWQuIjsKQEAgLTMxMyw3
ICszMTMsNyBAQCBmdW5jdGlvbiBpdGVyYXRvckludGVyZmFjZUJyZWFrVGVzdFJldHVybihub3RJ
dGVyYXRvclJlc3VsdCkgewogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBp
ZiAoU3RyaW5nKGUpICE9PSAiVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIikKLSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRo
cm93bjogIiArIGU7CisgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KICAgICBpZiAoIXJldHVy
bkNhbGxlZCkKICAgICAgICAgdGhyb3cgIkVycm9yOiByZXR1cm4gaXMgbm90IGNhbGxlZC4iOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxz
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdkNzdjZjg4YWI2MDJjZTRkMzg3YjcxZGNjZmJmMWRhZjIwZjhlMmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWdsb2Jh
bHMuanMKQEAgLTAsMCArMSwyMiBAQAorbGV0IGNvdW50ID0gMDsKKworZnVuY3Rpb24gZm9vKGFy
cmF5KSB7CisgICAgZm9yIChsZXQgdiBvZiBhcnJheSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCk7Cit9Citub0lubGluZShmb28pOworCitsZXQgb3RoZXJHbG9iYWwgPSBjcmVhdGVHbG9iYWxP
YmplY3QoKTsKK2xldCBhcnJheSA9IG90aGVyR2xvYmFsLkFycmF5KCk7CithcnJheVtTeW1ib2wu
aXRlcmF0b3JdKCkuX19wcm90b19fLm5leHQgPSBmdW5jdGlvbiAoKSB7CisgICAgY291bnQrKzsK
KyAgICByZXR1cm4geyBkb25lOiB0cnVlIH07Cit9CithcnJheVswXSA9IDE7CisKK2NvbnN0IGl0
ZXJDb3VudCA9IDFlNTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgaXRlckNvdW50OyArK2kpCisgICAg
Zm9vKGFycmF5KTsKKworaWYgKGl0ZXJDb3VudCAhPT0gY291bnQpCisgICAgdGhyb3cgbmV3IEVy
cm9yKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktbWl4ZWQtdmFs
dWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNDk4YTYwNDMzZGYyZGMxNzUzYTlkN2I4OGI5NmJkMzI0MDA2ZjgxCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LW1peGVkLXZhbHVlcy5qcwpA
QCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiB0ZXN0KGFycmF5KSB7CisgICAgbGV0IHN1bSA9IDA7
CisgICAgZm9yIChsZXQgdiBvZiBhcnJheSkgeworICAgICAgICBpZiAodHlwZW9mIHYgPT09ICJu
dW1iZXIiKQorICAgICAgICAgICAgc3VtICs9IHY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVybiBzdW07CisgICAgfQorfQorbm9JbmxpbmUodGVzdCk7CisKK2xldCBhcnJheSA9IFsx
LDIsMyw0LCJzdHJpbmciXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBp
ZiAodGVzdChhcnJheSkgIT09IDEwKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KKwor
CithcnJheSA9IFsxLDIsMyw0LHt9XQorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgewor
ICAgIGlmICh0ZXN0KGFycmF5KSAhPT0gMTApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLW5vLWRpcmVjdC1sb29wLWJhY2st
ZWRnZS1vc3IuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2Ytbm8tZGlyZWN0LWxvb3AtYmFjay1l
ZGdlLW9zci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWFkOWQ0NDBiNGJiMTNiMTc0NDkwNGI2ZWE1OTVkNmZk
MGE5NWNjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLW5vLWRpcmVj
dC1sb29wLWJhY2stZWRnZS1vc3IuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gb3NySWZG
aW5hbFRpZXIodikgeworICAgIGlmIChpc0ZpbmFsVGllcigpKQorICAgICAgICBPU1JFeGl0KCk7
CisgICAgcmV0dXJuIHYgIT09IDA7Cit9CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXkpIHsKKyAgICBs
ZXQgc3VtID0gMDsKKyAgICBmb3IgKGxldCB2IG9mIGFycmF5KSB7CisgICAgICAgIHN1bSArPSB2
OworICAgICAgICBpZiAob3NySWZGaW5hbFRpZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICByZXR1cm4gc3VtOworICAgIH0KK30KK25vSW5saW5lKHRlc3QpOworCitsZXQgYXJy
YXkgPSBbMSwyLDMsNCw1LDBdCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHRl
c3QoYXJyYXkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnRhaW5p
bmctZm9yLW9mLW9uLW1hcC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb250YWluaW5n
LWZvci1vZi1vbi1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4YjdlZTgxNDI0YTJkMmY1MzhjZTdiMjA1
OWQ4ZDZlNDU4ZTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1jb250YWluaW5nLWZvci1vZi1vbi1tYXAuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24g
KmZpbmQobm9kZXMsIHApCit7CisgICAgZm9yIChsZXQgW2FycmF5XSBvZiBub2RlcykgeworICAg
ICAgICBpZiAoIWFycmF5LmZpbmQoKHYpID0+IHYgPT09IHApKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIHlpZWxkIGFycmF5OworICAgIH0KK30KK25vSW5saW5lKGZpbmQpOworCits
ZXQgbWFwID0gbmV3IE1hcCgpOworbm9JbmxpbmUobWFwW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0
KTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpCisgICAgbWFwLnNldChbMSwyLDQsNSw1
XSwge30pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZm9yIChsZXQg
diBvZiBmaW5kKG1hcCwgaSAlIDIpKSB7IH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1jb250YWluaW5nLWZvci1vZi1vbi1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZjMyNzM5
MGQ3Mzc1YTIyMDJhZTU5YTExMjQ2NTY5OGNiNmVhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItY29udGFpbmluZy1mb3Itb2Ytb24tc2V0LmpzCkBAIC0wLDAg
KzEsMjMgQEAKK2Z1bmN0aW9uICpmaW5kKG5vZGVzLCBwKQoreworICAgIGZvciAobGV0IGFycmF5
IG9mIG5vZGVzKSB7CisgICAgICAgIGlmICghYXJyYXkuZmluZCgodikgPT4gdiA9PT0gcCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgeWllbGQgYXJyYXk7CisgICAgfQorfQorbm9J
bmxpbmUoZmluZCk7CisKK2xldCBzZXQgPSBuZXcgU2V0KCk7Citub0lubGluZShzZXRbU3ltYm9s
Lml0ZXJhdG9yXSgpLm5leHQpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICBz
ZXQuYWRkKFsxLDIsNCw1LDVdLCB7fSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyArK2kp
IHsKKyAgICBmb3IgKGxldCB2IG9mIGZpbmQoc2V0LCBpICUgMikpIHsKKyAgICAgICAgaWYgKGkg
JSAyICE9PSAxKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJubyByZXN1bHQgc2hvdWxk
IGhhdmUgYmVlbiBwcm9kdWNlZCBoZXJlIik7CisgICAgICAgIGlmICghKHYgaW5zdGFuY2VvZiBB
cnJheSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInJlc3VsdCB3YXMgbm90IGFuIGFy
cmF5Iik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9y
LW9mLWRvbmUtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLWRvbmUt
Z2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNGM0OWM5M2IyOWZjYjBmNzEwYzZjODJkMWZkODgwMDFh
MjJlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vc3ItZnJvbS1mb3Itb2Yt
ZG9uZS1nZXR0ZXIuanMKQEAgLTAsMCArMSwyMyBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7
ICsraSkgeworICAgIGxldCByZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUg
PSB7CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ICAgIGdldCBkb25lKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5hbFRpZXIoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlT1NSKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAg
ICAgIHJldHVybigpIHsgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICB9OworICAgIHRyeSB7
CisgICAgICAgIGZvciAoXyBvZiBpdGVyYWJsZSkgeyB9CisgICAgfSBjYXRjaCB7CisgICAgfQor
ICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3NyLWZyb20tZm9yLW9mLXZhbHVlLWdldHRlci5qcyBi
L0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTcwOTZlZTAzZTE1MjU3M2FlZGM2NGQwNDM5ZmIyYmYyMmM2NDE1YgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL29zci1mcm9tLWZvci1vZi12YWx1ZS1nZXR0ZXIuanMKQEAg
LTAsMCArMSwyMSBAQAorZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGxldCBy
ZXR1cm5DYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaXRlcmFibGUgPSB7CisgICAgICAgIGRvbmU6
IDAsCisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ICAgIGRvbmU6IHRoaXMuZG9uZSsrLAorICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsgaWYg
KGlzRmluYWxUaWVyKCkpIEZvcmNlT1NSKCk7ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0s
CisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAg
ICByZXR1cm4oKSB7IHJldHVybkNhbGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgewor
ICAgICAgICBmb3IgKF8gb2YgaXRlcmFibGUpIHsgfQorICAgIH0gY2F0Y2ggeworICAgIH0KKyAg
ICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVj
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZvci1vZi1uZXh0LXJldHVybnMtbm9uLW9iamVj
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMmJkMzJhZGQ3Y2MzYmEzNDMyNTRkYTcxMDhlNTE5ZmY3NWIzMjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZm9yLW9mLW5leHQtcmV0
dXJucy1ub24tb2JqZWN0LmpzCkBAIC0wLDAgKzEsMTYgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MWU1OyArK2kpIHsKKyAgICBsZXQgcmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJh
YmxlID0geworICAgICAgICBuZXh0KCkgeyByZXR1cm4gMTsgfSwKKyAgICAgICAgW1N5bWJvbC5p
dGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7IHJldHVybkNh
bGxlZCA9IHRydWU7IH0sCisgICAgfTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2YgaXRl
cmFibGUpIHsgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT0gIlR5cGVFcnJv
cjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpCisgICAgICAg
ICAgICB0aHJvdyBlOworICAgIH0KKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZyb20t
ZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rocm93LWZy
b20tZG9uZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGExNDJjOGE2
YzU0ZjQ3NmVjMDM5YTE0ZTllMmQzZTdiOTZkZjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvdGhyb3ctZnJvbS1kb25lLWdldHRlci1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0w
LDAgKzEsMjQgQEAKK2ZvciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVy
cm9yOworICAgIGxldCByZXR1cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAg
ICBuZXh0KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZ2V0IGRvbmUoKSB7CisgICAgICAg
ICAgICB0aHJvdyBlcnJvciA9IG5ldyBFcnJvcigpOworICAgICAgICB9LAorICAgICAgICBbU3lt
Ym9sLml0ZXJhdG9yXSgpIHsgcmV0dXJuIHRoaXM7IH0sCisgICAgICAgIHJldHVybigpIHsKKyAg
ICAgICAgICAgIHJldHVybkNhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHRy
eSB7CisgICAgICAgIGZvciAoYSBvZiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgIT09IGVycm9yKQorICAg
ICAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuQ2FsbGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rocm93
LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJv
bS1uZXh0LWluLWZvci1vZi1oZWFkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IxOTRmZDdjYTVhYzU5YWQ2
OTYxOTQyZjg2MjdiNjBhNWFhMzAxOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3Rocm93LWZyb20tbmV4dC1pbi1mb3Itb2YtaGVhZGVyLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Zv
ciAobGV0IGkgPSAwOyBpIDw9IDFlNTsgKytpKSB7CisgICAgbGV0IGVycm9yOworICAgIGxldCBy
ZXR1cm5DYWxsZWQ7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0KCkgeworICAg
ICAgICAgICAgdGhyb3cgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSwKKyAgICAgICAg
W1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzOyB9LAorICAgICAgICByZXR1cm4oKSB7
CisgICAgICAgICAgICByZXR1cm5DYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAg
ICBub0lubGluZShpdGVyYWJsZS5uZXh0KTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKF8gb2Yg
aXRlcmFibGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJvcnIoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGlmIChlICE9PSBlcnJvcikKKyAgICAgICAgICAgIHRocm93IGU7CisgICAg
fQorCisgICAgaWYgKHJldHVybkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90aHJvdy1mcm9tLXZhbHVlLWdldHRlci1pbi1m
b3Itb2YtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ctZnJvbS12YWx1ZS1nZXR0ZXIt
aW4tZm9yLW9mLWhlYWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDg3ODgzNThlNGVkMzA2MTJhY2M2ZjJl
ZjNhMzBkOGQ1NjY2NzlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGhyb3ct
ZnJvbS12YWx1ZS1nZXR0ZXItaW4tZm9yLW9mLWhlYWRlci5qcwpAQCAtMCwwICsxLDI3IEBACitm
b3IgKGxldCBpID0gMDsgaSA8PSAxZTU7ICsraSkgeworICAgIGxldCBlcnJvcjsKKyAgICBsZXQg
cmV0dXJuQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGl0ZXJhYmxlID0geworICAgICAgICBuZXh0
KCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAgICAgZG9uZTogZmFsc2UsCisgICAgICAgIGdldCB2
YWx1ZSgpIHsKKyAgICAgICAgICAgIHRocm93IGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAg
IH0sCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpczsgfSwKKyAgICAg
ICAgcmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAgZm9yIChhIG9mIGl0ZXJhYmxlKSB7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICB9
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSAhPT0gZXJyb3IpCisgICAgICAgICAg
ICB0aHJvdyBlOworICAgIH0KKworICAgIGlmIChyZXR1cm5DYWxsZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvd2ViaWRsLXRva2Vu
aXplci1mb3Itb2YuanMgYi9KU1Rlc3RzL3N0cmVzcy93ZWJpZGwtdG9rZW5pemVyLWZvci1vZi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNWFiNTI0OTAxMTliOTJmYzY3YmI1MThjZjFiNjY5NDU1YjM0NDQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvd2ViaWRsLXRva2VuaXplci1mb3Itb2Yu
anMKQEAgLTAsMCArMSwzMjQ1IEBACisvLyBUaGVzZSByZWd1bGFyIGV4cHJlc3Npb25zIHVzZSB0
aGUgc3RpY2t5IGZsYWcgc28gdGhleSB3aWxsIG9ubHkgbWF0Y2ggYXQKKy8vIHRoZSBjdXJyZW50
IGxvY2F0aW9uIChpZS4gdGhlIG9mZnNldCBvZiBsYXN0SW5kZXgpLgorY29uc3QgdG9rZW5SZSA9
IHsKKyAgLy8gVGhpcyBleHByZXNzaW9uIHVzZXMgYSBsb29rYWhlYWQgYXNzZXJ0aW9uIHRvIGNh
dGNoIGZhbHNlIG1hdGNoZXMKKyAgLy8gYWdhaW5zdCBpbnRlZ2VycyBlYXJseS4KKyAgImRlY2lt
YWwiOiAvLT8oPz1bMC05XSpcLnxbMC05XStbZUVdKSgoWzAtOV0rXC5bMC05XSp8WzAtOV0qXC5b
MC05XSspKFtFZV1bLStdP1swLTldKyk/fFswLTldK1tFZV1bLStdP1swLTldKykveSwKKyAgImlu
dGVnZXIiOiAvLT8oMChbWHhdWzAtOUEtRmEtZl0rfFswLTddKil8WzEtOV1bMC05XSopL3ksCisg
ICJpZGVudGlmaWVyIjogL1tfLV0/W0EtWmEtel1bMC05QS1aX2Etei1dKi95LAorICAic3RyaW5n
IjogLyJbXiJdKiIveSwKKyAgIndoaXRlc3BhY2UiOiAvW1x0XG5cciBdKy95LAorICAiY29tbWVu
dCI6IC8oKFwvKFwvLip8XCooW14qXXxcKlteL10pKlwqXC8pW1x0XG5cciBdKikrKS95LAorICAi
b3RoZXIiOiAvW15cdFxuXHIgMC05QS1aYS16XS95Cit9OworCitjb25zdCBzdHJpbmdUeXBlcyA9
IFsKKyAgIkJ5dGVTdHJpbmciLAorICAiRE9NU3RyaW5nIiwKKyAgIlVTVlN0cmluZyIKK107Cisi
dXNlIHN0cmljdCI7CisKK2NvbnN0IGFyZ3VtZW50TmFtZUtleXdvcmRzID0gWworICAiYXN5bmMi
LAorICAiYXR0cmlidXRlIiwKKyAgImNhbGxiYWNrIiwKKyAgImNvbnN0IiwKKyAgImNvbnN0cnVj
dG9yIiwKKyAgImRlbGV0ZXIiLAorICAiZGljdGlvbmFyeSIsCisgICJlbnVtIiwKKyAgImdldHRl
ciIsCisgICJpbmNsdWRlcyIsCisgICJpbmhlcml0IiwKKyAgImludGVyZmFjZSIsCisgICJpdGVy
YWJsZSIsCisgICJtYXBsaWtlIiwKKyAgIm5hbWVzcGFjZSIsCisgICJwYXJ0aWFsIiwKKyAgInJl
cXVpcmVkIiwKKyAgInNldGxpa2UiLAorICAic2V0dGVyIiwKKyAgInN0YXRpYyIsCisgICJzdHJp
bmdpZmllciIsCisgICJ0eXBlZGVmIiwKKyAgInVucmVzdHJpY3RlZCIKK107CisKK2NvbnN0IG5v
blJlZ2V4VGVybWluYWxzID0gWworICAiLUluZmluaXR5IiwKKyAgIkZyb3plbkFycmF5IiwKKyAg
IkluZmluaXR5IiwKKyAgIk5hTiIsCisgICJQcm9taXNlIiwKKyAgImFzeW5jIiwKKyAgImJvb2xl
YW4iLAorICAiYnl0ZSIsCisgICJjb25zdHJ1Y3RvciIsCisgICJkb3VibGUiLAorICAiZmFsc2Ui
LAorICAiZmxvYXQiLAorICAibG9uZyIsCisgICJtaXhpbiIsCisgICJudWxsIiwKKyAgIm9jdGV0
IiwKKyAgIm9wdGlvbmFsIiwKKyAgIm9yIiwKKyAgInJlYWRvbmx5IiwKKyAgInJlY29yZCIsCisg
ICJzZXF1ZW5jZSIsCisgICJzaG9ydCIsCisgICJ0cnVlIiwKKyAgInVuc2lnbmVkIiwKKyAgInZv
aWQiCitdLmNvbmNhdChhcmd1bWVudE5hbWVLZXl3b3Jkcywgc3RyaW5nVHlwZXMpOworCitjb25z
dCBwdW5jdHVhdGlvbnMgPSBbCisgICIoIiwKKyAgIikiLAorICAiLCIsCisgICIuLi4iLAorICAi
OiIsCisgICI7IiwKKyAgIjwiLAorICAiPSIsCisgICI+IiwKKyAgIj8iLAorICAiWyIsCisgICJd
IiwKKyAgInsiLAorICAifSIKK107CisKK2NvbnN0IHJlc2VydmVkID0gWworICAvLyAiY29uc3Ry
dWN0b3IiIGlzIG5vdyBhIGtleXdvcmQKKyAgIl9jb25zdHJ1Y3RvciIsCisgICJ0b1N0cmluZyIs
CisgICJfdG9TdHJpbmciLAorXTsKKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gc3RyCisgKi8K
K2Z1bmN0aW9uIHRva2VuaXNlKHN0cikgeworICBjb25zdCB0b2tlbnMgPSBbXTsKKyAgbGV0IGxh
c3RDaGFySW5kZXggPSAwOworICBsZXQgdHJpdmlhID0gIiI7CisgIGxldCBsaW5lID0gMTsKKyAg
bGV0IGluZGV4ID0gMDsKKyAgd2hpbGUgKGxhc3RDaGFySW5kZXggPCBzdHIubGVuZ3RoKSB7Cisg
ICAgY29uc3QgbmV4dENoYXIgPSBzdHIuY2hhckF0KGxhc3RDaGFySW5kZXgpOworICAgIGxldCBy
ZXN1bHQgPSAtMTsKKworICAgIGlmICgvW1x0XG5cciBdLy50ZXN0KG5leHRDaGFyKSkgeworICAg
ICAgcmVzdWx0ID0gYXR0ZW1wdFRva2VuTWF0Y2goIndoaXRlc3BhY2UiLCB7IG5vRmx1c2hUcml2
aWE6IHRydWUgfSk7CisgICAgfSBlbHNlIGlmIChuZXh0Q2hhciA9PT0gJy8nKSB7CisgICAgICBy
ZXN1bHQgPSBhdHRlbXB0VG9rZW5NYXRjaCgiY29tbWVudCIsIHsgbm9GbHVzaFRyaXZpYTogdHJ1
ZSB9KTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0ICE9PSAtMSkgeworICAgICAgY29uc3QgY3Vy
cmVudFRyaXZpYSA9IHRva2Vucy5wb3AoKS52YWx1ZTsKKyAgICAgIGxpbmUgKz0gKGN1cnJlbnRU
cml2aWEubWF0Y2goL1xuL2cpIHx8IFtdKS5sZW5ndGg7CisgICAgICB0cml2aWEgKz0gY3VycmVu
dFRyaXZpYTsKKyAgICAgIGluZGV4IC09IDE7CisgICAgfSBlbHNlIGlmICgvWy0wLTkuQS1aX2Et
el0vLnRlc3QobmV4dENoYXIpKSB7CisgICAgICByZXN1bHQgPSBhdHRlbXB0VG9rZW5NYXRjaCgi
ZGVjaW1hbCIpOworICAgICAgaWYgKHJlc3VsdCA9PT0gLTEpIHsKKyAgICAgICAgcmVzdWx0ID0g
YXR0ZW1wdFRva2VuTWF0Y2goImludGVnZXIiKTsKKyAgICAgIH0KKyAgICAgIGlmIChyZXN1bHQg
PT09IC0xKSB7CisgICAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJpZGVudGlmaWVy
Iik7CisgICAgICAgIGNvbnN0IGxhc3RJbmRleCA9IHRva2Vucy5sZW5ndGggLSAxOworICAgICAg
ICBjb25zdCB0b2tlbiA9IHRva2Vuc1tsYXN0SW5kZXhdOworICAgICAgICBpZiAocmVzdWx0ICE9
PSAtMSkgeworICAgICAgICAgIGlmIChyZXNlcnZlZC5pbmNsdWRlcyh0b2tlbi52YWx1ZSkpIHsK
KyAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtPYmplY3QoX3Byb2R1Y3Rpb25zX2hlbHBl
cnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1sidW5lc2NhcGUiXSkodG9rZW4udmFs
dWUpfSBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIgYW5kIG11c3Qgbm90IGJlIHVzZWQuYDsKKyAg
ICAgICAgICAgIHRocm93IG5ldyBXZWJJRExQYXJzZUVycm9yKE9iamVjdChfZXJyb3JfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1sic3ludGF4RXJyb3IiXSkodG9rZW5zLCBsYXN0SW5k
ZXgsIG51bGwsIG1lc3NhZ2UpKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKG5vblJlZ2V4VGVybWlu
YWxzLmluY2x1ZGVzKHRva2VuLnZhbHVlKSkgeworICAgICAgICAgICAgdG9rZW4udHlwZSA9IHRv
a2VuLnZhbHVlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBp
ZiAobmV4dENoYXIgPT09ICciJykgeworICAgICAgcmVzdWx0ID0gYXR0ZW1wdFRva2VuTWF0Y2go
InN0cmluZyIpOworICAgIH0KKworICAgIGZvciAoY29uc3QgcHVuY3R1YXRpb24gb2YgcHVuY3R1
YXRpb25zKSB7CisgICAgICBpZiAoc3RyLnN0YXJ0c1dpdGgocHVuY3R1YXRpb24sIGxhc3RDaGFy
SW5kZXgpKSB7CisgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogcHVuY3R1YXRpb24sIHZhbHVl
OiBwdW5jdHVhdGlvbiwgdHJpdmlhLCBsaW5lLCBpbmRleCB9KTsKKyAgICAgICAgdHJpdmlhID0g
IiI7CisgICAgICAgIGxhc3RDaGFySW5kZXggKz0gcHVuY3R1YXRpb24ubGVuZ3RoOworICAgICAg
ICByZXN1bHQgPSBsYXN0Q2hhckluZGV4OworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBvdGhlciBhcyB0aGUgbGFzdCB0cnkKKyAgICBpZiAocmVzdWx0ID09PSAtMSkg
eworICAgICAgcmVzdWx0ID0gYXR0ZW1wdFRva2VuTWF0Y2goIm90aGVyIik7CisgICAgfQorICAg
IGlmIChyZXN1bHQgPT09IC0xKSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRva2VuIHN0cmVh
bSBub3QgcHJvZ3Jlc3NpbmciKTsKKyAgICB9CisgICAgbGFzdENoYXJJbmRleCA9IHJlc3VsdDsK
KyAgICBpbmRleCArPSAxOworICB9CisKKyAgLy8gcmVtYWluaW5nIHRyaXZpYSBhcyBlb2YKKyAg
dG9rZW5zLnB1c2goeworICAgIHR5cGU6ICJlb2YiLAorICAgIHZhbHVlOiAiIiwKKyAgICB0cml2
aWEKKyAgfSk7CisKKyAgcmV0dXJuIHRva2VuczsKKworICAvKioKKyAgICogQHBhcmFtIHtrZXlv
ZiB0b2tlblJlfSB0eXBlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAgICogQHBh
cmFtIHtib29sZWFufSBbb3B0aW9ucy5ub0ZsdXNoVHJpdmlhXQorICAgKi8KKyAgZnVuY3Rpb24g
YXR0ZW1wdFRva2VuTWF0Y2godHlwZSwgeyBub0ZsdXNoVHJpdmlhIH0gPSB7fSkgeworICAgIGNv
bnN0IHJlID0gdG9rZW5SZVt0eXBlXTsKKyAgICByZS5sYXN0SW5kZXggPSBsYXN0Q2hhckluZGV4
OworICAgIGNvbnN0IHJlc3VsdCA9IHJlLmV4ZWMoc3RyKTsKKyAgICBpZiAocmVzdWx0KSB7Cisg
ICAgICB0b2tlbnMucHVzaCh7IHR5cGUsIHZhbHVlOiByZXN1bHRbMF0sIHRyaXZpYSwgbGluZSwg
aW5kZXggfSk7CisgICAgICBpZiAoIW5vRmx1c2hUcml2aWEpIHsKKyAgICAgICAgdHJpdmlhID0g
IiI7CisgICAgICB9CisgICAgICByZXR1cm4gcmUubGFzdEluZGV4OworICAgIH0KKyAgICByZXR1
cm4gLTE7CisgIH0KK30KKworCitjbGFzcyBUb2tlbmlzZXIgeworICAvKioKKyAgICogQHBhcmFt
IHtzdHJpbmd9IGlkbAorICAgKi8KKyAgY29uc3RydWN0b3IoaWRsKSB7CisgICAgdGhpcy5zb3Vy
Y2UgPSB0b2tlbmlzZShpZGwpOworICAgIHRoaXMucG9zaXRpb24gPSAwOworICB9CisKKyAgLyoq
CisgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCisgICAqLworICBwcm9iZSh0eXBlKSB7CisgICAg
cmV0dXJuIHRoaXMuc291cmNlLmxlbmd0aCA+IHRoaXMucG9zaXRpb24gJiYgdGhpcy5zb3VyY2Vb
dGhpcy5wb3NpdGlvbl0udHlwZSA9PT0gdHlwZTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0g
IHsuLi5zdHJpbmd9IGNhbmRpZGF0ZXMKKyAgICovCisgIGNvbnN1bWUoLi4uY2FuZGlkYXRlcykg
eworICAgIGZvciAoY29uc3QgdHlwZSBvZiBjYW5kaWRhdGVzKSB7CisgICAgICBpZiAoIXRoaXMu
cHJvYmUodHlwZSkpIGNvbnRpbnVlOworICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnNvdXJjZVt0
aGlzLnBvc2l0aW9uXTsKKyAgICAgIHRoaXMucG9zaXRpb24rKzsKKyAgICAgIHJldHVybiB0b2tl
bjsKKyAgICB9CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHtudW1iZXJ9IHBvc2l0aW9uCisg
ICAqLworICB1bmNvbnN1bWUocG9zaXRpb24pIHsKKyAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRp
b247CisgIH0KK30KKworbm9JbmxpbmUoVG9rZW5pc2VyLnByb3RvdHlwZS5jb25zdW1lKTsKKwor
bGV0IGNvbnRlbnQgPSBgLy8gQ29udGVudCB3YXMgYXV0b21hdGljYWxseSBleHRyYWN0ZWQgYnkg
UmVmZnkgaW50byByZWZmeS1yZXBvcnRzCisvLyAoaHR0cHM6Ly9naXRodWIuY29tL3RpZG91c3Qv
cmVmZnktcmVwb3J0cykKKy8vIFNvdXJjZTogV2ViIENyeXB0b2dyYXBoeSBBUEkgKGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby93ZWJjcnlwdG8vT3ZlcnZpZXcuaHRtbCkKKworcGFydGlhbCBpbnRlcmZh
Y2UgbWl4aW4gV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZSB7CisgIFtTYW1lT2JqZWN0XSByZWFk
b25seSBhdHRyaWJ1dGUgQ3J5cHRvIGNyeXB0bzsKK307CisKK1tFeHBvc2VkPShXaW5kb3csV29y
a2VyKV0KK2ludGVyZmFjZSBDcnlwdG8geworICBbU2VjdXJlQ29udGV4dF0gcmVhZG9ubHkgYXR0
cmlidXRlIFN1YnRsZUNyeXB0byBzdWJ0bGU7CisgIEFycmF5QnVmZmVyVmlldyBnZXRSYW5kb21W
YWx1ZXMoQXJyYXlCdWZmZXJWaWV3IGFycmF5KTsKK307CisKK3R5cGVkZWYgKG9iamVjdCBvciBE
T01TdHJpbmcpIEFsZ29yaXRobUlkZW50aWZpZXI7CisKK3R5cGVkZWYgQWxnb3JpdGhtSWRlbnRp
ZmllciBIYXNoQWxnb3JpdGhtSWRlbnRpZmllcjsKKworZGljdGlvbmFyeSBBbGdvcml0aG0gewor
ICByZXF1aXJlZCBET01TdHJpbmcgbmFtZTsKK307CisKK2RpY3Rpb25hcnkgS2V5QWxnb3JpdGht
IHsKKyAgcmVxdWlyZWQgRE9NU3RyaW5nIG5hbWU7Cit9OworCitlbnVtIEtleVR5cGUgeyAicHVi
bGljIiwgInByaXZhdGUiLCAic2VjcmV0IiB9OworCitlbnVtIEtleVVzYWdlIHsgImVuY3J5cHQi
LCAiZGVjcnlwdCIsICJzaWduIiwgInZlcmlmeSIsICJkZXJpdmVLZXkiLCAiZGVyaXZlQml0cyIs
ICJ3cmFwS2V5IiwgInVud3JhcEtleSIgfTsKKworW1NlY3VyZUNvbnRleHQsRXhwb3NlZD0oV2lu
ZG93LFdvcmtlcildCitpbnRlcmZhY2UgQ3J5cHRvS2V5IHsKKyAgcmVhZG9ubHkgYXR0cmlidXRl
IEtleVR5cGUgdHlwZTsKKyAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZXh0cmFjdGFibGU7
CisgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3QgYWxnb3JpdGhtOworICByZWFkb25seSBhdHRy
aWJ1dGUgb2JqZWN0IHVzYWdlczsKK307CisKK2VudW0gS2V5Rm9ybWF0IHsgInJhdyIsICJzcGtp
IiwgInBrY3M4IiwgImp3ayIgfTsKKworW1NlY3VyZUNvbnRleHQsRXhwb3NlZD0oV2luZG93LFdv
cmtlcildCitpbnRlcmZhY2UgU3VidGxlQ3J5cHRvIHsKKyAgUHJvbWlzZTxhbnk+IGVuY3J5cHQo
QWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAgICAgIENy
eXB0b0tleSBrZXksCisgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclNvdXJjZSBkYXRhKTsK
KyAgUHJvbWlzZTxhbnk+IGRlY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sCisg
ICAgICAgICAgICAgICAgICAgICAgIENyeXB0b0tleSBrZXksCisgICAgICAgICAgICAgICAgICAg
ICAgIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKyAgUHJvbWlzZTxhbnk+IHNpZ24oQWxnb3JpdGhtSWRl
bnRpZmllciBhbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAgIENyeXB0b0tleSBrZXksCisg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKyAgUHJvbWlzZTxhbnk+IHZl
cmlmeShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwKKyAgICAgICAgICAgICAgICAgICAg
ICBDcnlwdG9LZXkga2V5LAorICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclNvdXJjZSBzaWdu
YXR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyU291cmNlIGRhdGEpOworICBQcm9t
aXNlPGFueT4gZGlnZXN0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLAorICAgICAgICAg
ICAgICAgICAgICAgIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKworICBQcm9taXNlPGFueT4gZ2VuZXJh
dGVLZXkoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2xlYW4gZXh0cmFjdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
cXVlbmNlPEtleVVzYWdlPiBrZXlVc2FnZXMgKTsKKyAgUHJvbWlzZTxhbnk+IGRlcml2ZUtleShB
bGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBD
cnlwdG9LZXkgYmFzZUtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1JZGVu
dGlmaWVyIGRlcml2ZWRLZXlUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4g
ZXh0cmFjdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2U8S2V5VXNhZ2U+
IGtleVVzYWdlcyApOworICBQcm9taXNlPEFycmF5QnVmZmVyPiBkZXJpdmVCaXRzKEFsZ29yaXRo
bUlkZW50aWZpZXIgYWxnb3JpdGhtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDcnlwdG9L
ZXkgYmFzZUtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsZW5n
dGgpOworCisgIFByb21pc2U8Q3J5cHRvS2V5PiBpbXBvcnRLZXkoS2V5Rm9ybWF0IGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAoQnVmZmVyU291cmNlIG9yIEpzb25XZWJLZXkpIGtl
eURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmllciBhbGdv
cml0aG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBleHRyYWN0YWJsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTxLZXlVc2FnZT4ga2V5VXNhZ2VzICk7Cisg
IFByb21pc2U8YW55PiBleHBvcnRLZXkoS2V5Rm9ybWF0IGZvcm1hdCwgQ3J5cHRvS2V5IGtleSk7
CisKKyAgUHJvbWlzZTxhbnk+IHdyYXBLZXkoS2V5Rm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgQ3J5cHRvS2V5IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgQ3J5cHRv
S2V5IHdyYXBwaW5nS2V5LAorICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1JZGVudGlm
aWVyIHdyYXBBbGdvcml0aG0pOworICBQcm9taXNlPENyeXB0b0tleT4gdW53cmFwS2V5KEtleUZv
cm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyU291cmNlIHdyYXBw
ZWRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgQ3J5cHRvS2V5IHVud3JhcHBpbmdLZXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmllciB1bndyYXBBbGdv
cml0aG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmllciB1bndy
YXBwZWRLZXlBbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBleHRy
YWN0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTxLZXlVc2FnZT4ga2V5
VXNhZ2VzICk7Cit9OworCitkaWN0aW9uYXJ5IFJzYU90aGVyUHJpbWVzSW5mbyB7CisgIC8vIFRo
ZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBkZWZpbmVkIGluIFNlY3Rpb24gNi4zLjIuNyBvZiBKU09O
IFdlYiBBbGdvcml0aG1zCisgIERPTVN0cmluZyByOworICBET01TdHJpbmcgZDsKKyAgRE9NU3Ry
aW5nIHQ7Cit9OworCitkaWN0aW9uYXJ5IEpzb25XZWJLZXkgeworICAvLyBUaGUgZm9sbG93aW5n
IGZpZWxkcyBhcmUgZGVmaW5lZCBpbiBTZWN0aW9uIDMuMSBvZiBKU09OIFdlYiBLZXkKKyAgRE9N
U3RyaW5nIGt0eTsKKyAgRE9NU3RyaW5nIHVzZTsKKyAgc2VxdWVuY2U8RE9NU3RyaW5nPiBrZXlf
b3BzOworICBET01TdHJpbmcgYWxnOworCisgIC8vIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBk
ZWZpbmVkIGluIEpTT04gV2ViIEtleSBQYXJhbWV0ZXJzIFJlZ2lzdHJhdGlvbgorICBib29sZWFu
IGV4dDsKKworICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgZGVmaW5lZCBpbiBTZWN0aW9u
IDYgb2YgSlNPTiBXZWIgQWxnb3JpdGhtcworICBET01TdHJpbmcgY3J2OworICBET01TdHJpbmcg
eDsKKyAgRE9NU3RyaW5nIHk7CisgIERPTVN0cmluZyBkOworICBET01TdHJpbmcgbjsKKyAgRE9N
U3RyaW5nIGU7CisgIERPTVN0cmluZyBwOworICBET01TdHJpbmcgcTsKKyAgRE9NU3RyaW5nIGRw
OworICBET01TdHJpbmcgZHE7CisgIERPTVN0cmluZyBxaTsKKyAgc2VxdWVuY2U8UnNhT3RoZXJQ
cmltZXNJbmZvPiBvdGg7CisgIERPTVN0cmluZyBrOworfTsKKwordHlwZWRlZiBVaW50OEFycmF5
IEJpZ0ludGVnZXI7CisKK2RpY3Rpb25hcnkgQ3J5cHRvS2V5UGFpciB7CisgIENyeXB0b0tleSBw
dWJsaWNLZXk7CisgIENyeXB0b0tleSBwcml2YXRlS2V5OworfTsKKworZGljdGlvbmFyeSBSc2FL
ZXlHZW5QYXJhbXMgOiBBbGdvcml0aG0geworICAvLyBUaGUgbGVuZ3RoLCBpbiBiaXRzLCBvZiB0
aGUgUlNBIG1vZHVsdXMKKyAgcmVxdWlyZWQgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBt
b2R1bHVzTGVuZ3RoOworICAvLyBUaGUgUlNBIHB1YmxpYyBleHBvbmVudAorICByZXF1aXJlZCBC
aWdJbnRlZ2VyIHB1YmxpY0V4cG9uZW50OworfTsKKworZGljdGlvbmFyeSBSc2FIYXNoZWRLZXlH
ZW5QYXJhbXMgOiBSc2FLZXlHZW5QYXJhbXMgeworICAvLyBUaGUgaGFzaCBhbGdvcml0aG0gdG8g
dXNlCisgIHJlcXVpcmVkIEhhc2hBbGdvcml0aG1JZGVudGlmaWVyIGhhc2g7Cit9OworCitkaWN0
aW9uYXJ5IFJzYUtleUFsZ29yaXRobSA6IEtleUFsZ29yaXRobSB7CisgIC8vIFRoZSBsZW5ndGgs
IGluIGJpdHMsIG9mIHRoZSBSU0EgbW9kdWx1cworICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIG1v
ZHVsdXNMZW5ndGg7CisgIC8vIFRoZSBSU0EgcHVibGljIGV4cG9uZW50CisgIHJlcXVpcmVkIEJp
Z0ludGVnZXIgcHVibGljRXhwb25lbnQ7Cit9OworCitkaWN0aW9uYXJ5IFJzYUhhc2hlZEtleUFs
Z29yaXRobSA6IFJzYUtleUFsZ29yaXRobSB7CisgIC8vIFRoZSBoYXNoIGFsZ29yaXRobSB0aGF0
IGlzIHVzZWQgd2l0aCB0aGlzIGtleQorICByZXF1aXJlZCBLZXlBbGdvcml0aG0gaGFzaDsKK307
CisKK2RpY3Rpb25hcnkgUnNhSGFzaGVkSW1wb3J0UGFyYW1zIDogQWxnb3JpdGhtIHsKKyAgLy8g
VGhlIGhhc2ggYWxnb3JpdGhtIHRvIHVzZQorICByZXF1aXJlZCBIYXNoQWxnb3JpdGhtSWRlbnRp
ZmllciBoYXNoOworfTsKKworZGljdGlvbmFyeSBSc2FQc3NQYXJhbXMgOiBBbGdvcml0aG0gewor
ICAvLyBUaGUgZGVzaXJlZCBsZW5ndGggb2YgdGhlIHJhbmRvbSBzYWx0CisgIHJlcXVpcmVkIFtF
bmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgc2FsdExlbmd0aDsKK307CisKK2RpY3Rpb25hcnkg
UnNhT2FlcFBhcmFtcyA6IEFsZ29yaXRobSB7CisgIC8vIFRoZSBvcHRpb25hbCBsYWJlbC9hcHBs
aWNhdGlvbiBkYXRhIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBtZXNzYWdlCisgIEJ1ZmZlclNvdXJj
ZSBsYWJlbDsKK307CisKK2RpY3Rpb25hcnkgRWNkc2FQYXJhbXMgOiBBbGdvcml0aG0geworICAv
LyBUaGUgaGFzaCBhbGdvcml0aG0gdG8gdXNlCisgIHJlcXVpcmVkIEhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2g7Cit9OworCit0eXBlZGVmIERPTVN0cmluZyBOYW1lZEN1cnZlOworCitkaWN0
aW9uYXJ5IEVjS2V5R2VuUGFyYW1zIDogQWxnb3JpdGhtIHsKKyAgLy8gQSBuYW1lZCBjdXJ2ZQor
ICByZXF1aXJlZCBOYW1lZEN1cnZlIG5hbWVkQ3VydmU7Cit9OworCitkaWN0aW9uYXJ5IEVjS2V5
QWxnb3JpdGhtIDogS2V5QWxnb3JpdGhtIHsKKyAgLy8gVGhlIG5hbWVkIGN1cnZlIHRoYXQgdGhl
IGtleSB1c2VzCisgIHJlcXVpcmVkIE5hbWVkQ3VydmUgbmFtZWRDdXJ2ZTsKK307CisKK2RpY3Rp
b25hcnkgRWNLZXlJbXBvcnRQYXJhbXMgOiBBbGdvcml0aG0geworICAvLyBBIG5hbWVkIGN1cnZl
CisgIHJlcXVpcmVkIE5hbWVkQ3VydmUgbmFtZWRDdXJ2ZTsKK307CisKK2RpY3Rpb25hcnkgRWNk
aEtleURlcml2ZVBhcmFtcyA6IEFsZ29yaXRobSB7CisgIC8vIFRoZSBwZWVyJ3MgRUMgcHVibGlj
IGtleS4KKyAgcmVxdWlyZWQgQ3J5cHRvS2V5IHB1YmxpYzsKK307CisKK2RpY3Rpb25hcnkgQWVz
Q3RyUGFyYW1zIDogQWxnb3JpdGhtIHsKKyAgLy8gVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGNv
dW50ZXIgYmxvY2suIGNvdW50ZXIgTVVTVCBiZSAxNiBieXRlcworICAvLyAodGhlIEFFUyBibG9j
ayBzaXplKS4gVGhlIGNvdW50ZXIgYml0cyBhcmUgdGhlIHJpZ2h0bW9zdCBsZW5ndGgKKyAgLy8g
Yml0cyBvZiB0aGUgY291bnRlciBibG9jay4gVGhlIHJlc3Qgb2YgdGhlIGNvdW50ZXIgYmxvY2sg
aXMgZm9yCisgIC8vIHRoZSBub25jZS4gVGhlIGNvdW50ZXIgYml0cyBhcmUgaW5jcmVtZW50ZWQg
dXNpbmcgdGhlIHN0YW5kYXJkCisgIC8vIGluY3JlbWVudGluZyBmdW5jdGlvbiBzcGVjaWZpZWQg
aW4gTklTVCBTUCA4MDAtMzhBIEFwcGVuZGl4IEIuMToKKyAgLy8gdGhlIGNvdW50ZXIgYml0cyBh
cmUgaW50ZXJwcmV0ZWQgYXMgYSBiaWctZW5kaWFuIGludGVnZXIgYW5kCisgIC8vIGluY3JlbWVu
dGVkIGJ5IG9uZS4KKyAgcmVxdWlyZWQgQnVmZmVyU291cmNlIGNvdW50ZXI7CisgIC8vIFRoZSBs
ZW5ndGgsIGluIGJpdHMsIG9mIHRoZSByaWdodG1vc3QgcGFydCBvZiB0aGUgY291bnRlciBibG9j
aworICAvLyB0aGF0IGlzIGluY3JlbWVudGVkLgorICByZXF1aXJlZCBbRW5mb3JjZVJhbmdlXSBv
Y3RldCBsZW5ndGg7Cit9OworCitkaWN0aW9uYXJ5IEFlc0tleUFsZ29yaXRobSA6IEtleUFsZ29y
aXRobSB7CisgIC8vIFRoZSBsZW5ndGgsIGluIGJpdHMsIG9mIHRoZSBrZXkuCisgIHJlcXVpcmVk
IHVuc2lnbmVkIHNob3J0IGxlbmd0aDsKK307CisKK2RpY3Rpb25hcnkgQWVzS2V5R2VuUGFyYW1z
IDogQWxnb3JpdGhtIHsKKyAgLy8gVGhlIGxlbmd0aCwgaW4gYml0cywgb2YgdGhlIGtleS4KKyAg
cmVxdWlyZWQgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgc2hvcnQgbGVuZ3RoOworfTsKKworZGlj
dGlvbmFyeSBBZXNEZXJpdmVkS2V5UGFyYW1zIDogQWxnb3JpdGhtIHsKKyAgLy8gVGhlIGxlbmd0
aCwgaW4gYml0cywgb2YgdGhlIGtleS4KKyAgcmVxdWlyZWQgW0VuZm9yY2VSYW5nZV0gdW5zaWdu
ZWQgc2hvcnQgbGVuZ3RoOworfTsKKworZGljdGlvbmFyeSBBZXNDYmNQYXJhbXMgOiBBbGdvcml0
aG0geworICAvLyBUaGUgaW5pdGlhbGl6YXRpb24gdmVjdG9yLiBNVVNUIGJlIDE2IGJ5dGVzLgor
ICByZXF1aXJlZCBCdWZmZXJTb3VyY2UgaXY7Cit9OworCitkaWN0aW9uYXJ5IEFlc0djbVBhcmFt
cyA6IEFsZ29yaXRobSB7CisgIC8vIFRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlLiBN
YXkgYmUgdXAgdG8gMl42NC0xIGJ5dGVzIGxvbmcuCisgIHJlcXVpcmVkIEJ1ZmZlclNvdXJjZSBp
djsKKyAgLy8gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YSB0byBpbmNsdWRlLgor
ICBCdWZmZXJTb3VyY2UgYWRkaXRpb25hbERhdGE7CisgIC8vIFRoZSBkZXNpcmVkIGxlbmd0aCBv
ZiB0aGUgYXV0aGVudGljYXRpb24gdGFnLiBNYXkgYmUgMCAtIDEyOC4KKyAgW0VuZm9yY2VSYW5n
ZV0gb2N0ZXQgdGFnTGVuZ3RoOworfTsKKworZGljdGlvbmFyeSBIbWFjSW1wb3J0UGFyYW1zIDog
QWxnb3JpdGhtIHsKKyAgLy8gVGhlIGlubmVyIGhhc2ggZnVuY3Rpb24gdG8gdXNlLgorICByZXF1
aXJlZCBIYXNoQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoOworICAvLyBUaGUgbGVuZ3RoIChpbiBi
aXRzKSBvZiB0aGUga2V5LgorICBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
K307CisKK2RpY3Rpb25hcnkgSG1hY0tleUFsZ29yaXRobSA6IEtleUFsZ29yaXRobSB7CisgIC8v
IFRoZSBpbm5lciBoYXNoIGZ1bmN0aW9uIHRvIHVzZS4KKyAgcmVxdWlyZWQgS2V5QWxnb3JpdGht
IGhhc2g7CisgIC8vIFRoZSBsZW5ndGggKGluIGJpdHMpIG9mIHRoZSBrZXkuCisgIHJlcXVpcmVk
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworfTsKKworZGljdGlvbmFyeSBIbWFjS2V5R2VuUGFyYW1z
IDogQWxnb3JpdGhtIHsKKyAgLy8gVGhlIGlubmVyIGhhc2ggZnVuY3Rpb24gdG8gdXNlLgorICBy
ZXF1aXJlZCBIYXNoQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoOworICAvLyBUaGUgbGVuZ3RoIChp
biBiaXRzKSBvZiB0aGUga2V5IHRvIGdlbmVyYXRlLiBJZiB1bnNwZWNpZmllZCwgdGhlCisgIC8v
IHJlY29tbWVuZGVkIGxlbmd0aCB3aWxsIGJlIHVzZWQsIHdoaWNoIGlzIHRoZSBzaXplIG9mIHRo
ZSBhc3NvY2lhdGVkIGhhc2ggZnVuY3Rpb24ncyBibG9jaworICAvLyBzaXplLgorICBbRW5mb3Jj
ZVJhbmdlXSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKK307CisKK2RpY3Rpb25hcnkgSGtkZlBhcmFt
cyA6IEFsZ29yaXRobSB7CisgIC8vIFRoZSBhbGdvcml0aG0gdG8gdXNlIHdpdGggSE1BQyAoZS5n
LjogU0hBLTI1NikKKyAgcmVxdWlyZWQgSGFzaEFsZ29yaXRobUlkZW50aWZpZXIgaGFzaDsKKyAg
Ly8gQSBiaXQgc3RyaW5nIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHNhbHQgdXNlZCBpbiB0aGUg
ZXh0cmFjdCBzdGVwLgorICByZXF1aXJlZCBCdWZmZXJTb3VyY2Ugc2FsdDsKKyAgLy8gQSBiaXQg
c3RyaW5nIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGNvbnRleHQgYW5kIGFwcGxpY2F0aW9uIHNw
ZWNpZmljIGNvbnRleHQgZm9yIHRoZSBkZXJpdmVkIGtleWluZyBtYXRlcmlhbC4KKyAgcmVxdWly
ZWQgQnVmZmVyU291cmNlIGluZm87Cit9OworCitkaWN0aW9uYXJ5IFBia2RmMlBhcmFtcyA6IEFs
Z29yaXRobSB7CisgIHJlcXVpcmVkIEJ1ZmZlclNvdXJjZSBzYWx0OworICByZXF1aXJlZCBbRW5m
b3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGl0ZXJhdGlvbnM7CisgIHJlcXVpcmVkIEhhc2hBbGdv
cml0aG1JZGVudGlmaWVyIGhhc2g7Cit9O2AKKworbGV0IHRva2VuaXNlciA9IG5ldyBUb2tlbmlz
ZXIoY29udGVudCk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2Ui
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImludGVyZmFjZSJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsibWl4aW4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
Ij0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIigiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIl0iXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImNvbnN0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmdpZmllciJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImF0dHJpYnV0ZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNv
cmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJl
c3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5n
IiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJyZXF1aXJlZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJkZWNpbWFs
IiwgImludGVnZXIiLCAic3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIpIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJdIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjYWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiaW50ZXJmYWNlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJtaXhpbiJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
OiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsieyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiKCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiXSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3Qi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNvbnN0cnVjdG9yIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJzdGF0aWMiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0cmluZ2lmaWVy
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsibWFwbGlrZSIsICJzZXRsaWtlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgzMCk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImluaGVyaXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInJlYWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJhdHRyaWJ1dGUiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3pl
bkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAi
bG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
aWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50
aWZpZXIiLCAiYXN5bmMiLCAicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNvbnN0Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJjb25zdHJ1Y3RvciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RhdGljIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmdpZmllciJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImFzeW5jIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpdGVyYWJsZSIsICJtYXBsaWtlIiwgInNldGxpa2UiXSk7
Cit0b2tlbmlzZXIudW5jb25zdW1lKDM1KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW5oZXJp
dCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImF0dHJpYnV0ZSJdKTsKK3Rva2VuaXNlci51bmNvbnN1bWUoMzUpOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJnZXR0ZXIiLCAic2V0dGVyIiwgImRlbGV0ZXIiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVj
b3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5y
ZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmlu
ZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiaW5jbHVkZXMiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIigiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNl
IiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91
YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJE
T01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlk
ZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNv
bnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJp
bmNsdWRlcyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwg
Im5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwg
InN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiKSJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
WyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImludGVyZmFjZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiZW51bSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidHlwZWRlZiJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVu
QXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJs
b25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiKCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5j
ZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRv
dWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAi
RE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsib3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2Vx
dWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIs
ICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJv
Y3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5n
IiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9yIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyIpIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjYWxsYmFjayJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJkaWN0aW9uYXJ5Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJlbnVtIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ0eXBlZGVmIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJp
Y3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAi
VVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjYWxs
YmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJkaWN0aW9u
YXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ7Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJl
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJz
aG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmlu
ZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImludGVyZmFjZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
aWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOiJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsieyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2Vx
dWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIs
ICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJv
Y3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5n
IiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImVudW0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIs
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZh
Y2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImVudW0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0cmluZyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5nIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJp
bmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5nIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVy
IiwgImRlY2ltYWwiLCAiaW50ZWdlciIsICJzdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIigiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IikiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIl0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm1peGlu
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ7Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJjb25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3Ry
dWN0b3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic3RyaW5naWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRv
bmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJtYXBsaWtlIiwgInNldGxpa2UiXSk7Cit0
b2tlbmlzZXIudW5jb25zdW1lKDExOCk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImluaGVyaXQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJhdHRyaWJ1dGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAi
cmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
dW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0
cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAicmVxdWlyZWQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNv
bnN0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdHJ1Y3RvciJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsic3RhdGljIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmdp
ZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIm1hcGxpa2UiLCAic2V0bGlrZSJdKTsKK3Rva2VuaXNlci51bmNvbnN1bWUo
MTIzKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW5oZXJpdCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImF0dHJpYnV0ZSJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
RnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9y
dCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwg
InJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJjb25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3RydWN0
b3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsic3RyaW5naWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJtYXBsaWtlIiwgInNldGxpa2UiXSk7Cit0b2tl
bmlzZXIudW5jb25zdW1lKDEyOCk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImluaGVyaXQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJhdHRyaWJ1dGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVj
b3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5y
ZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmlu
ZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAicmVxdWlyZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNvbnN0
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdHJ1Y3RvciJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic3RhdGljIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmdpZmll
ciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIm1hcGxpa2UiLCAic2V0bGlrZSJdKTsKK3Rva2VuaXNlci51bmNvbnN1bWUoMTMz
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW5oZXJpdCJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImF0dHJpYnV0ZSJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJv
emVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIs
ICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRl
bnRpZmllciIsICJhc3luYyIsICJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
OyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImludGVyZmFjZSJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZW51bSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
eyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmciXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0cmluZyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3Ry
aW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpZGVudGlmaWVyIiwgImRlY2ltYWwiLCAiaW50ZWdlciIsICJzdHJpbmciXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIigiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50
aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIikiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIl0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxi
YWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIm1peGluIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVy
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiY29uc3RydWN0b3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0YXRp
YyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5naWZpZXIiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJhc3luYyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaXRlcmFibGUiLCAibWFwbGlrZSIsICJzZXRsaWtl
Il0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgxNjYpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
bmhlcml0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiYXR0cmlidXRlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgxNjYpOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJnZXR0ZXIiLCAic2V0dGVyIiwgImRlbGV0ZXIiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2Ui
LCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI8Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJp
Y3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAi
VVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImluY2x1ZGVzIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIs
ICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJs
ZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9N
U3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25z
dHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5j
bHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJu
YW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJz
dGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwg
InNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxv
YXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUi
LCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0
cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNhbGxiYWNrIiwgImNv
bnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImdl
dHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJpdGVyYWJsZSIsICJt
YXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwgInNldGxpa2UiLCAi
c2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwgInVucmVzdHJpY3Rl
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsib3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5Iiwg
IlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xl
YW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmll
ciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2Fs
bGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5Iiwg
ImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0
ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAi
c2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAi
dW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyIpIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29u
c3RydWN0b3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsic3RyaW5naWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJl
YWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJhc3luYyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiaXRlcmFibGUiLCAibWFwbGlrZSIsICJzZXRsaWtlIl0pOwordG9rZW5pc2Vy
LnVuY29uc3VtZSgxODIpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbmhlcml0Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
YXR0cmlidXRlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgxODIpOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJnZXR0ZXIiLCAic2V0dGVyIiwgImRlbGV0ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96
ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0Iiwg
ImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIiwgImluY2x1ZGVzIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRp
b25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0
cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5j
IiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxl
dGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJp
dCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFy
dGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5n
aWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJl
Y29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVu
cmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJp
bmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZp
ZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNvbnN0cnVj
dG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJpbmNsdWRl
cyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwgIm5hbWVz
cGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwgInN0YXRp
YyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsib3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2Vx
dWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIs
ICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJv
Y3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5n
IiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3Qi
LCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVy
IiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxp
a2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0
ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIp
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJjb25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3RydWN0b3IiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
c3RyaW5naWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJhc3luYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaXRl
cmFibGUiLCAibWFwbGlrZSIsICJzZXRsaWtlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgxOTgp
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbmhlcml0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJyZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYXR0cmlidXRlIl0pOwor
dG9rZW5pc2VyLnVuY29uc3VtZSgxOTgpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJnZXR0ZXIi
LCAic2V0dGVyIiwgImRlbGV0ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFy
cmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9t
aXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5z
aWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwg
ImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAi
Qnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImlu
Y2x1ZGVzIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJy
YXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25n
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
Ym9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIs
ICJjYWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25h
cnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2Ui
LCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJl
ZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRl
ZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFs
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNo
b3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5n
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyIuLi4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAi
YXR0cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIi
LCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0Iiwg
ImludGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFs
IiwgInJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmll
ciIsICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
LCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
Llsib3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3Jk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0
cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIs
ICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIs
ICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3Ii
LCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwg
ImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNl
IiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwg
InN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIpIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3RydWN0b3IiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5naWZpZXIiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJhc3luYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaXRlcmFibGUiLCAibWFwbGlr
ZSIsICJzZXRsaWtlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgyMTQpOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpbmhlcml0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYXR0cmlidXRlIl0pOwordG9rZW5pc2VyLnVuY29u
c3VtZSgyMTQpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJnZXR0ZXIiLCAic2V0dGVyIiwgImRl
bGV0ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2Ui
LCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI8Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNl
IiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91
YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJE
T01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImluY2x1ZGVzIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIs
ICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZs
b2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRl
IiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVT
dHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJj
b25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJn
ZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAi
bWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwg
InNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0
ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIs
ICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29s
ZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZp
ZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNh
bGxiYWNrIiwgImNvbnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIs
ICJlbnVtIiwgImdldHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJp
dGVyYWJsZSIsICJtYXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwg
InNldGxpa2UiLCAic2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwg
InVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsib3B0aW9uYWwiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZy
b3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQi
LCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4u
LiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRy
aWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJk
aWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50
ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAi
cmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwg
InR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJv
cHRpb25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0
ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVT
VlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFz
eW5jIiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJk
ZWxldGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5o
ZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAi
cGFydGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3Ry
aW5naWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIikiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNvbnN0Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdHJ1Y3RvciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
Llsic3RhdGljIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdHJpbmdpZmllciJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImFzeW5jIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpdGVyYWJsZSIsICJtYXBsaWtlIiwg
InNldGxpa2UiXSk7Cit0b2tlbmlzZXIudW5jb25zdW1lKDIzMyk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImluaGVyaXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJhdHRyaWJ1dGUiXSk7Cit0b2tlbmlzZXIudW5jb25zdW1l
KDIzMyk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImdldHRlciIsICJzZXR0ZXIiLCAiZGVsZXRl
ciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJz
ZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjwiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAi
cmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
dW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0
cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIj4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiaW5jbHVkZXMiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIigiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJb
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNl
cXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQi
LCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAi
b2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmlu
ZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0
IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRl
ciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBs
aWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0
dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
WyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsib3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlBy
b21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1
bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4i
LCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIs
ICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJh
Y2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVu
dW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJh
YmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0
bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5y
ZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyIpIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJjb25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3Ry
dWN0b3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic3RyaW5naWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRv
bmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJhc3luYyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiaXRlcmFibGUiLCAibWFwbGlrZSIsICJzZXRsaWtlIl0pOwordG9rZW5pc2VyLnVu
Y29uc3VtZSgyNDYpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbmhlcml0Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYXR0
cmlidXRlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgyNDYpOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJnZXR0ZXIiLCAic2V0dGVyIiwgImRlbGV0ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5B
cnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxv
bmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlk
ZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIiwgImluY2x1ZGVzIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25h
bCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJz
aG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmlu
ZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwg
ImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVy
IiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIs
ICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlh
bCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZp
ZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29y
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVz
dHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUi
LCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9u
YXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNl
IiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWly
ZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVk
ZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25h
bCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIjwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2Ui
LCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3Vi
bGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRP
TVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIj4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
aWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAi
Y29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwg
ImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2Ui
LCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIi
LCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIpIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJjb25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3RydWN0b3IiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3Ry
aW5naWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJhc3luYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaXRlcmFi
bGUiLCAibWFwbGlrZSIsICJzZXRsaWtlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgyNjUpOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbmhlcml0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJyZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYXR0cmlidXRlIl0pOwordG9r
ZW5pc2VyLnVuY29uc3VtZSgyNjUpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJnZXR0ZXIiLCAi
c2V0dGVyIiwgImRlbGV0ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5
IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNl
IiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWdu
ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
ZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5
dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0
ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImluY2x1
ZGVzIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXki
LCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9v
bGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlm
aWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJj
YWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnki
LCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAi
aXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIs
ICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIs
ICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJG
cm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0
IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIu
Li4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0
cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAi
ZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImlu
dGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwg
InJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIs
ICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
b3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmlj
dGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJV
U1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJh
c3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAi
ZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImlu
aGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwg
InBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0
cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIs
ICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJs
ZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIu
Li4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0
cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAi
ZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImlu
dGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwg
InJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIs
ICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
b3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJb
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNl
cXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQi
LCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAi
b2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmlu
ZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNhbGxiYWNrIiwgImNv
bnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImdl
dHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJpdGVyYWJsZSIsICJt
YXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwgInNldGxpa2UiLCAi
c2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwgInVucmVzdHJpY3Rl
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiKSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiY29uc3QiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNvbnN0cnVjdG9yIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdGF0aWMiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInN0cmluZ2lmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYXN5bmMiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
Iml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAic2V0bGlrZSJdKTsKK3Rva2VuaXNlci51bmNvbnN1bWUo
MjkwKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW5oZXJpdCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImF0dHJpYnV0ZSJd
KTsKK3Rva2VuaXNlci51bmNvbnN1bWUoMjkwKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZ2V0
dGVyIiwgInNldHRlciIsICJkZWxldGVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96
ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiPCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAi
UHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVh
biIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVy
IiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPiJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIs
ICJpbmNsdWRlcyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiKCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsib3B0aW9uYWwiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3pl
bkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAi
bG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
aWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1
dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0
aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJm
YWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVx
dWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5
cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRp
b25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0
cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5j
IiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxl
dGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJp
dCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFy
dGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5n
aWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJl
Y29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImxv
bmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIs
ICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRl
ciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQi
LCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRp
YWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lm
aWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIpIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiY29uc3RydWN0b3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0
YXRpYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5naWZpZXIiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJhc3lu
YyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaXRlcmFibGUiLCAibWFwbGlrZSIsICJzZXRs
aWtlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgzMDcpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJpbmhlcml0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiYXR0cmlidXRlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgzMDcp
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJnZXR0ZXIiLCAic2V0dGVyIiwgImRlbGV0ZXIiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVu
Y2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI8Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29y
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVz
dHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmci
LCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImluY2x1ZGVzIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5j
ZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRv
dWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAi
RE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJj
b25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAi
aW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIs
ICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIs
ICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNl
IiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWdu
ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
ZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5
dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0
ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3Rl
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNW
U3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJvciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3Ry
aWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwg
IlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsib3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIikiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAi
Y2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5
IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwg
Iml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQi
LCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYi
LCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
RnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9y
dCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
Li4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0
dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwg
ImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJp
bnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIs
ICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIi
LCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
Im9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJp
Y3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAi
Y2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5
IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwg
Iml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQi
LCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYi
LCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
RnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIjwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAi
cmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
dW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0
cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIj4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRl
bnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29u
c3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImlu
Y2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAi
bmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAi
c3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIpIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJj
b25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3RydWN0b3IiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5n
aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlYWRvbmx5Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJhc3luYyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaXRlcmFibGUi
LCAibWFwbGlrZSIsICJzZXRsaWtlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgzMzYpOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpbmhlcml0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJy
ZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYXR0cmlidXRlIl0pOwordG9rZW5p
c2VyLnVuY29uc3VtZSgzMzYpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJnZXR0ZXIiLCAic2V0
dGVyIiwgImRlbGV0ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5Iiwg
IlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwg
InNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxv
YXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUi
LCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0
cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImluY2x1ZGVz
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAi
UHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVh
biIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVy
IiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJjYWxs
YmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnkiLCAi
ZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRl
cmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIsICJz
ZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIsICJ1
bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96
ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0Iiwg
ImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmli
dXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGlj
dGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImludGVy
ZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJl
cXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0
eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiKSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
WyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY29uc3QiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImNvbnN0cnVjdG9yIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzdGF0aWMiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0cmluZ2lmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJyZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYXN5bmMiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAic2V0bGlrZSJdKTsK
K3Rva2VuaXNlci51bmNvbnN1bWUoMzQ5KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW5oZXJp
dCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVhZG9ubHkiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImF0dHJpYnV0ZSJdKTsKK3Rva2VuaXNlci51bmNvbnN1bWUoMzQ5KTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiZ2V0dGVyIiwgInNldHRlciIsICJkZWxldGVyIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJl
Y29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPCJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0
cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiPiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiaWRlbnRpZmllciIsICJpbmNsdWRlcyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiKCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsib3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVj
b3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5y
ZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmlu
ZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmll
ciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0
b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVz
IiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNw
YWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGlj
IiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1
ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0Iiwg
ImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9j
dGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmci
LCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIs
ICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIi
LCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlr
ZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRl
ciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9t
aXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5z
aWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwg
ImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAi
Qnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNhbGxiYWNr
IiwgImNvbnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIsICJlbnVt
IiwgImdldHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJpdGVyYWJs
ZSIsICJtYXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwgInNldGxp
a2UiLCAic2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwgInVucmVz
dHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsib3B0aW9uYWwiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFy
cmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9u
ZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRl
bnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUi
LCAiY2FsbGJhY2siLCAiY29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9u
YXJ5IiwgImVudW0iLCAiZ2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNl
IiwgIml0ZXJhYmxlIiwgIm1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWly
ZWQiLCAic2V0bGlrZSIsICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVk
ZWYiLCAidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyIpIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjb25zdCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiY29uc3RydWN0b3IiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInN0YXRpYyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsic3RyaW5naWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInJlYWRvbmx5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJhc3luYyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaXRlcmFibGUiLCAibWFwbGlrZSIsICJzZXRsaWtlIl0pOwordG9r
ZW5pc2VyLnVuY29uc3VtZSgzNjgpOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbmhlcml0Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZWFkb25seSJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiYXR0cmlidXRlIl0pOwordG9rZW5pc2VyLnVuY29uc3VtZSgzNjgpOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJnZXR0ZXIiLCAic2V0dGVyIiwgImRlbGV0ZXIiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3Jk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNo
b3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5n
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI+Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJpZGVudGlmaWVyIiwgImluY2x1ZGVzIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIo
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJvcHRpb25hbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3Ry
aWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwg
IlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwg
ImFzeW5jIiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIs
ICJkZWxldGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAi
aW5oZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2Ui
LCAicGFydGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAi
c3RyaW5naWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIm9wdGlvbmFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNl
IiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91
YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJE
T01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIuLi4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlk
ZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNv
bnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJp
bmNsdWRlcyIsICJpbmhlcml0IiwgImludGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwg
Im5hbWVzcGFjZSIsICJwYXJ0aWFsIiwgInJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwg
InN0YXRpYyIsICJzdHJpbmdpZmllciIsICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsib3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2Ui
LCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25l
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJm
bG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0
ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRl
U3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIi4uLiJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiaWRlbnRpZmllciIsICJhc3luYyIsICJhdHRyaWJ1dGUiLCAiY2FsbGJhY2siLCAi
Y29uc3QiLCAiY29uc3RydWN0b3IiLCAiZGVsZXRlciIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAi
Z2V0dGVyIiwgImluY2x1ZGVzIiwgImluaGVyaXQiLCAiaW50ZXJmYWNlIiwgIml0ZXJhYmxlIiwg
Im1hcGxpa2UiLCAibmFtZXNwYWNlIiwgInBhcnRpYWwiLCAicmVxdWlyZWQiLCAic2V0bGlrZSIs
ICJzZXR0ZXIiLCAic3RhdGljIiwgInN0cmluZ2lmaWVyIiwgInR5cGVkZWYiLCAidW5yZXN0cmlj
dGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJvcHRpb25hbCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXki
LCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9v
bGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlm
aWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJj
YWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnki
LCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAi
aXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIs
ICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIs
ICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJG
cm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0
IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIu
Li4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiYXN5bmMiLCAiYXR0
cmlidXRlIiwgImNhbGxiYWNrIiwgImNvbnN0IiwgImNvbnN0cnVjdG9yIiwgImRlbGV0ZXIiLCAi
ZGljdGlvbmFyeSIsICJlbnVtIiwgImdldHRlciIsICJpbmNsdWRlcyIsICJpbmhlcml0IiwgImlu
dGVyZmFjZSIsICJpdGVyYWJsZSIsICJtYXBsaWtlIiwgIm5hbWVzcGFjZSIsICJwYXJ0aWFsIiwg
InJlcXVpcmVkIiwgInNldGxpa2UiLCAic2V0dGVyIiwgInN0YXRpYyIsICJzdHJpbmdpZmllciIs
ICJ0eXBlZGVmIiwgInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
b3B0aW9uYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmlj
dGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJj
YWxsYmFjayIsICJjb25zdCIsICJjb25zdHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnki
LCAiZW51bSIsICJnZXR0ZXIiLCAiaW5jbHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAi
aXRlcmFibGUiLCAibWFwbGlrZSIsICJuYW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIs
ICJzZXRsaWtlIiwgInNldHRlciIsICJzdGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIs
ICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIm9wdGlvbmFsIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJG
cm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiPCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJy
ZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1
bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3Ry
aW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiPiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiLi4uIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIiwgImFzeW5jIiwgImF0dHJpYnV0ZSIsICJjYWxsYmFjayIsICJjb25zdCIsICJjb25z
dHJ1Y3RvciIsICJkZWxldGVyIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJnZXR0ZXIiLCAiaW5j
bHVkZXMiLCAiaW5oZXJpdCIsICJpbnRlcmZhY2UiLCAiaXRlcmFibGUiLCAibWFwbGlrZSIsICJu
YW1lc3BhY2UiLCAicGFydGlhbCIsICJyZXF1aXJlZCIsICJzZXRsaWtlIiwgInNldHRlciIsICJz
dGF0aWMiLCAic3RyaW5naWZpZXIiLCAidHlwZWRlZiIsICJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIikiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNl
IiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWdu
ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
ZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5
dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0
ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1
aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0
cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2Ui
LCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25l
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJm
bG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0
ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRl
U3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxi
YWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25h
cnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNo
b3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5n
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
WyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJz
ZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0
IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwg
Im9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJp
bmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
PyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyI8Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwg
InJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91Ymxl
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01T
dHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI+Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVu
QXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJs
b25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRp
ZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2Ui
LCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3Vi
bGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
aWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2Vx
dWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIs
ICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJv
Y3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5n
IiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJG
cm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0
IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1
ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0Iiwg
ImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9j
dGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmci
LCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZy
b3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQi
LCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlk
ZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVl
bmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAi
ZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0
ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIs
ICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJv
emVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIs
ICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRl
bnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVu
Y2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJk
b3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3Rl
dCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwg
IkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96
ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0Iiwg
ImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5j
ZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRv
dWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAi
RE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3pl
bkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAi
bG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
aWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50
aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNl
IiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91
YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJE
T01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVu
QXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIjwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3Jk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0
cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIs
ICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIj4iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
In0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIs
ICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29s
ZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZp
ZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJjYWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJkaWN0aW9uYXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJlbnVtIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJ0eXBlZGVmIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVl
bmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAi
ZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0
ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIs
ICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJjYWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNl
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJkaWN0aW9uYXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVy
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJy
ZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1
bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3Ry
aW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
PSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5
IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJv
b2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRp
ZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlk
ZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJdIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQ
cm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
dW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJG
cm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0
IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJjYWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50
ZXJmYWNlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJkaWN0aW9uYXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ7Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1
aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0
cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImludGVyZmFjZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOiJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsieyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
WyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3Jk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsibG9uZyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
aWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2Vx
dWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIs
ICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJv
Y3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5n
IiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNl
IiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWdu
ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
ZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5
dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0
ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjYWxs
YmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJkaWN0aW9u
YXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAi
UHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVh
biIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVy
IiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
OyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImludGVyZmFjZSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
ZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiOiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRp
ZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsieyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZp
ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIigiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIl0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21p
c2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNp
Z25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY2FsbGJhY2siXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImludGVyZmFjZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsicGFydGlhbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZGljdGlvbmFyeSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiOiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsieyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAi
c2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9h
dCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIs
ICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3Ry
aW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
Ij8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNr
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnki
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9t
aXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5z
aWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwg
ImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAi
Qnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJj
YWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJkaWN0
aW9uYXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJlbnVtIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ0eXBlZGVmIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwg
InJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91Ymxl
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01T
dHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJjYWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJkaWN0aW9uYXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVu
dGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ7Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVu
QXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJs
b25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRp
ZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImludGVyZmFj
ZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmll
ciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsieyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hv
cnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmci
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
bnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlk
ZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJl
cXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3Rl
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNW
U3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjYWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiaW50ZXJmYWNlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJkaWN0aW9uYXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ7
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNv
cmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJl
c3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5n
IiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
fSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImludGVyZmFjZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlh
bCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOiJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsieyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2Ui
LCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3Vi
bGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRP
TVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlm
aWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJdIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9t
aXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5z
aWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwg
ImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
In0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRp
YWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNl
IiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyIsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJdIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImxvbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZp
ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2Ui
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
ZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJdIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIs
ICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
Ij8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNr
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnki
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9t
aXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5z
aWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwg
ImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAi
Qnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJj
YWxsYmFjayJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJwYXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJkaWN0
aW9uYXJ5Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyI6Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVy
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXki
LCAiUHJvbWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInVuc2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9v
bGVhbiIsICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlm
aWVyIiwgIkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
OyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsicmVxdWlyZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVj
b3JkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsic2hvcnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5y
ZXN0cmljdGVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmlu
ZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0i
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
In0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIigiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIl0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwg
InNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxv
YXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUi
LCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpbnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
InsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bInJlcXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJl
Y29yZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVu
cmVzdHJpY3RlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJp
bmciLCAiVVNWU3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyIoIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyIsIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJdIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIs
ICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyI9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJ9Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJjYWxsYmFjayJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiaW50ZXJmYWNlIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJw
YXJ0aWFsIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJkaWN0aW9uYXJ5Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI6
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1
ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0Iiwg
ImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwgIm9j
dGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJpbmci
LCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZy
b3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQi
LCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsibG9uZyJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
OyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4u
LlsiY2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImludGVyZmFjZSJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
ZGljdGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiOiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRp
ZmllciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsieyJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIkZyb3plbkFy
cmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hvcnQiLCAibG9u
ZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRl
bnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmciXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZp
ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIigiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIiwiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIl0iXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJl
cXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImxvbmciXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50
aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpbnRlcmZh
Y2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlkZW50aWZp
ZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJlcXVpcmVk
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInNo
b3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3RlZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIuY29uc3Vt
ZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5n
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4u
WyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9rZW5pc2Vy
LmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
WyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJz
ZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImZsb2F0
IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIsICJieXRlIiwg
Im9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwgIkJ5dGVTdHJp
bmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
PyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsKK3Rva2VuaXNl
ci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsicmVxdWlyZWQi
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
IkZyb3plbkFycmF5IiwgIlByb21pc2UiLCAic2VxdWVuY2UiLCAicmVjb3JkIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJ1bnNpZ25lZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsic2hv
cnQiLCAibG9uZyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5yZXN0cmljdGVkIl0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJmbG9hdCIsICJkb3VibGUiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImJvb2xlYW4iLCAiYnl0ZSIsICJvY3RldCJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiaWRlbnRpZmllciIsICJCeXRlU3RyaW5nIiwgIkRPTVN0cmluZyIsICJVU1ZTdHJpbmci
XSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj8iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5b
ImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIj0iXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bIjsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tl
bmlzZXIuY29uc3VtZSguLi5bImNhbGxiYWNrIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJp
bnRlcmZhY2UiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInBhcnRpYWwiXSk7Cit0b2tlbmlz
ZXIuY29uc3VtZSguLi5bImRpY3Rpb25hcnkiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImlk
ZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIjoiXSk7Cit0b2tlbmlzZXIuY29u
c3VtZSguLi5bImlkZW50aWZpZXIiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInsiXSk7Cit0
b2tlbmlzZXIuY29uc3VtZSguLi5bIn0iXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7
Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bIlsiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInJl
cXVpcmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJGcm96ZW5BcnJheSIsICJQcm9taXNlIiwgInNlcXVlbmNlIiwgInJlY29yZCJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsidW5zaWduZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bInNob3J0IiwgImxvbmciXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVucmVzdHJpY3Rl
ZCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZmxvYXQiLCAiZG91YmxlIl0pOwordG9rZW5p
c2VyLmNvbnN1bWUoLi4uWyJib29sZWFuIiwgImJ5dGUiLCAib2N0ZXQiXSk7Cit0b2tlbmlzZXIu
Y29uc3VtZSguLi5bImlkZW50aWZpZXIiLCAiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNW
U3RyaW5nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNvbnN1
bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25zdW1l
KC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiKCJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiLCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiXSJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJvbWlzZSIsICJzZXF1ZW5j
ZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVuc2lnbmVkIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUo
Li4uWyJsb25nIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI/Il0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJpZGVudGlmaWVyIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI9Il0pOwor
dG9rZW5pc2VyLmNvbnN1bWUoLi4uWyI7Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJ9Il0p
OwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJbIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJb
Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJyZXF1aXJlZCJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiRnJvemVuQXJyYXkiLCAiUHJv
bWlzZSIsICJzZXF1ZW5jZSIsICJyZWNvcmQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bInVu
c2lnbmVkIl0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJzaG9ydCIsICJsb25nIl0pOwordG9r
ZW5pc2VyLmNvbnN1bWUoLi4uWyJ1bnJlc3RyaWN0ZWQiXSk7Cit0b2tlbmlzZXIuY29uc3VtZSgu
Li5bImZsb2F0IiwgImRvdWJsZSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiYm9vbGVhbiIs
ICJieXRlIiwgIm9jdGV0Il0pOwordG9rZW5pc2VyLmNvbnN1bWUoLi4uWyJpZGVudGlmaWVyIiwg
IkJ5dGVTdHJpbmciLCAiRE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdKTsKK3Rva2VuaXNlci5jb25z
dW1lKC4uLlsiPyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmllciJdKTsKK3Rv
a2VuaXNlci5jb25zdW1lKC4uLlsiPSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJdKTsK
K3Rva2VuaXNlci5jb25zdW1lKC4uLlsifSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiOyJd
KTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiWyJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsi
Y2FsbGJhY2siXSk7Cit0b2tlbmlzZXIuY29uc3VtZSguLi5bImludGVyZmFjZSJdKTsKK3Rva2Vu
aXNlci5jb25zdW1lKC4uLlsicGFydGlhbCJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZGlj
dGlvbmFyeSJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiZW51bSJdKTsKK3Rva2VuaXNlci5j
b25zdW1lKC4uLlsidHlwZWRlZiJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsiaWRlbnRpZmll
ciJdKTsKK3Rva2VuaXNlci5jb25zdW1lKC4uLlsibmFtZXNwYWNlIl0pOwordG9rZW5pc2VyLmNv
bnN1bWUoLi4uWyJlb2YiXSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>